It all started in 2004 with Church of Fools,
the world's first 3D online church, which was based on a Macromedia Flash server and a
Director client. Mark Howe and Barry Wickett were both involved in the project from the start,
though not in the coding.
After the project's widely-reported
security problems,
Barry and Mark decided
to look at alternative ways to build virtual worlds. This led to the multimedia chat environment
of St Pixels, with client and server written in java and
perl respectively.
That environment works well, but Mark felt that it was too inflexible,
and that the semantics were hidden in too many bits of procedural code. What he really wanted
was a LISP machine. Then he realised
that XSLT was (accidentally) a full-blown
functional programming language. In addition,
XSLT is an XML vocabulary designed to process XML documents, which, potentially, opens up the
possibility of program-writing programs à la LISP. It's a widely-used W3C standard, and Daniel Veillard's LibXSLT
in particular offers impressive throughput. Could XSLT be used as the basis of a real-time XSLT
server?
The next stage was a proof of concept, which Mark assembled in perl. It worked well enough
to establish the validity of the basic approach, but it soon became clear that in order to run
efficiently it would be necessary to control LibXSLT at a finer level than perl CPAN modules
allowed. Then we started to get stack dumps.
By this point Tony Graham was acting as a consultant on the project, and we decided together
that implementing the XSLT virtual machine sooner rather than later made more sense than trying
to fix what was probably an elusive bug in XML::LibXML that only appears when the same
transformations are run hundreds of time on the same files (hardly a common perl scenario). So
Tony recreated Mark's virtual machine in C, and then started to optimise it, resulting in
Xacerbate.
Meanwhile, Mark started experimenting with approaches to programming the virtual machine under
the project name Xiguous. We soon thought of cases in which an HTTP gateway would be useful, and
Mark's third attempt turned into Xteriorize. Xtravagate was written to provide a convenient way to
test the server functionality (the first generic client was in perl, but Perl/Tk struggles with
UTF-8, which isn't ideal for an XML test bed). Finally, after taking one look at the interface for
Xtravagate, Barry agreed to produce some java client technology.
0 comment(s) so far, not open for comments