“Can I use my favorite text editor?”
Yes!
I want to make Spoon as approachable as possible. One of the first things that turned people off about previous Smalltalk systems was that they couldn’t use their favorite text editor to edit source code. This resulted from Smalltalk’s fundamentally different way of structuring and interacting with information, but the recent ubiquity of network protocols for distributed file editing enables a solution.
Traditionally, Smalltalk is a complete model of a virtual computer, including the contents of that computer’s memory. This concept has become familiar on a mass scale through applications like VMWare. Those virtual machines run familiar operating systems, like Windows and Linux. The Smalltalk virtual machine, however, structures its memory entirely as live objects which send messages to each other. This contrasts with the pervasive notion of static files in other operating systems. Also, like VMWare, as far as the host computer is concerned, a running Smalltalk system is a separate machine.
But just as other virtual machine implementors have devised ways of interoperating with the host computer, Smalltalk can too. Smalltalk started as a single-user system, before network protocols like HTTP, or even the networks they use, were widespread. Now, however, a Smalltalk system can speak these protocols and present itself as any other computer would. In particular, it can run a web server that speaks a protocol for distributed file editing, WebDAV. Windows, Linux, and MacOS can mount WebDAV filesystems and interact with them normally. To the WebDAV client, Smalltalk presents a filesystem, and the way it actually structures information becomes irrelevant.
I’m writing WebDAV support for Spoon. One way to interact with Spoon (before one realizes what else is possible :) is to mount its virtual filesystem from the host computer, then edit files within it using your favorite text editor. Spoon can present files which are semantically meaningful (a class hierarchy as a hierarchy of files, for example), and associate various meanings with changes to those files. By choosing that presentation wisely, one could create a complete development environment, operable from that favorite text editor.
Leave a Reply