MIT Open Sources the LispM Code
Sunday, October 2, 2005
Brad Parker emailed me to say that he has "permission from MIT to release all the LISPM source code with a "BSD
like" source license". This is fabulous news as it means that, at long
last, the key software components that made up the
Lisp Machines will be publicly
available. And a BSD license gives potential users a lot of freedom
in what they might choose to do with the code.
For those of you not familiar with LispM history (or only associate LispM's with Symbolics), I'll give you the condensed version of where MIT fit in. The CONS was the first Lisp Machine produced at MIT (development started in 1973 with the first prototype available in 1976) and was designed by hackers for hackers. The CONS was superceded by an improved version in 1978 called the CADR. There were only about 25 CADRs produced by MIT, but the CADR was the basis for the first commercial LispM's that were produced by both LMI and Symbolics (both of which were created/staffed by ex-MIT hackers). Although a lot of the top MIT Lisp hackers left MIT to work for the commercial LispM manufacturers, Richard Stallman stayed on at MIT and, for several years, reproduced a lot of the commercial innovations on the MIT LispMs. Therefore, even though MIT's LispM will not have all the features of the later commercial LispM's, it is still a fabulous development environment. In fact, it is the basis for what is probably the most hacker-friendly development environment ever produced. For those of us who have lived the past few years coding on top of J2EE and .Net infrastructures, the LispM OS is like an early peek at paradise! ;-)
Brad also gave me an update on his progress in creating a CADR emulator (I've edited/formatted his comments and added some links for this blog entry. The ">" markers indicate my comments):
"Regarding the MIT LispM source code:So, it looks like it will soon be possible to create derivative works based on the LispM source code. Hmmm, "a small PCB board with PC mouse, keyboard and video connectors which contains an FPGA and will run the CADR code" - I'd definitely want one of those under my Christmas tree! :-)
>Is it publicly available from anywhere? I'm sure a
>lot of people would love to have a look at the code.
Not yet, but very shortly. I've been meaning to do it for 6 months but real work has gotten in my way.
>Do you have any timetable for when you expect to have something
>available? Are there any details that you are willing to share at the
>moment? I would love to comment on your progress on my blog if you
>have no objection and you can give me a bit more detail on where
>you're at with the project.
No objections at all. No timetable either :-) Bjorn and I are working in our spare time but making good progress. Our plan is to get things to the point where you can run the CADR and talk to the file server and recompile sources. I'd say we're a few weeks away but close.
I promise to release the MIT sources before that. They're all ready to go. I could put them up this weekend.
Regarding progress on the CADR emulator:
I've got the CADR booting and working. It's almost talking to a FILE server - working on that as we speak.
I recently have been working on a "conversion" of the original CADR cad files into verilog. It's coming along - it currently executes a few thousand microcode instructions in simulation.
Some day I plan to make a small PCB board with PC mouse, keyboard and video connectors which contains an FPGA and will run the CADR code - I think it would make a nice Christmas gift :-)
Recently Bjorn Victor, from Sweden has taken an interest in the simulator. He's been running lisp under ITS on a simulated PDP-10. He has gotten Chaosnet to work on ITS and we're conspiring to get the two to talk. He's been helping me track down some bugs and the networking is starting to work. It's more stable now and almost usable. A few more bugs to fix.
I'm actually debugging (as we speak) a FILE server running on linux.
ps: Bjorn Victor says "Good news: I fixed my chaos problems, and can now use my ITS system over FILE, SUPDUP, FINGER, etc."
This is nice because most of the CADR's were hosted by a PDP-10 runing ITS.
We're running Chaosnet encapsulated in UDP, btw.
>Does that mean that you are running the FILE server under a CADR
>emulation on linux or have you re-implemented the FILE server?
I'm running a native FILE server on linux. I ported the MIT unix chaos code to linux a long time ago but it was so messy and ugly I have not kept it up (probably should have, but I'm lazy).
To allow the simulators to talk I made a 'server' which accepts unix socket connections and broadcasts the messages to all the connected processes. This makes a local 'wire' which I can monitor.
One of the processes is a protocol server which knows NCP and Chaosnet. A lot of the code is stolen from the MIT in-kernel chaosnet code. It will, in turn, fork a FILE server much like the chconnect code.
It's a little roundabout but very debuggable, which is what I wanted. I needed a break from nasty kernel mode debugging.
(I'm feeling guilty and should get the old code working in a 2.4 & 2.6 kernel...)
Bjorn did the same thing with ITS and has made a "bridge" between them."
The MIT CADR Lisp Machine Source code is located here.
Many thanks to MIT, Brad Parker and all those involved in making this code available!
Update-2005-10-02: Zach Beane has set up a torrent as well: http://www.xach.com/bt/mit-20041117.tar.gz.torrent