HTML considered as documentation format [was: Why [not] X?]

Gilbert Baumann
23 May 1997 09:21:56 +0200

Moin, moin,

Kelly Murray <kem@Franz.COM> writes:
> [as he pokes his head up from actually working on SilkOS...]
> > I'll leave it at this: if you want to kick ass with a Lisp graphics
> > system, don't stub your toe on X. Aim a little higher.
> I'll say again what I've suggested:  A web browser is the GUI.
> If you want it to kick-ass, then put a Lisp in the web browser,
> and send LISP code to the browser.  
> Is someone going to volunteer to write a web browser in Lisp?

Guess what I am currently doing?! I am coding a web browser in
CL+CLM. It does its job fairly well so far. However it is still
waiting for an alpha release. It will of course be free. There are
some things, which are yet too fragile. I use multiple threads, when
available e.g. using ACL. But ACL bails out from time to time with the
"interrupted system call" phenomena when waiting for input, which
drives me nuts sometimes. (Some advice from you Kelly?) There are just
too much debugging messages in there and my code often signals a
cerror, when it should simply give a warning. This happens when the
browser hits bad syntax. And there really many pages out there with
bad syntax. And it still needs a name. Some idea? And I plan to avoid
Motif, since it is commercial and most Linux people do not have it. I
will either simply use Xaw or debug CLUE/CLIO to a state were it is
useful, or wait for CLIM or do something from scratch or finish the
tty interface.

But I must otherwise disappoint you, since it should be a web browser,
not a news reader, not a mail reader, not an editor, and definitely
not a gui, nor a development environment, and no OS -- it should just
be an application to browse HTML documents. [And I refuse to put
anything else into the browser.]  I do not not like the idea using a
web browser as the GUI at all. Why the hell do you want to abuse some
protocol and text formatting language designed to be used for
documents connected by hyperlinks to be an OS?

Further I do not plan to implement java support. If somebody wants to
do that, fine, I will happily incorporate that. I have already wasted
too much time with this application and I hate it, that the set of
standard you have to support is that big as it is already. And I hate
it is a moving target. Sometimes I think, all these W3 standards
exists only because some programmers fear losing its jobs and propose
new standards every week to have something to code. I rather want to
make the browser small and high-quality on the
documents. (E.g. emitting postscript with proper kerning at least --
it does already.)

There were two main idea, which motivated me to code a web browser in

1. To show that you could create sophisticated application for
   "real-world" usage in Lisp. To keep those C bigots from arguing
   that Lisp is only good for AI or other obscure and "useless"
   applications. I wanted to show further that 10k lines of Lisp code
   could do the job of 40k lines C code and do it better -- Thus I
   wanted to show the superiority of Lisp in this domain.

2. I wanted some starting point for having a decent documentation
   system. I plan to incorporate most of the documentation available
   for Linux today into a system. I want to experiment with methods to
   organize the information available and want to present it thru' an
   uniform interface. And I want to have a unified index over all
   these documents. The documents from the LDP project are pretty easy
   to handle, since they are using SGML, which could be converted into
   HTML easily. I want to incorporate also the manpages, the rich source
   texinfo documents and documents found on the web. Further there are
   various roff documents from the X11 distribution etc..

   Goal should be to be able to read and use this documentation thru'
   a low-overhead, transparent and sophisticated application. I want
   to be able so search on all or a subset of the documents for a
   particular information. E.g. I should be possible to just say
   "find something about XCreateWindow" and have a list of the spot
   displayed in a second.  

Point 2 should also actually apply to the LispOS project. I consider
good documentation fairly important. It speeds up application
development and reduces bugs, introduced by false assumptions on the
pre/post conditions on the library functions. This also applies pretty
well to your own functions -- so it should be able to browse that
documentation also thru' the same interface. The source of the
documentation (both manual and reference) should be in the source code
of the program, so that you have it handy when coding -- that should
help to keep the documentation up to date.

Now I make me another cup of coffee and continue working on the browser.