[squeak-dev] Smalltalk philosophy

Paul D. Fernhout pdfernhout at kurtz-fernhout.com
Sat Jul 5 02:07:56 UTC 2008


Today, one can assume that given multi-core multi-processor multi-computer
interconnected networks, even within *just* the Squeak world, that there
will be reasons to run various images on multiple VMs with both the same and
different versions of Squeak across the network.

Thus, as the very least, trying to use Dan's definition decades later, a
Network OS is the part of a language standard that let you start, stop, and
interconnect multiple VMs with different views of the world that need to
communicate with each other and use shared resources (memory, processes,
sockets, hardware I/O). Occam and the parallel processing Transputer
architecture had some standards for that in the early 1980s.
  http://en.wikipedia.org/wiki/Transputer
QNX also had some good ideas about this in the early 1980s.
  http://en.wikipedia.org/wiki/QNX
The current crop of virtual computing tools like the Xen hypervisor
  http://www.xen.org/
are (stretching things a bit :-) in a way the philosophical legacy of some
of these ideals. Has any Smalltalk had this support? OTI's perhaps?

Even on a single core single processor stand-alone personal computer this
need to deal with versions is true to an extent. Eventually it practice you
may have multiple running programs using multiple versions of the same
language environment, and they need to cooperate. If this is handled poorly,
as is sometimes the case under GNU/Linux with incompatible versions of
libraries that can't be loaded together, you get failing applications or one
that can't be loaded together. So, the OS is perhaps best thought of as a
layer of tools for cooperation and to manage change and maximize
compatibility for the leas ongoing effort and requiring the least retesting.

Java has addressed these network issues somewhat from the beginning, mostly
by strong political central control of the Java trademark and an emphasis on
backward compatibility of certain core standards. You can typically still
load much 1.0 Java code in the latest JVM and expect it to run. But Java has
other issues, obviously. :-)

Once you allow for even more than one language in your wold, this layer for
cooperation becomes even more important and harder to write elegantly. :-)
You can even wind up with stuff like CORBA or XML or ODBC if you are not
careful. :-)
  http://www.arcavia.com/kyle/Rants/XML%20Sucks.html
And then versions of them. :-)

Smalltalk philosophically has often implicitly denied this notion of the
need for cooperation, and that has been its major weakness historically,
leading to any Smalltalk system over time being incompatible in practice
with *itself* eventually by bitrot and paradigm shifts. I'm not saying
Smalltalk can't play nice with other systems in theory, just that it is
typically an ad-hoc add-on, not a core feature, and it is awkward
philosophically as well as often technically.

Personally, I feel now that Java JVM and core libraries are truly free
  http://java.dzone.com/announcements/java-finally-free-and-open
I think it would make a good platform to support many of the ideals of
Squeak (obviously, using mainly the JVM, not mainly the Java language). On
the other end of things, I've long thought building on Forth, rather than C,
is a way to get a completely understandable system (since the core of Forth
is only about 1K in size). Right now, Squeak lives in the middle, leveraging
the limited C standard -- which has its own advantages and disadvantages.
Perhaps one might imagine some sort of larger Squeak beast that can live on
any of these three platforms -- Forth for simplicity, C for speed, and Java
for leveraging its portability and self-reflectiveness. But that is a very
different vision of "all we ran was smalltalk" than the original poster
probably meant. It's more like, what you deal with if you are clued in might
be mostly a Smalltalk environment and it helps you handle all the other
issues -- including managing the command line better, managing kernel
rebuilds and reboots better for you under GNU/Linux, and managing multiple
versions of Smalltalk VMs for you. It's a Smalltalk vision that does not try
to be under everything else, but rather a vision that tries to float above
everything else.

--Paul Fernhout

James Foster wrote:
> I believe that Dan Ingalls (http://en.wikipedia.org/wiki/Dan_Ingalls)
> once defined an operating system as "whatever your programming language
> doesn't provide" with the implication that a good programming language
> (such as Smalltalk) would not need much of an operating system. Keep in
> mind that Smalltalk came out of the the 1970s, about the same era as
> UNIX.  The assumption that there would be a common, powerful operating
> system was not really the same then as it is now.



More information about the Squeak-dev mailing list