Last active
September 11, 2018 18:22
-
-
Save lispm/8c6783be2f5a3d41b7592ba3b2c453ea to your computer and use it in GitHub Desktop.
GLS in 2007 about the earliest EMACS development
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<GLS is Guy Steele, RMS is Richard Stallman, DLW is Dan Weinreb, Moon is David Moon, Ed is Ed | |
Schwalenberg, CBF is Charles Frankston, EAK is Earl Killian, ECC is Gene Cicarelli, | |
RMF is Bob Frankston, and JLK is John Kulp.> | |
--- | |
I think all of us have been relying on our memories, which can | |
fail in various ways. Last time around I checked my file folder | |
of notes about Emacs, which has some useful information, but | |
not a lot about who did what. Now I have some more information | |
to offer. I’m going to quote email I received during the last | |
part of 1976. The attached PDF files are scans I made today from | |
my paper archives of that email. I may have committed typographical | |
errors in quoting the email below; if in doubt, consult the scans. | |
On October 23, 1976, RMS sent this email to GLS: | |
RMS@MIT-AI 10/23/76 02:11:39 | |
To: GLS at MIT-AI | |
I HAVE HACKED ?MACS A LOT. IT NOW HAS | |
AN IMPROVED LOADER MACRO AND SUITABLE PURIFY MACRO. | |
THE PURIFY MACRO HAS BEEN DEBUYGGED, AND WINS; | |
I HAVEN’T TESTED THE LOADER ON THE RESULT THOUGH. | |
Comments: (a) At this point the new proposed consolidated set of | |
TECO macros for real-time editing was called “?”. I had chosen this | |
name as a kind of stubborn joke, because a non-alphabetical character | |
as the name of a program was just a little harder to invoke from DDT; | |
also, it followed the example of the @ program, which had just recently | |
taken over from the @ command in TECO for creating program listings | |
—another project that I started and then RMS markedly improved over | |
the years. However, the @ program was useless without command-line | |
arguments, so no one ever wanted to type @^K to start it, whereas | |
it was desirable to start a frequently-used editor by typing a single-character | |
name and then ^K, and I knew it, and I was being a bit mulish about it. | |
(b) This email was sent just to GLS. From the fact that he was | |
reporting progress to me, I infer from this that RMS did not yet regard | |
himself as the “owner” or “principal hacker” of this project. (While the | |
AI Lab culture did support the notion that in principle anyone could hack | |
on any program, in practice it was also well-understood that certain | |
people had superior knowledge about certain programs, and that superior | |
knowledge was consulted and paid due respect. I wouldn’t have dreamed | |
of hacking on TECO without consulting RMS, and he would not have hacked | |
on LISP without consulting JONL or me.) | |
On October 29, 1976, GLS sent this email to RMS: | |
GLS@MIT-AI 10/29/76 15:20:31 | |
To: RMS at MIT-AI | |
CC: GLS at MIT-AI | |
See .TECO.;?VARS > for a ? variables macro. | |
It has some hair for pushing and popping | |
variables as well as getting and setting them. | |
Suggestions appreciated for reducing hair. | |
Comment: Six days later, I am still working on the implementation. | |
I think that explodes the pretty myth that the project was handed over | |
to RMS literally overnight. (However, as we will see, it did occur fairly | |
quickly, as such things go.) | |
On October 31, 1976, RMS sent this email to GLS: | |
RMS@MIT-AI 10/31/76 01:15:37 | |
To: GLS at MIT-AI | |
I MOVED ?VARS INTO ?MACS | |
UNDER THE NAME ^^ VARIABLES (THAT’S 2 UPARROWS). | |
I PARTIALLY DEBUGGED IT; READING AND WRITING WORK BUT | |
NOT PUSHING AND POPPING. | |
TO GET A ?, DO :XT ?; | |
THEN DO MMLIST COMMANDS$$ AND MMLIST REDEFINITIONS$$. | |
Comment: I believe that by this point I thought of RMS as principal | |
hacker on the project, or at least the most active contributor; I’m feeding | |
him little chunks of code as I am able, and he does the integration. | |
The next day: | |
RMS@MIT-AI 11/01/76 03:53:45 | |
To: GLS at MIT-AI | |
m.v now works completely. | |
List commands implemented. | |
lisp indentation command works (meta-I). | |
MIDAS, TECO and LISP editing modes defined. | |
Comments: RMS still sends me reports on his progress. (The Lisp indentation | |
macro was the “big one” that he and I worked on together in a single ten-hour | |
hack session.) | |
On November 10: | |
RMS@MIT-AI 11/10/76 21:46:03 | |
To: EAK at MIT-AI, CBF at MIT-AI, GLS at MIT-AI, ED at MIT-AI | |
To: DLW at MIT-AI, MOON at MIT-AI | |
Unless anyone can think of a better idea, I think we should | |
rename ? to E. | |
DLW@MIT-AI 11/10/76 21:49:07 | |
To: MOON ay MIT-AI, DLW at MIT-AI, ED at MIT-AI, GLS at MIT-AI | |
To: CBF at MIT-AI, EAK at MIT-AI, RMS at MIT-AI | |
Another idea is to call it formally “QMARK” with a link | |
existing for “QM” . | |
Comment: Note that MOON is among the interested parties. Most of | |
these addressees were implementors of macro packages that were | |
predecessors of ?MACS and had user constituencies. | |
GLS@MIT-AI 11/11/76 14:43:03 | |
To: MOON ay MIT-AI, DLW at MIT-AI, ED at MIT-AI, GLS at MIT-AI | |
To: CBF at MIT-AI, EAK at MIT-AI, RMS at MIT-AI | |
Well, for hack value TS ? ought to exist (yes, you CAN | |
get DDT to load it under that name!), but E is a good | |
abbreviation. | |
Comment: Finally, I capitulate on the name (thank goodness). | |
Later that day: | |
GLS@MIT-AI 11/11/76 16:39:50 | |
To: CBF at MIT-AI, EAK at MIT-AI, ED at MIT-AI, MOON ay MIT-AI | |
To: DLW at MIT-AI, RMS at MIT-AI | |
CC: GLS at MIT-AI | |
My current tentative suggestions for ? command placement | |
are in TGQ;?CHARS > on AI. (They aren’t even completely | |
what I want, now that I have talked with RMS, but at | |
least some desirable features are listed even if they aren’t | |
where we want them to be.) | |
Comment: The key bindings are still in flux, and I’m still | |
involved in determining those key bindings. | |
MOON@MIT-AI 11/11/76 21:28:51 | |
To: INFO-E at MIT-AI | |
You are now on the INFO-E @ AI mailing list. (Used to be called INFO-?). | |
Comment: Moon creates the INFO-E mailing list. Looks like the name | |
change has been agreed upon. | |
RMS@MIT-AI 11/12/76 03:53:31 | |
To: INFO-E at MIT-AI | |
LOTS OF COMMANDS MOVED. | |
NEW PURIFIER (USING FO) NOW UP, GIVING | |
TREMENDOUD INCREASE IN SPEED, ESPECIALLY FOR DOCUMENTATION | |
MACROS. | |
DLW sends several messages to (BUG EMACS) and (BUG E); he and | |
Moon are the principal testers of the new editor, shaking out many | |
bugs. | |
MOON@MIT-AI 11/14/76 04:40:49 Re: Changes | |
To: INFO-E at MIT-AI | |
[1] RMS’s many bug fixes and changes of this afternoon compiled and installed. | |
[2] MM LIST FILES renamed to MM LIST LOADED FILES | |
[3] New MM macros: | |
LIST FILES compact directory listing | |
LIST DIRECTORIES compact, sorted listing of M.F.D. | |
LIST TECO FS FLAGS compact, sorted listing of Teco FS flags | |
DUMP RMAIL don’t try it! | |
RMAIL temporary access to rmail – seems to have | |
a few bugs. In particular, don’t try | |
to get the minibuffer inside rmail’s ^R | |
command – you’ll be sorry! | |
EDIT ..D edit the delimiter table | |
VIEW Q-REGISTER try to view any type of Q-register | |
[4] Note that MM LIST should be an acceptable | |
abbreviation for most such commands. Note that RMAIL needs | |
to be rewritten. | |
[5] For those who don’t know MM DIRED has worked for a few days. | |
Comment: From the fact that Moon first cites RMS’s work in item [1] | |
and then goes on to cite other changes to EMACS, this seems to imply | |
that these other items are things Moon was working on (and they strike | |
me as his style of things to work on). | |
MOON@MIT-AI 11/14/76 19:14:06 | |
To: (BUG E) at MIT-AI | |
M.I lossage – if you are using a multicharacter command, e.g. ^XB..Z, | |
and type part of it fast, you end up seeing at the bottom of the screen | |
something like “.:z” – it seems the right thing would be to save up all | |
non-echoed chars in a string in ..0 (which q-r gets reset at the right times) | |
and echo them all when echoing starts. And flush the colon. This would | |
also allow hairy commands to use long prompts by putting a string in ..0 | |
before calling .I the first time. | |
Comment: This message testifies to Moon’s intimate knowledge of the inner | |
workings of TECO and the fledgling EMACS. | |
RMS@MIT-AI 11/16/76 22:05:41 | |
To: INFO-E at MIT-AI | |
EMACS^K and E^K now exist, and run links to EMACS;TS >. | |
:NT EMACS; will still load up from scratch. | |
Note that the file [PRFY] is no longer loaded by default. | |
Comment: the birth of EMACS as a stand-alone program | |
under that name (and the name E)! (Though note that the | |
(BUG EMACS) mailing list had already existed for a couple | |
of days, and that the previous way to start the macros was | |
to say “:NT EMACS”.) | |
gls@MIT-AI (Sent by BRS@MIT-AI) 11/17/76 12:44:06 | |
To: (BUG E) at MIT-AI | |
Grumble! If CTRL-META-[ is gobbled, then I can’t use it to insert Q! | |
Comment: This was a reference to the Crunchly cartoon of 5/19/1973. | |
(You can see it in _The New Hacker’s Dictionary_.) | |
MOON@MIT-AI 11/17/76 23:32:45 Re: Featurama EMACS | |
To: INFO-EMACS at MIT-AI | |
MM TECORD $ teco command $ | |
^R puts current line at top of screen, ^U^R at bottom, | |
^U^U^R puts top of current defun, paragraph, etc. at top of screen. | |
Warning- this may get moved to another character. | |
Multiple consecutive deletes act like one as far as the ..K ring | |
is concerned; thus one ^Y will get it all back. | |
^K accepts negative arguments just like meta and control-meta versions. | |
A few bugs fixed. | |
Comment: Moon is still involved. | |
RMS@MIT-AI 11/19/76 04:49:41 | |
To: GLS at MIT-AI, MOON at MIT-AI, DLW at MIT-AI, ED at MIT-AI | |
I have just written some winning Meta, Control, and Control-Meta | |
prefix characters, and I am desperately in need of a good idea | |
of where to put them. The Meta and Control-Meta prefixes should | |
be easy to type on ordinary terminals. One idea is to put them | |
on ^W and ^L, but then 1) where to put ^R Kill Region, and | |
2) does ^L^L clear the screen or move left? | |
A possible place for the Control-Meta prefix is ^C, | |
which has the advantace of being easy to remember for | |
an ex-TECMAC user. | |
Comment: RMS confers with me, DLW, Ed, and Moon on design. | |
On 11/27/76, RMS sends out a long message to INFO-E reporting | |
mane changes he has made. By this point RMS appears to be doing | |
most of the work, and I think Moon is doing much less implementation | |
work. | |
On 11/30/76, RMS send a message to INFO-E, and two more on 12/05/76, | |
and three more on 12/11/76. | |
On 12/10/76, JLK sent a message to INFO-E announcing 18 or 19 | |
new features. Comment: John Kulp (an implementor of one of | |
the predecessor macro packages) was actively involved in EMACS | |
development as late as December 10. | |
My conclusions: (1) Clearly, by the end of 1976 and thereafter, RMS was | |
doing the bulk of EMACS development work, but it was not an “overnight” | |
takeover. For a period of seven weeks, anyway, he had some implementation | |
help from others (at least GLS, MOON, and JLK), and certainly had help | |
with design and debugging from these and others (DLW, EAK, ED). | |
He may have become the “principal hacker” more quickly than that, | |
however, perhaps in the space of a week or less; but remember that | |
in the AI lab culture, what I here call “principal hacker” (not a term used | |
at the time) was a “first among equals”, not an exclusive owner. | |
(2) Moon’s involvement was not “hidden”. | |
(3) RMS is responsible for the names “E” and “EMACS”. | |
RMS still deserves 99% or 99.9% or 99.99% or 99.999% of the credit | |
for taking a package of TECO macros and turning it into the most | |
powerful editor on the planet, twice (first in TECO and then with ELISP), | |
pouring in enormous amounts of effort and creativity over many years. | |
He also deserves credit for working with the early user community to | |
work out the initial set of key bindings and command names. I don’t | |
think RMS has any reason to deny the people who helped him out during | |
the first few months their due share of credit. They gave of their time | |
and creativity freely, in the best spirit of contributing to the community. | |
–GLS |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment