different alternatives for lispOS

Richard Coleman coleman@math.gatech.edu
Thu, 24 Apr 1997 19:40:06 -0400

Ok.. I've been looking into various alternatives for
a lispOS.  Here are some various possibilities, starting
with the most ambitious.

Alsok, I'm using the word scheme below, but take it to mean some
type of lisp/scheme dialect.  I'm leaning toward scheme, but that
is a detail that can be worried about later.

1) Layer a scheme distribution directly on top of the Flux OS
   toolkit (http://www.cs.utah.edu/projects/flexmach/oskit/html/)
   This is definitely the most `ground up' method.  This is
   apparently the route taken by the Express Project at MIT
   (http://www.ai.mit.edu/projects/express/) using the ML dialect

2) Layer a scheme distribution on top of a minimal Linux
   distribution.  Strip out everything except what is need to boot
   the system (and a few small utilities).  Merge the virtual memory
   code and GC code.  Then slowly replace all the standard apps with
   lisp/scheme variants.  Also change the threading on the scheme to
   sit directly on the clone system call.

3) Layer scheme on top of some virtual machine such as
   the java VM.  Using kawa would probably be a good idea here.
   (http://www.cygnus.com/~bothner/kawa.html)  Also, other virtual
   machines have been proposed, and should be considered.

4) Build a large lisp-based user environment instead of a whole
   OS.  This is essentially just a generalization of (X)Emacs.  This
   has been proposed several times (GROW project for instance).  Most
   projects like this have been propsed to use Guilde.  The advantage
   is that is it could be made to run just about everywhere.

I'm actually leaning toward version 2.  But that would depend on how many
people are interested in helping to hack on the sytem.  There are quite a few
people on the list at this point, so the interest is definitely there.

But as I've said on the newsgroups, it would make sense to start small and
build on the small successes.  A two phase plan would be to start on version
number 4, with the aim of eventually using that code to accomplish version
number 2.


Richard Coleman