On the Origin of Emacs in 1976

(Date: 23 Jul 2024)

Summary: EMACS was developed at the MIT AI Lab in 1976. The specifics of the origin have been documented by different people in various places.

There is an interesting thread which was discussed on the blog of the late Dan Weinreb, and preserved by archive.org. Ultimately, Guy Steele pulled up his records (in the form of printed emails). The below is an extract which is of historical interest and includes emails from the first couple months of Emacs in 1976. I quote some sections and include the verbatim text at the bottom, which starts with an ITS email from RMS to GLS.

Dan Weinreb introduces

And now, here’s the mail from Guy Steele. I think this is the best information we are ever going to get, and that this is the last word on the topic.

The summary from Guy Steele is:-

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

The sources are: Beginning of thread https://web.archive.org/web/20121107150708/http://danweinreb.org/blog/rebuttal-to-stallmans-story-about-the-formation-of-symbolics-and-lmi#comments why did symbolics fail rebuttal

Moon Moon Says: November 15th, 2007 at 9:08 pm

All true, so far as I can remember.

But in all fairness I have to say that Stallman greatly improved Emacs after he “liberated” it from Guy and me.

The early history of Emacs was followed-up compiled by Adrienne:

The question of Steele’s role in the creation and development of EMACS appears to be an old issue that continues to rear its head, although Stallman addressed this as far back as 1987 in his article “Emacs the Full Screen Editor” [8] and just this year in the comp.lang.lisp thread “teco, rms, gosling, mocklisp” on 28 July: [2, viper-2]

| Guy Steel played a role in starting the development of Emacs in | 1975. He developed the key bindings, I designed the internal | platform, and we worked together for the first night of | implementation. After that he dropped out.

Guy Steele concurred: [3, Pitman 8 August]

| Except for the minor misspelling of my name :-) , I concur with | everything in RMS’ response. Feel free to post this reply to the | discussion thread.

Adrienne Says: November 25th, 2007 at 4:13 pm

Dan Weinreb:

I contacted Stallman drawing his attention to the comments posted in this blog. With regard to your assertions that Guy L. Steele Jr. and David Moon were the authors of the original TECO-based Emacs, Stallman has requested that I inform you that your claim is false.

In an email message to me dated Thursday, 22 November 2007, Stallman stated:

| Weinreb is wrong. Moon was never involved in developing Emacs.

In a further message dated Saturday, 24 November 2007, Stallman reiterated:

| Please post that I told you that this claim is false. Steele and I | worked together for the first night of writing code for Emacs, and | then Steele dropped out. Moon was not involved.

Sincerely Adrienne

cc * Richard M. Stallman * Guy L. Steele, Jr.

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

Full verbatim quotation from Dan Weinreb:

dlweinreb Says:
November 28th, 2007 at 2:37 am

I wasn’t going to keep this origin-of-Emacs topic going, but today,
Guy Steele today sent a very long piece of mail to me, Richard
Stallman, and Adrienne Thompson, in reply to mail from Stallman, who
asked Guy:

Weinreb says that Moon did something important (though he is vague
about what) in starting Emacs. If Moon was involved, he must have
hidden it from me. Do you know what’s going on here?

First some preliminary comments from me:

- Secret decoder: GLS is Guy Steele, RMS is of course Richard
Stallman, DLW is Dan Weinreb (me), Moon is David Moon, Ed is Ed
Schwalenberg who was beta-testing along with me, CBF is Charles
Frankston, EAK is Earl Killian, ECC is Gene Cicarelli, RMF is Bob
Frankston, and JLK is John Kulp.

- I agree that I’m somewhat vague on precisely which things Moon
did. I remember that there was a part of “?” called the “loader” that
was part of the underlying infrastructure, and I recall that Moon
developed this initially. Evidently Stallman improved upon it later
(see first email below), as he surely improved upon everything as time
went by. Moon also worked on the “MM macros”, which meant “commands
that had descriptive English names instead of being one or two
keystrokes”, corresponding to today’s Meta-X commands. The MM macros
feature was brought into “?” from one of the Emacs predecessors,
sometimes called TMACS, that was developed and used by Moon,
CBF, EAK, and ECC. RMF had already figured out how to extract the MM commands
from TMACS and insert them into TECMAC, one of the other Emacs
predecessors, and I borrowed (copied) that code from him. It soon
became clear that what we had here was a mess, and the right thing to
do was to all join forces and come up with a single code base that had
the best of all the ideas in it. Thus was the project born that
turned into Emacs.

- The reason the mail looks funny is that it predates the Internet;
some of what you see is Arpanet mail, and some (like the first one) is
internal ITS mail.

- Guy sent PDF files of scans, which I have no way of posting here,
but he quotes all the important stuff below.

- It would be even better had there been email from the previous
week, but, gee, you can’t have everything.

And now, here’s the mail from Guy Steele. I think this is the
best information we are ever going to get, and that this is
the last word on the topic.

——

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