[Date Prev][Date Next][Thread Prev][Thread Next][Author Index][Date Index][Thread Index]

bootstrapping and Smalltalk


I was sitting next to Mark Miller when he read your message and I
suggested "Smalltalk: Bits of History, Words of Advice".  I thought
there might have been an article there on how the Smalltalk-80 virtual
image evolved from Smalltalk-72 through various major versions to the
public release of Smalltalk-80.  I just looked through my copy, and
all I found was a mention of the cloning process in the discussion of
the development of Smalltalk-78 in "The Evolution of the Smalltalk
Virtual Machine."  The stories I remember might just have been oral
culture at PARC.  [Ted Kaehler was there at the time.  Maybe he knows
of other sources?]

The reason the Smalltalk evolution might be relevant is that it's the
only example I know of in which a software system developed as the
gradual evolution of a _running_ system over a long period of time.
All the other systems I know of developed by the evolution of their
source code--you edit, compile, and see what you've got.  If you like
it, you use it until you think of something else to change, then kill
the system, edit the code, compile again, and fire up a new system.

In Smalltalk, the current running image is a direct descendant of a
running image from 1976.  [Ted: were there any major breaks?]  If
you're running Smalltalk and decide you want something to be
different, you change it in your running system and when you're done
for the day, you save it and that's where you start tomorrow.  As a
practical matter, in order to keep a group of people in synch, there's
a particular copy that's the official image.  If you do something you
want everyone else to have, you write it out to a file, and the owner
of the official image files it in.  But the official image is
descended directly from some long ago running system, and the only
changes to it were made by changing the running system, or by writing
things out in a different format.

This latter mechanism is the way that the system was able to move
across major transitions in the virtual machine.  When someone makes a
major, incompatible change in the Smalltalk VM, a compatible image is
produced by writing out the save in a different way.  Rather than
storing out copies of all the objects in the system in the same format
you started that session with, a new save method is written which
changes the format of the objects as it writes them out.  Since you're
still just writing out copies of the running objects in the system,
it's useful to continue thinking of the new image as a descendant of
the previous one.  (One of the ways in which it matters is garbage
collection.  If there are places to hide from the garbage collector
and survive the save & restore process, then the garbage will last
forever.  Smalltalk folk had to be honest about garbage collection
from the early days.)  

That's about as much as I have to offer along the lines of software
evolution; I wasn't even at PARC when most of the above was going on.
During my time there the system only evolved in the day-to-day manner;
there were no transitions to major new versions of the VM.  Maybe Ted
Kaehler can offer more along these lines, but I doubt if anyone in the
Smalltalk group tried to build any theories around it.

When I try to think about your question in an economic context and
compare that to the case of software, I'm struck by how much more
cavalier software folk can be about it.  In economic systems you can't
say "we need a new system that's not very much like the old one.
Let's just junk this system and start over," though that's exactly
what one does with software.  The Smalltalk group was able to use an
evolutionary process because at any point they only saw a short
distance ahead to where they wanted to be, and it never looked like it
was very far away.  For Eastern Europe I can't see any relatively
similar systems that are reasonably better than the one they have
now--the improvements that are easy to spot don't look like they are
an evolutionary step away.

I don't see how a theory of gradual transition can help you.  What you
really need is a theory of peaceful revolution.  But then there are a
few of those around already and they don't look like what we want. :-)

Good Luck,