General
=======

Contact Tuomas Lukka at lukka@iki.fi if you want to help hack on this.

Start the Java GZigzag through the org.gzigzag.Main class, e.g.

	java org.gzigzag.Main [options] cellscrollfile

where the options are detailed in the javadoc for org.gzigzag.Main.

IF IT IS TOO SLOW, CHECK THE FAQ (../Documentation/FAQ), question
II.1.5 TO GET HELP AT STARTUP, SEE ../Documentation/STARTING.  There
is a quick-hack user's guide in ../Documentation/UsersGuide/ .

Note that org.gzizgag.Main opens up two windows, showing the same
(vanishing) view of the structure.  There are a lot of other views;
you can cycle a short list with `v' (data window) or `Shift-v'
(control window); more can be added to that list (Views) by cloning
views from the AllViews list.

Note that some classes are currently work-in-progress and some are
abandoned. Some are just being tried on for size (ZZPath).  See what
org.gzigzag.Main (Main.java) uses for what's reasonably current. The
truly deprecated ones will be removed little by little.  Tuomas
recommends a coloring editor so you can easily see which parts are
commented out -- there are quite many of them, which will be removed
shortly. Tuomas uses gvim.

Structure
=========

The structure of the source is still evolving. Right now, there are
several meaningful subdirectories below this directory, including

media/   - handling fluid media (text etc)
storage/ - how to store the ZZ information on disk in a few different formats
flob/    - all the current basic views and their support
clang/   - cellular programming language experimentation


Commands
========

See the user's guide for more info.

Compiling
=========

Note that some Java compilers may have trouble with dependencies so 
you may have to run "make" several times. REMEMBER TO SET YOUR CLASSPATH
CORRECTLY!

Bug reporting
=============

Bug reports are gladly accepted. See the FAQ for more info.

Please run

	java org.gzigzag.ChkVersion

and include the output so we can be sure which version of each file
you're running.


Requirements
============

First of all, the center of it all: make. GNU make version 3.78.1 is
known to work.

Java Developer's Kit, version 1.1 or later.  Kaffe won't work.

Swing is no longer required.

Perl, version 5.004 or later, is required by the zob stuff.

This is all you need to compile & run the core GZigZag. In the 
directory ../Modules are some modules useful for various things. For
convenience, they are called from the Makefile in this directory.

IF YOU DO NOT WANT TO INSTALL THE REQUIREMENTS FOR A MODULE, JUST
REMOVE IT FROM THE 

	MODULES=...

LINE IN THE MAKEFILE.  You can also specify it on the make command
line like this:

       make MODULES=""


Requirements for modules
========================

1. xml

To use the XML module, you need the Xerces  libraries from 
http://xml.apache.org, version 1.1.2 or later. 
If there is a problem, please report it to me.

2. mbox

You need the GNU regexp libraries, version 1.0.8, for parsing mailboxes.
Note that this module is not yet very useful so it's developers only.

3. test

This just contains small test classes for various features and is 
mostly useful for developers only. Use the source, Luke.

4. sound

This module requires JMF, the Java Media Framework, version 2.0,
available from java.sun.com either as a pure Java download or an accelerated
version for Solaris or NT.

5. applet

This module requires the XML module. If you would like to use ZZApplet
from a browser, like netscape navigator, you must have OpenXML
libraries in the path the browsers JVM searches.  Tuomas got it
working by copying openxml.jar to netscapes library directory. ( vp )

Documentation
=============

The javadocs embedded in the sources (which may be converted to HTML
using the Sun javadoc program) may help quite a bit.

See also the directory ../Documentation


A weird JNI Perl scripting thing
================================

In the script/ subdirectory there is a JNI interface to the Perl scripting
module of the C++ side, which works: this is intended as a temporary
measure to allow scripting within the Java client. Eventually this should
be replaced with the ZZ Scripting language plus TCP/IP connection to a
Perl script server, if required. Compiling the jzigzag program can be
a bit difficult but is well worth it.


 -- The GZigZag team
