Summary: Creating a Caucus Event CD

Charles Roth, Caucus Systems Inc
Version 1.00, 3 May 2000

This document summarizes the steps involved in taking a "finished" Caucus event and turning it into a master CD-ROM that can be read by Windows and Macintosh platforms (and maybe even Unix, if Joliet support is enabled).

  1. Copy the event.  Copy the entire event into a private Caucus universe.  Do all the work from the private space, since it may involve changing some of the original data.  (Make sure the event is really finished first!  Even if it is closed, the event producers may still be adding some stuff as a wrap-up.)

    1. Tar up the entire event space.  (Make sure you use the 'h' option to follow symbolic links.)

    2. Un-tar it into the private space.  (Probably a good idea to reserve/install a private Caucus universe for just this purpose, so you can re-use it for the next event.)

    3. Change 'sweb' and 'reg' definitions to match the Caucus install for the private universe.  See SWEB/swebd.conf (version 4.20b or later) or CML/CS41/Local/switch.i (older versions).

    4. Note that you'll be using the CS41 interface; the event producer may have set up a custom interface 'XYZ'.  If they did, you'll need to create an "Interface Storage CS41" conference that is a duplicate of their custom "Interface Storage XYZ' conference.  (Archive their conference, then create Interface Storage CS41 by restoring from their archive.)

    5. Adjust conference permissions.  You will need to add your caucus id in this space, and the unix userid of the private space, as regular members (preferably as organizers) to all of the conferences.  You can do this through Caucus (edit MISC/managers and add your userid to the top with "-1" permission, which then lets you do anything to any conference), or by manually editing the userlist files (edit C*/userlist and add your & the unix ids under organizer category).

    6. Start Caucus and try it.  You should be able to see all of the conferences and examine their contents.

    Warning:  watch out for "special" data or areas that the event producer may have set up.  For example, in Collaborate '99, some presentations were set up in a separate directory, that needed to be copied over with the regular Caucus "universe".


  2. Set up the CSNAP run.  CSNAP is a set of CML scripts, run in "stand-alone" mode (i.e. not through the web but through a terminal window), that reads the Caucus data and writes a set of static HTML pages and other documents.  You'll most likely be running CSNAP multiple times before you're finished, "tweaking" the original data between each run to improve something.  (Resist the temptation to fix things by tweaking them in the static HTML.  You'll only have to do it all over again the next time you have to run CSNAP...)

    You normally start CSNAP by running the "csnap" shell script in the private Caucus universe in a terminal window.  It prompts you for input, including the entire list of conferences to be "snapped".  Rather than do this manually every time, modify the shell script to include all of the input.

    For example, the original csnap script in unix userid "myspace" might look like this:

    /home/myspace/SWEB/sweba /home/myspace/SWEB/swebd.conf \
                             CSNAP/csnap.cml \

    Modify it to (1) wipe the test area public_html/testit clean each time, (2) add the list of conference names (one per line, no blanks, in file and (3) set the target directory to public_html/testit, as in:

    rm -rf /home/myspace/public_html/testit
    /home/myspace/SWEB/sweba /home/myspace/SWEB/swebd.conf \
                             CSNAP/csnap.cml \
                             /home/myspace/public_html/GIF41 \
                             -c /home/myspace/ \
                             -d /home/myspace/public_html/testit -t

    See the header comments in CML/CSNAP/csnap.cml for details on the -c, -d, and -t arguments.

    Run csnap, and then point your browser at /~myspace/testit/index.htm, and see how it looks!


  3. Upload graphics and documents into Caucus.  The purpose of this section is to capture the whole conference via CSNAP, so that it can be viewed off of CD-ROM w/o the end user being connected to the net. 

    This means scanning all of the conferences in some fashion, looking for images or documents that are elsewhere, and uploading those images or documents into Caucus.

    This can be a tedious process(!).  It helps, of course, if the event producer(s) encouraged people to upload (attach) files in the first place, rather than linking to them.  Ironically, the power users are often the worst offenders (in this sense), as they may cheerfully insert raw HTML code that loads images etc. from other hosts.

    There are two approaches:

    1. Read through everything in the conferences, looking for images or documents that are elsewhere.  This can be subtle, since a quickly loading image from another site may appear faster than you can see the status report at the bottom of the browser window.

    2. Use grep and vi or some other editor to find http references in the raw Caucus data files ("partfiles").  For example:
         grep "http://" C[0-9]*/[0-9]*
      looks for all explicit URL's in all of the partfiles.  Save the output to a file, and scan through it.  Remove all references to Caucus buttons or other files that clearly came from the original event host, and see what's left.

    Ideally, use both approaches, since you may catch different external files in different ways.  Also check individuals' personal information; again, a power user may point their picture to a remote machine.

    Having located external files, then follows the work of actually moving them into Caucus.  You can, of course, edit the responses individually in Caucus and upload the files into them.  Alternately you may be able to directly edit the individual partfiles and change the text there -- this is much faster but requires some skill with a good text editor (vi or emacs or...?) and some confidence about the Caucus file formats.  (See, internal technical area, for the file formats document.)

    (If you take the latter route, your changes may not actually appear in Caucus unless you quit and re-enter, since Caucus caches some item and response data in memory.)


  4. Save the Caucus Center page.  CSNAP does not perfectly replicate the normal Caucus environment.  In particular, it may not replicate the look and feel of the Caucus Center page for a site.  Some of this is due to the difference between dynamically generated Caucus pages vs. static HTML pages; some of it is simply that CSNAP development doesn't always keep pace with Caucus development.

    Whatever the cause, there is a good chance that you will need to manually edit the HTML produced by CSNAP for the Caucus Center page.  This is the major exception to the rule from section II about resisting editing the produced HTML pages.  Hold off on this until you know what the final center page should look like, what conferences are shown, etc. 

    The Center page is located in C0000/index.htm (not the top level index.htm -- that is just a redirect page to C0000/index.htm).  If and when you do edit it manually, keep a copy of your edited page outside of the directory tree (the "testit" directory in the sample csnap shell script above).  Otherwise you may lose your work when you rerun csnap.


  5. Add custom pages.  The event may contain custom CML pages that are not part of the "standard" Caucus distribution, and thus have no equivalent CSNAP pages.  Prior examples of this include "bookstores" and the alphabetical participant lists.

    If you have pages like this in the event, first contact the appropriate event production and technical people to see if these pages should be somehow included by CSNAP.  (If we're doing the same kind of bookstore over and over again, we might as well.)

    If not, then consider whether it's feasible to capture the actual HTML from the "custom" pages, and just include those files directly along with the CSNAP output.  Usually this is not terribly difficult, although it does mean some manual editing of each captured page to make the links point to the correct places.

    If neither of these approaches are feasible, then you've got a problem.  Contact the appropriate management person.


  6. Add custom data (videos, etc.).  Some events may have custom data and/or applications that were part of the event and ought to be part of the CD.  Collaborate '99, for example, had the famous Dee Hock "Eloquent" audio/video presentation.

    Putting these kinds of data and applications on the CD are pretty straightforward; the only trick is linking to them from the static HTML pages in a way that will start the application.  This may be very different from the way the app was invoked over the web.

    The rest of this section describes how the Eloquent video was linked in to the static CSNAP pages.  A similar approach would presumably be used for any other kinds of custom data or applications.

    1. Eloquent supplied us with a CD containing their "player" software (Windows only), and the Dee Hock interview data (video/audio/transcript) data file(s).  We used their "directly on the CD player" instead of their streaming Web player, since the end user of the Collaborate '99 CD is just looking at files on the CD -- there's no web server or streaming server to connect to, it's all just files.

    2. So all of the files on their CD (excepting their autorun.inf, since we wanted to use our own) were just copied into the directory that would become the top level directory of the CD.

    3. The trick then was to make a clickable link start their player.  Unfortunately, while it would be easy enough to put a "file:" URL link to their player (which was in /player32/eloquent.exe), clicking on that link causes many browsers to ask if you want to download the .exe file, which is kind of silly.

      However, all Windows browsers do appear to know that they can run a .bat (batch) file.  So we could make a clickable link that starts a batch file, and then the batch file starts the eloquent player elqouent.exe.

    4. This is still more complicated than it sounds... because the batch file has to know which drive the eloquent player is on... and while the HTML page can determine which drive it was invoked from, via javascript, there's no way to pass that information on to a batch file!  ("What about an environment variable?", you may ask.  Ah!  But there is no web server involved here, to provide the environment variables.)

      So the answer, as can be seen by examining the Collaborate '99 CD, was to create 24 batch files: eloqc.bat, eloqd.bat, ... eloqz.bat.  Eloqc.bat contained:

         @echo off
         rem   If you see this message, please run or double-click on
         rem   the program listed below:

      Each static HTML file that had a link to the video contained the following Javascript code in the <HEAD> block:

         function runme() {
            if (navigator.userAgent.indexOf("Win") < 0) {
               confirm ("Alas, the presentation only works on Windows.");
               return false;
            confirm ("When the next dialog box appears, please choose " +
               (navigator.userAgent.indexOf("MSIE") >= 0 ? "'Run'." : "'Open it'."));
            return true;

      and then the link itself was actually coded as:

            document.write ("<A HREF='../eloq" +
             document.location.pathname.substring(1,2) + ".bat' " +
             "onClick='return runme();'>Click here for Dee's Video Presentation</A>\n");


  7. Move to Macintosh.  Tar up all of the files that are in the CSNAP output directory, and move them to the Macintosh.  Un-tar them in a folder.  Versions of Fetch (ftp client) and Tar for the Mac are available at

    If there are custom applications as in section VI, you may need to move them independently to the same folder on the Mac.  You should also include an "autorun" script in that folder that will cause Windows platforms to automatically load index.htm into a browser -- details can be found at  (Unfortunately, there doesn't seem to be a way to do the equivalent "autorun" on a Mac, at least so far.)


  8. Write CD.  The Mac SCSI CD burner includes a copy of Toast 3.5.7, which is a good tool for writing CD's readable by Windows and Mac.  Follow the steps below to actually write the CD.

    1. The CD burner seems to work best if it is connected and powered on before the Mac is booted.

    2. For the first test, try using a CD-RW (rewritable).  If that looks good, you can write the whole thing again on a CD-R to be the true master.

    3. Start Toast.  Pull down Format, select "Mac/ISO Hybrid".

    4. Pull down Utilities, select "Create temporary partition".  Give it the same name that you want the CD to have.  Select an appropriate size for the partition (probably doesn't matter unless you are low on disk space).

    5. Select all files in the folder where you un-tar'd the CSNAP files, and drag them to the temporary partition.

    6. Drag the entire partition and drop it on the "Mac..." button on the main Toast window.

    7. Open the partition, select all the files in it, and drag and drop them on the "ISO..." button on the main Toast window.

    8. Click on the ISO button.  This displays a window with Files, Layout, and Settings tabs.  Click on Settings and select "Joliet".  Click on Files, double-click on "Untitled CD", and enter the CD title.  Click on the big "Done" button.

    9. Back at the main Toast window, click on "Write CD".

    It's not 100% clear whether this process writes the data twice, once in ISO/Joliet format, and once in Mac format -- or if, as we'd prefer, it wrote the data once with two different file system tables pointing to the same data.  If we ever CNSAP an event that's greater than 325 meg, we may find this out(!).  The Toast folder includes a detailed user's guide in PDF format, that could be researched for more info on this process.


  9. Test CD.  Try reading the same CD on several different machines, and try to be certain that everything (especially the tricky things, like custom data or applications) works.  (If you've used a CD-RW, older machines may not be able to read it; that's OK.)

    In particular, look for references to long file names -- ones that are longer than the old MSDOS 8.3 syntax -- and make sure they load properly under both Windows and Mac.  If you have access to a Linux system with Joliet support, try that also (older Linux's may support Joliet).

    See if the "autorun" feature works under Windows.  Just insert the CD and wait; it ought to launch a browser (or take over an existing browser window if one is up) and load the Caucus Center page.  This may not work on all Windows boxes; it appears to require that some browser has been declared to be the default application for .htm files, and it is possible to turn that declaration off.  But if it works on at least one Windows box, it will work on all boxes that haven't turned this off.

    Have someone else try the CD without telling them what to do.  The less they know, the better!  In general, test it, test it, test it, and then when you're done, test it.  The Collaborate '99 CD went through three iterations before we were satisfied.


  10. Future Improvements.  It would be nice to change CSNAP and the process described in this doc so that the top level directory on the created CD has exactly two entries: an index.htm file, and a directory (folder) containing everything else.  This would be particularly helpful for Mac users, or Windows users who have disabled the autorun feature.