Executive Summary
I believe (as of July, 2006) that porting Squeak Smalltalk to Plan 9 is a potentially very fruitful project because of world-view similarities and because each system promises benefits for the other.
World-view Similarities
I believe Plan 9 and Squeak share an ethos which could be described as "small is beautiful" or, in the formulation of Niklas Wirth, "lean software". This world view overlaps with that of Scheme and Forth.
- It is beneficial for one's computing infrastructure to be not only open source but also small enough that one can actually read all of the source code and understand how the whole system works--as a system,
- It is attractive for a system to be built on the
interaction of a small number of core concepts:
- Plan 9: A distributed system consists of name spaces and files.
- Smalltalk: A software system consists of objects and messages.
- Good portability matters more than great performance,
ioctl()is considered harmful,- Users of a system should have access to not only its current state but also browsable and rewindable previous history.
Potential Areas of Synergy
One way to think of Plan 9 is as a community of people focused on the sorts of software artifacts naturally expressible in the C programming language. This means it is a natural system to deliver:
- Key device drivers: graphics, Ethernet, disk
- The traditional Unix "process as slightly abstracted virtual machine" model of kernel services, a convenient home for other virtual machines,
- A robust distributed file system infrastructure.
Meanwhile, Squeak offers Plan 9 the opportunity to write GUI and media applications in a garbage-collected VM-based language with inheritance--an alternative implementation of approximately the same goal set as Limbo (or, though the correspondence is weaker due to mass, Java). Squeak's object store can swap out objects, enabling the VM to run in a fixed amount of memory without requiring the underlying operating system to support paging.
Putting the two together would be attractive because:
- Since all Plan 9 resources and properties (network connections, Ethernet ARP caches, wireless network signal strength, CD-ROM write speed) are accessed and controllable via naturally-formatted files, Squeak can manage them without the extensive set of platform-specific bindings which would be required on Windows and various flavors of Unix,
- Plan 9 can obtain a slick UI toolkit, Morphic,
- Plan 9 can obtain a slick web toolkit, Seaside,
- Squeak can obtain a fairly clean and compact
execution environment:
- A complete Plan 9 installation takes as much space as many "stripped-down" Linux or BSD distributions, and a stripped-down Plan 9 installation is very small,
- Due to the virtualized design of Plan 9's window manager, rio, a single Squeak VM can very easily run either in the window system or as its own stand-alone window system--in the latter case, Plan 9 would be entirely invisible to the Squeak user once the system is booted.
Unfortunate Issues
- Squeak's web browser, Scamper, seriously lags the Inferno browser, Charon (which is probably the most full-featured browser that runs on Plan 9),
- Plan 9 lacks support for many audio devices, which is unfortunate since one of Squeak's strength is audio production,
- Smalltalk is of course the champion of object-oriented programming, an approach which Plan 9 is structurally suspicious of (though it is important to note that Smalltalk's design principles strongly oppose the C++ monster),
- Plan 9 considers dynamic loading dubious, which slightly impedes the deployment of interesting Squeak plug-ins.
Summary
Both Limbo and Squeak are multi-platform VM-based languages which target graphics, media, and the Web. Limbo is more focused on building distributed applications by composing small modules written in a C-inspired language; Squeak is more focused on single-VM/persistent-image "personal computing". Plan 9 and Inferno/Limbo appear to lead Squeak in terms of "desktop applications" (document preparation, e-mail, and web browsing)-- at least for a while, there was a group of people who used Plan 9 as the sole desktop environment; it's not clear Squeak has ever been that way.