etoys implementation

John Gilmore gnu at toad.com
Wed Jun 25 04:55:29 EDT 2008


My only experience with Squeak/eToys up til now was trying it on the
OLPC as a naive user.  Poking at objects on the screen with the
handles, since that was the only tutorial offered.  The way the darn
thing "saved its workspace" in the friggin Journal whenever you tried
to quit it reminded me of ancient APL interpreters that contained a
jumble of code and data, and Holger's explanation of why it's
"non-free" reinforced that.  Of course I have no idea how it's
actually implemented inside.  (There's apparently no tarball that I
could unpack and examine to find out, either; I'd have to learn how to
run their GUI just to look at their implementation.)

It took some searching, but I found a paper on the design of the guts
of Squeak:

  ftp://st.cs.uiuc.edu/Smalltalk/Squeak/docs/OOPSLA.Squeak.html

I don't know if it is still good documentation for the current
implementation, but it gives some idea of how Squeak was originally
built.  The interpreter was written and maintained in a subset of
high-level Squeak (smalltalk) but there's also a translator that
translates that interpreter into C, which is then compiled to produce
a binary interpreter.  Whether it does this dynamically or statically
I have no idea.  Then there's a separate Compiler that turns
Squeak/Smalltalk source code into bytecode objects that the
interpreter can run?

There's another page that purports to talk about how a Squeak image is
built, but after explaining how most people "never quite feel at home
in a Squeak .changes file", it degenerates into details that make no
sense to an outsider.  Avoid http://wiki.squeak.org/squeak/1053 until
somebody rewrites it in English.  The rest of the internals doc is
sketchy copies of emails, with newer headings that say things like
"The last system where this worked is 2.7 (January 2000)".

I haven't yet found similar documentation for eToys, which is
apparently something "built on" squeak rather than "built in"?
There's also a warning at http://wiki.squeak.org/squeak that if you
want to run eToys, you need to run a different version of Squeak than
everybody else.

Anyway, it looks like there's lots of stuff hiding under the covers in
Squeak and eToys, but it's so undocumented that only a zealot would
ever figure out where or how to start.  Perhaps the team should
someday spend a month or two on documentation -- after all, it's an
education project, and if nobody can even find your source code, how
are they going to read it and educate themselves?  Or some zealot
could do the supposedly trivial implementation exercise of making
source code go into separate files, and being able to actually compile
source from files into binaries in files, rather than compiling only
from running images to running images.  These improvements would make
the freedom or lack thereof of Squeak/eToys more visible to ordinary
programmers -- like me, or the Debian team.

	John



More information about the Devel mailing list