Some heretic thoughts

Thomas Fischbacher
Fri, 13 Jun 1997 19:21:46 +0200

Dwight wrote:

> | * We have to support X.
> I would like to be able to interact with LispOS thru X-terminal software,
> but this does not mean LispOS would have to use X as its native GUI.

X is not a GUI, but only a policy-free Windowing System.
What is built on top of X is a completely different question.

We certainly have to support it. There are X servers for OS/2, Windows,
Mac, etc., though all those machines have their native GUIs, simply
because of the severe limitations you suffer from not being able to do X
on a networked machine. Even if the machine sould come without gfx
hardware support (a networked windowing system only), what's the
network-transparent windowing system of today?
(Of course, this could also be accomplished without a Unix kernel.)

> do not find the idea of using X as the native GUI for LispOS appealing.

Why not? X is somewhat ugly and bloated as well, true, but just the same
is true for (Common) LISP. I could name about a dozen severe problems with
LISP compared to other languages with functional background without
thinking too long. But I'd never suggest to do it in a different
language (maybe even invent a new one), because LISP is the only
language known by virtually all lambda hackers, many people have
years of LISP experience, and there are efficient free compilers

> | * We cannot re-implement X from scratch.
> I wouldn't want to. Yuck! Consider your stance however - if we must use
> it and not reimplement it, what will we have? Why call it LispOS if
> we must drag 98% of Unix along with us?

I want a machine I can do work with, no matter what it's called.

If we don't look at system resources for the moment, I could well live
with a Unix at the base which could either be installed in a way so that
no users of flesh and blood can ever log in and which needs a minimum of
administration only, or alternatively as a fully usable Unix. (Though
system security is an important issue in the latter case.)

This is not a clean approach, of course, but it leads to results.
Usable results.

> Better to start thinking about creating a clean, elegant GUI.

Many people have done so in the past, all convinced to be able to
build the ultimately superior GUI. As a result, what do we have now?
Lots of different incompatible graphical user interfaces, every single
one with an own API and an own look and feel. The only thing that seems
to be common is the mistakes people keep on repeating though others have
made them before. :-<

We want to build a new OS, which is quite an effort for itself. If we
want to invent a new windowing system as well, there will be a
considerable risk that this project will fail in a fatal way. Using
something which is already available, evolved and widely accepted is
much less risky, more likely to be accepted by those programmers which
already have experience they can use. Furthermore, think of libraries
such as OpenGL (or "poor man's OpenGL" Mesa).
I'd be very glad if I could use a 3d library with hardware support
from within a good LISP environment; using what's already available
is so much easier.

> The choice of GUI has a huge
> impact on the complexity, usability, and programmability of your
> system - almost every application you create will have to carry
> the burden of a complex, hideous, inflexible GUI.

I wouldn't call X inflexible (in comparison to the user interfaces
of some vendors...)
But X at its lowest level is not much more than a network protocol;
which GUI to build on it is a different question. But again, I'd
suggest to use what's already there if we can, at least to get
something running. This part can rather easily be substituted later
by something better (if we decided to do so).

> You also lose the
> advantage of having the GUI in Lisp to be manipulated as desired.

Some things are out of your control because they are at such a low
level that they could be done in hardware by some vendors.
(Color, Fonts, line drawing, polygon filling, etc.)
Bare X without anything above it is approximately at that level.
Maybe I don't see some points others consider vital because I've
been hacking Xlib too long :), but from the UI point of view I don't
see important limitations in X.

> I think we should definitely be concerned with interoperability with
> Unix environments and eventually with running (most of) the LispEnv
> on Unix OSs, but I think it complicates the picture in the beginning
> too much.

On the other hand, you presumably won't find two people here who have
exactly the same idea of a LispOS, but many know Unix and its weaknesses
very well. Therefore, to give precise definitions of what we want,
it might be more practical to refer to Unix and say what we want to do in
a different way than to have to find a least common multiple on a huge
variety of different subjects.

If we want to do it on standard x86 hardware, who will take care of
updating drivers for all new devices that appear on the market? That's
something for hardware hackers; I want to do LISP. Do we have enough
LISP hardware hackers which delight on such stuff to have drivers
developed in a timely manner?

regards,             Thomas Fischbacher -