Ancient Ajax chat app (archived for posterity; seriously, don't use this)
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Lace Readme

Copyright (C) 2005-2006 Brett Stimmerman <>
Redistribution of this file is permitted under the terms of the GPL

Table of Contents
0. Disclaimer
1. General Information
2. How does it work?
3. Requirements
4. Installing Lace
5. Upgrading Lace
6. Support
7. Todo
8. Credits

0. Disclaimer
Lace is experimental.  It is nothing more than several components
haphazardly smashed together and forced to play nice.

Feel free to modify it in any way; but if you do, please send your
changes to for consideration for next
official release.

1. General Information
Lace is a free, lightweight Ajaxian communications engine written
in PHP, Javascript, XHTML and CSS. Lace takes advantage of
XMLHttpRequest if it is present, and degrades gracefully if it is

The latest version of Lace can be found at:

Lace is released under the terms of the GPL.  See the LICENSE file
for more information.

2. How does it work?
Lace has two major components: the client engine and the server

Lace's client engine is written in Javascript and is
completely optional. If enabled, DOM compliant browsers that
support XMLHttpRequest get a great user experience: speedy updates
on the fly with no browser refreshes necessary. Sweet!

Lace's server engine is written in PHP and provides flat-file data
access and a hook for the XMLHttpRequest object, if present. If
XMLHttpRequest is not present for whatever reason, the server
engine handles submissions like a 'traditional' web application so
that Lace remains usable - from nearly any browser.

The client engine is made up of Javascript files found in the
/scripts/ directory.

The server engine is made of PHP libraries found in /lib/; the main
library is lib_lace.php.  The XMLHttpRequest hook is lace.php in
the root folder.

3. Requirements

So far, Lace seems to work just fine with:

  IE5.5+ (including IE7)
  Opera 8

IE/Mac and IE5.0/Win work with several limitations: IE/Mac doesn't
support XMLHttpRequest and IE5.0/Win doesn't support the
encodeURIComponent Javascript method, which means that the client
engine won't work properly in either browser. In addition, they
each mangle the CSS a little differently.

At a minimum, Lace should function to some degree in most browsers
with or without Javascript or CSS support.


Lace was built on top of Apache 1.3.xx and PHP 4.3.10, and runs
fine on Apache 2.x and PHP 5.  Please email me any configurations
it does (or doesn't) seem to work with.

As of 0.1.3, Lace can optionally utilize mod_rewrite to provide
pretty URLs.

Lace requires PHP be compiled with multibyte character support
(--enable-mbstring) in order to support character sets like
Japanse and Chinese.  You can verify your PHP supports this by
looking for the 'mbstring' section of the output of phpinfo().

If you do not have the mbstring extension, Lace might mangle
multibyte characters.

4. Installing Lace
1. Copy the contents of the /www directory to your web server.

2. chmod 644 (or whatever works best for you) the following
   files and directories:


   If you aren't familiar with chmod, you need to set the proper
   permissions on the above files that allow PHP to read and write
   to them.  This can usually be done from within your FTP program.

   Lace can optionally use .htaccess and mod_rewrite to simulate
   dirified URLs.  If Lace will be hosted by a hosting company,
   there should be no problem.  If you are setting Lace up on your
   own personal server, be sure to allow .htaccess files by making
   the proper changes to httpd.conf, if you haven't done so

3. Open config.php and make sure to set the following at a


   Other settings you may want to change are:


   Have a look at the rest of the settings, to see what else you
   may want to change.  All settings have a brief description of
   what they are/do.

   If you ever mess up a setting, or need to remember what it was
   originally set to, you can use the config.dist.php file for

4. If you're using LACE_LOGS_DIRIFIED, edit .htaccess and change
   RewriteBase to the setting you used for LACE_URL_REL.  In other
   words, RewriteBase should be the relative URL to your Lace
   installation (e.g. /lace/).

5. Lace ships with a pre-configured version of Cal Henderson's
   lib_filter found in /lib/, and it's pretty strict. It only allows
   a, b, code, i, em and strong tags.  You may want to modify the
   default settings to allow for more tags.

6. The layout is mostly customizable, and much of it can be changed
   by modifying /styles/style.css.

5. Upgrading Lace
1. Copy the new files from the Lace distribution to your web
   server, taking care not to overwrite any files you may have
   modified (e.g. config.php), and more importantly, the /data/

   During these early stages of development, some files may change
   names or directories, or features may change between versions.
   As Lace matures, such changes will become much less frequent.

2. Look for configuration changes in the new config.dist.php.  If
   there are any changes, use your favorite text editor to copy the
   changes to your old config.php by hand.

6. Support
This release has only been tested on my development and 'production' servers.
I cannot guarantee that it will work with your configuration.

Send any questions, comments or fixes to

7. Todo
This release of Lace is experimental.  There are many aspects of
the application that need tending to if it is ever going to fly.

Some of Lace's immediate needs might be:

  - Refactor and streamline entire codebase.  It's currently a
    massive hodge-podge with a blatant disregard for any sensible
  - Streamline XHTML and CSS
  - Improve component abstraction
  - Drop certain hard-coded features in favor of a plug-in

Completed items:

    - Consider mod_rewrite in place of ForceType for pretty URLs

8. Credits
Lace is originally based on a small portion of Ryan Grove's
PHPSlice, and includes tiny snips of Ryan's other project,
PHPSlice Copyright (C) 2001 - 2002 Ryan Grove
Poseidon Copyright (C) 2003 - 2005 Ryan Grove

Lace uses Cal Henderson's lib_filter library.
Copyright (C) 2001-2004 Cal Henderson