Introspection is Self observation, which makes sense because in the end computers are more about us than anything else. At the end of 2010, it is time to take stock of ourselves, considering what has been done (and not done) and prepare for the inevitably ignored New Year’s Resolutions.

For those who have just arrived at the party

The purpose of the Smalltalk project is to provide computer support for the creative spirit in everyone. – Dan Ingalls

Self is Smalltalk, only more so. – David Ungar

In our vision, the Self programmer lives and acts in a consistent and malleable world, from the concrete motor-sensory, to the abstract, intellectual levels. At the lowest, motor-sensory level of experience, objects provide the foundation for natural interaction. Consequently, every visual element in Self, from the largest window to the smallest triangle is a directly manipulable object. – Randy Smith

We live embedded in sensory experience and we act and respond to more than just rational discourse; the software worlds we build need to reflect that.

The Self environment attempts to provide an integrated intellectual and experiential computing narrative for supporting collective and individual creativity. Self is not only about personal computing but also collaborative computing.

The main story that Self tells is that everything is an object and objects respond to messages. Self thinks of objects as being made of slots, each with a key and a value. If the value is a method, then when a message that is sent to the object matches that slot, the method will be run. Objects can share slots by delegating message lookup to each other.

Messages in Self (and hence Self’s syntax more generally) follow a modified version of Smalltalk’s keyword based syntax.

Self comes with a user interface, morphic, which attempts to make objects visually concrete entities which can be physically manipulated.

Self currently comprises a fast VM written in C++ for MacOS X and Linux x86, together with text sources in Self which can be compiled by the system. The runtime state of a running Self system can be saved in a snapshot, like a Smalltalk image.

The story so far

They always say that time changes things, but you actually have to change them yourself. – Andy Warhol

Since this is the first introspection, we should begin the tale in the heat of the summer of January 2009 when the website went live.

In the last two years, we have begun to reinvigorate the Self community. Self now has a website, a more active mailing list and a blog.

Documentation has been consolidated into the Self Handbook, and old Self papers have been converted from PS to PDF and made available on the website.

The Self source code, including both the standard objects and the C++  source for the VM, is now available on GitHub.

David Ungar’s port to Linux has been finished off, and Self 4.4 has been released with prebuilt VMs and snapshots for Mac OS X and Linux x86.

Speaking of David, he was the deserving recipient of the Dahl-Nygaard Senior Prize for 2009 for his body of work, including Self.

Why we do it

I am glad you have a cat, but I do not believe it is So remarkable a cat as My Cat. – TS Eliot

Despite such JavaScript wonders as Dan Ingall’s Lively Kernel, Squeak’s ongoing improvements and Gilad Bracha’s NewSpeak, we believe that Self still has a place in the computing multiverse. We have a foundation of a good VM and a solid object model. We believe that Self is not a bad place to start if you want to invent Self.

Blue and Pink

Einstein’s space is no closer to reality than Van Gogh’s sky. – Arthur Koestler

Back in 1998, the old Squeak Central talked about their changes and aspirations based on an allusion to Arthur Koestler’s metaphor of progress in two planes: the incremental improvement plane (which Alan Kay dubbed the “pink” plane) and the paradigm shift (or “blue”) plane.

The pink plane for Self is made up of those improvements needed to get Self to the point where we can seriously start building the infrastructure needed to attract people who want to use Self for industry, academic or research uses. Examples of large pink projects include a Windows port, an ARM port and Unicode support; smaller pink projects include a proper unit testing framework, a proper streams library and a webserver.

Ideas which aim to make Self more like itSelf live on the blue plane. It is lucky that planes are unbounded, because blue ideas are legion. Some examples:

  • Since the Self syntax was devised, languages such as Ruby, Python and Haskell have shown that the old shibboleths of syntax are losing their grip on the collective conscious; Self’s syntax could be simplified and streamlined.
  • Computers are no longer stand alone entities; interworld communication would support greater collaboration and integration with other Self worlds, and other non-Self resources.
  • The old fears of the Smalltalk image linger but programmers throw VMWare and VirtualBox virtual machine images around like lego blocks; building an object storage facility into the snapshot could make Self worlds more self-contained and flexible.

We may or may not do any of these.

April is the cruellest month

OK, enough hype. – Larry Wall

Since its exile from the warmth of the Sun into the wasteland of Open Source, Self as a project has been without a central core of people paid to get things done. But wastelands aren’t really. We’re actively seeking people to collaborate: if our goals resonate with you and you want to help out then get in contact.

However this early period of revival is bound to be slow and hesitant. Bear with us – or even better, join us!

For all the fish

Finally, the thanks: Firstly to Randy Smith and David Ungar, the parents, and all the team at Stanford and Sun in the olden days, and to Adam Spitz, Jan-Paul Bultmann and Chris Double for their contributions to Self’s reawakening.

‘Til next time, Russell