We'll always have Emacs
Wednesday, November 15, 2006
Many lispers pine for the days of the LispM's and miss the unique development environment that they provided (and which, sadly, is still not equaled on any "modern" OS today). Things like:
- A common language used for both application development and OS.
- Integrated development environment where you had access to all source code (application or system) and could "drill down" into any code.
- Simplicity of messaging and IPC.
- Lisp everywhere! ;-)
However, there are a few who are taking a different approach and are actually trying to create a new LispOS. Although all of these are academic and/or personal projects, it's worth taking note of them:
- Frode V. Fjeld's Movitz "aspires to be an implementation of ANSI Common Lisp that targets the ubiquitous x86 PC architecture "on the metal". That is, running without any operating system or other form of software environment. Movitz is a development platform for operating system kernels, embedded, and single-purpose applications. There can potentially be several completely different operating systems built using Movitz."
- A version of MzScheme was customized by the PLT team to run on top of OSKit as an "operating system". This was actually done in only a few hours!
- Alastair Bridgewater (nyef on IRC) recently built a version of SBCL that runs "on the metal" on an X86 CPU without a C kernel. He's also written up some notes on his thoughts about a LispOS and how it might run on a Linux kernel in a virtualization environment. Although it is still very early days, it will be interesting to see where he goes with this!
- Pascal Bourguignon installed Emacs stand-alone on a Linux kernel using User-Mode Linux (UML). This effectively lets you use Emacs alone on top of the Linux kernel without any of the rest of Linux.
- New OS Approach: Create a new state-of-the-art LispOS from scratch. This would be fantastic and I'm sure a lot of lisp hackers would love to have such a beast. Movitz is one such example of this approach. However, it is a huge undertaking and, realistically, the chances of a completely new OS succeeding (except as a "niche" product) are pretty slim. Hmm, although somebody probably said something similar to Linus at some stage. ;-)
- OSKit Approach: Create a "Developer's OS" on top of a 'base' layer that provides core services. I've called this the OSKit approach as it's what was done in the MzScheme example above. This is a nice approach academically; however, I'm not sure how robust this might be in practice. Potentially, it might allow one to make use of existing (non-Lisp) OS functionality initially and replace it (with Lisp code) over time.
- VM Approach: Create a "Developer's OS" on top of a virtualization layer (such as Xen, CoLinux, UML). More OS type functionality would need to be provided; however, the end product might be more "lispy" than #2.
So, there are various alternatives that could be taken in the writing of a new LispOS. However, any of these alternatives would take a huge amount of work and the payoff would almost definitely be more in the form of "hacker fame" than fortune. So, unfortunately, the likelihood of a new LispOS actually seeing the light of day is pretty small. :-(
At least, (with apologies to Bogart): We'll always have Emacs.

