History


Warning! Everything written in here has been taken from memory. There may be errors. If you spot any, please make sure you tell me.

It all began in 1989, when I became system manager on the VMS cluster at the Department of Telecommunications Theory (called TTT) of the Royal Institute of Technology in Stockholm. I knew hardly anything about VMS by then, so I started by checking if Emacs was present. It was, so I had an editor I was familiar with (it was version 18.55). Well, then I had to learn about the OS itself, so I started reading the manuals. The User's Guide to begin with ("hmm, DCL looks like a nice language!" :-)), then the System Manager's Guide, and then on to the big orange wall (we were at version 4.something by then). A few weeks later, I upgraded to version 4.6 (or was it 4.7? I don't recall).

After a while, I was ready to check what Emacs on VMS could do for me. I had quite some knowledge of Unix, so I tried a few things I had done there. For example, I wanted to use GNUS (which I think was at version 2.something by then). Uh-oh, no network support! Hmm, OK, so how does this work? We had an early version of CMU-TCP back then (was it version 4.something?) and the manual was at best incomprehensible (and incomplete at that. I don't blame CMU for it, though, could as well have been my predecessor...), so I didn't care for direct TCP/IP support. BUT, there was also the possibility to do it all through a subprocess, running a small tiny program called "tcp", which I managed to compile, god knows how... OK, trying to set that up, *WHAM*, no subprocess support. "Huh? But I thought I read..." I went through the Emacs manual again, saw that it had some command line buffer through a subprocess, and thought that means it has subprocess support. I then started to dig through the source, and finally concluded that the "subprocess support" was just an ugly hack to give "command line buffer support" and nothing else! Back to the drawing table.

A few weeks later, when I had tested many different things with pipe() and vfork(), which worked sometimes and failed other times. I was confused and frustrated, and having talked to others about it, I was told that VMS didn't do subprocesses like Unix does, and that subprocess support is therefore out of the question in Emacs for VMS. I sighed and gave it up for the moment being, because my knowledge on VMS was still not good enough. No need to say, I was a little disappointed.

Meanwhile, I kept on managing my cluster, getting better every day. I also passed some time read USENET News (and most particularly the groups gnu.emacs.vms, gnu.emacs.source, comp.os.vms, comp.lang.c and comp.lang.lisp). One day, in the spring 1991, appeared a message on I don't recall which newsgroup, where the then official porter of Emacs to VMS (Johan Vromans <jv@mh.nl>) said he had too many other things to do to do any more work on Emacs, and was therefore looking for someone to continue working on it. My interest in Emacs suddenly renewed, I quickly sent him a message saying I'd be willing to take over immediatelly. He sent me the patches he had. Those patches applied on version 18.55, but since version 18.57 was out by then, I decided to try to apply them on that version instead. I as almost easy. Version 18.58 followed shortly thereafter.

At the same time, I installed MX on the cluster. This is a very important ingredient in this story, because that product already had a file server by mail back then! This allowed me to start distributing my patches through mail, which I also did.

In the summer 1991, Scott Snyder <snyder@d0gsc.fnal.gov> posted a message in some newsgroup saying he had hacked true subprocess and network support for Emacs 18.57. I quickly asked if I could grab his hack and incorporate it into my port. He said I could. Ta-da! There I had an Emacs with network and subprocess support! I could run GNUS! And looking at the code, I was finally enlightened! For your information, that implementation consisted of a couple of event flags (one to signal incoming data, one to signal a dying process) and some state info.

A little later, version 18.59 came out. It was not too hard to apply the 18.58-18.59 diffs on my version. I continued hacking on version 18.59 until...

In the winter 1992, I was told I would no longer be needed at TTT, due to restructuring, and lack of money. It meant I was out of job by the summer 1993. The TTT cluster was going to be incorporated into the large cluster that the Department of Electrical Engineering (called E) had, which meant that my Emacs hacking would be without a base to work on it. Fortunatelly, the system manager (Stellan Lagerström <stellanl@e.kth.se>) was (and still is) a good friend of mine, so I asked him kindly if I could use his cluster to continue my work on Emacs. He said I could (he isn't stupid. He naturelly concluded it would mean he would have a fresh Emacs all the time :-)).

In the spring 1993, I started to use anonymous FTP as main distribution method. It was placed on the computers of the computer club Stacken, ftp.vms.stacken.kth.se.

In the summer 1993, I was approached by Jim Blandy, then at the FSF. He wanted to know if I wanted to do the port of Emacs 19 to VMS. Back then, it was version 19.5, and was NOT available to the public. Of course, I answered yes, and started working on it immediatelly. I noticed that someone (was it Roland B. Roberts?) had already done some work on it, especially the network and subprocess part. That implementation was far from done, but had a couple of good ideas, the most important being to use one event flags for each subprocess or network connection. I had it working correctly by the end of the summer, but other things were needed to work on as well, so I started...

I very quickly noticed the new feature: configuration scripts. There was nothing like them for VMS (well, there was a small hack, but it didn't compare, at all...). I wanted it to work on VMS as well, so I grabbed autoconf and started hacking a VMS version. My friends, let me tell you, that's one of the hardest things I've ever done! And did I know DCL after that! And of course, it also meant that m4 got ported (which was hardly more than a compilation and a link).

Unfortunatelly, the FSF (more particularly RMS), thought that VMS support was too big, and therefore declined on my patches. Very unfortunate in my opinion, but that's his decision. I decided to keep on working on Emacs 19 by myself.

Anyway, I had so far ported Emacs 18, Emacs 19, autoconf and m4. I then wanted to port the latest GNU diff (unified diffs had just appeared, and I thought they were a good thing), and why not the latest GNU patch, and how about flex and bison? And texinfo! Well, there we have a good basis for a project, so I started The GNU on VMS Project. It didn't take long time before I created the first web pages for it. They were hosted by the Department of Electrical Engineering: http://www.e.kth.se/elev/levitte/gnu/gnu.html, later http://www.e.kth.se/~levitte/gnu/gnu.html.

On 11-Jun-1994, I produced my last set of patches for Emacs 18.59. I had version numbers on the patch sets by then, and the version number for that patch set was 3.1.16. Since then, I turned my full concentration on Emacs 19. In august 1994, Emacs 19.18 for VMS was released. It was unfortunatelly very buggy, but what is more unfortunate is that it's the version that is STILL on the Freeware CD produced by Digital!

In the spring 1996, I was told that the E cluster was going to be dismantled by the end of the year, and thus only run DEC Unix. So it was time for me to move all the stuff once again. Fortunatelly, I now have my own VAXstation to play with, to which I have moved the FTP archive and the WWW pages.

1996-07-06: the WWW pages have definitelly stopped living at E. I will send an official letter of Thanks to E for the time that has been.


These are the credits that came with Emacs 18.59:

Roland B Roberts <roland@nsrl.rochester.edu>
For various bug fixes and for fixing dired-compress and dired-uncompress.
Joakim Sernbrant <joakims@front.se>
For various bug fixes and suggestions, mostly with the X-windows code.
Stellan Lagerström <stellanl@e.kth.se>
For helping me with the code for Compose-characters on X11, and testing the handling of VMS directory specifications.
Hal Brand <BRAND@addvax.llnl.gov>
For providing me with patches to make Emacs understand VMS file specifications even better, and for giving me an RMAIL which works with VMS, and also for all bug fixes.
Thomas Bellman <Bellman@Lysator.LiU.Se> & Howard Gayle <Howard@Ericsson.Se>
For the work they've done to make Emacs display 8bit characters as they are. I just snarfed it. Their comments are collected in VMSPATCHES.GAYLE-README
Bengt Andersson <Bengt.Andersson@telelogic.se>
For giving me the sources for libOldX. Now we have X menus in GNU Emacs for VMS!
Scott Snyder <snyder@d0gsc.fnal.gov>
For his work with network streams and subprocesses! His comments are collected in VMSPATCHES.SNYDER-README
Ed Bailey <Bailey@vaxe.niehs.nih.gov>
For doing a lot of testing and giving me a lot of feedback!
Johan Vromans <jv@mh.nl>
For providing me with the patches for GNU Emacs 18.55

Richard Levitte, for The GNU on VMS Project <levitte@vms.gnu.ai.mit.edu>
Last modified: Saturday, July 13 1996, 17:13:00 1996