more than GUI?

Lex Spoon lex at cc.gatech.edu
Tue Sep 12 19:33:47 UTC 2000



A really object-oriented operating system would seem like a true
advance.  In general, OS's become more powerful when their basic
abstractions become higher level.  Right now, the most popular OS's
abstract on bytes and system calls.  Typical microkernels raise the bar
to pipes and procedure calls, though I think they still mostly talk in
bytes.  Lisp Machines go further by adding implicitly typed data instead
of just bytes.  Objects would be yet another step further.

This progression--bytes, procedure calls, typed-data, objects--ought to
be as good for OS's as it is for PL's.  Some quick examples:

	1. You want to write xterm, which lets you run programs and redirect
their text output to a window.  In Unix this requires OS support in
order to simulate tty's, and you are still limitted in what you can do. 
In a proper object-oriented system, you'd simply be able to supply an
alternate tty object which draws things into a window, and the tty
object could be modified in any way you like.

	2. You build an intricate, complicated spreadsheet and wish to save it
to a file.  Forget file formats--just store the object into a permanent "filesystem"
object.

	3. You want a dynamic filesystem on a tar file.  You do
"TarDirectory  on: tarObject" and start using it.  If you insert this
object into another directory object, you will have mounted a subdirectory.

Now think how you'd do these things on Macs, Unix, or MS Windows. 
Painful, huh?  I'll have to numb my mind again after writing this, just
so I can get some work done on my existing computer.

For anyone who agrees that this is good, Squeak is a *great* place to
start.  It already has persistency built in via course snapshots, and it
has a powerful UI.  

So what needs to be done next?  A good thought experiment is this: if
you load Squeak full-screen, what things do you still want to dip into
from your original OS?


First off, when I do this experiment, a lot of traditional "OS" problems
don't seem that important.  For example, you don't *have* to have
multiple users, because personal computers are pretty cheap!  You don't
*have* to have page-level swapping.  You don't *have* to have multiple
CPU's.  You don't *have* to have a strong security framework.  These are
all very interesting features, but they just don't seem primary on a
single-user personal computer.


Instead, what keeps coming to my mind is that I can't use existing
applications from Squeak.  I don't care so much about the exact way the
filesystem in my OS works, or the way processes are separated.  I would
if I wrote a lot of C-level programs, but I don't now that I know about
Smalltalk.  Instnead, what I really like from my underlying OS is being
able to run existing programs. I like running utilities other people in
my department think up, a Netscape-compatible web browser, the latest
video games being put out by Blizzard, and interactive fiction I've
downloaded.  A Squeak version of all of these would be nice, but the
existing versions are pretty usable already!


Reusing these apps from Squeak not as hard as it might seem.  Granted,
MS Windows programs are an exception, but MS seems to intentionally make
emulation difficult.  POSIX and XWindows are a different story: they are
minimal, and most importantly, they are fixed.  I don't know about Macs,
but a decent Unix+XWindows emulation environment ought to be quite
reasonable.

Instead of calling into binaries, which is what the existing plugin
system does, it would be better to have an execution environment for
various languages.  That way, we don't need special hardware support,
and furthermore we can reuse the software on multiple platforms.  Again,
MS Windows games get kicked out by this restriction, but *lots* of
software is left in.

The most important programming language to support is C.  Most other
languages have an implementation in C, and so a C environment is enough
for bootstrapping other systems as well.  Note, it would even be
possible to use gcc as our C compiler.  In fact, one could even
cross-compile to get things started.



Overall, an OO OS would be awesome.  Squeak is a great start, and IMHO,
the next priority is to implement a C execution environment.  And now
I'm going to numb my mind again.


-Lex





More information about the Squeak-dev mailing list