MACSimizing TECO

MACSimizing TECO: A Note on the Invention of EMACS

Adrienne Gaye Thompson [1]

2009-11-02

By 1976, packages of TECO macros abounded in the MIT AI lab, each aiming to maximize the scope of TECO's editing power.[2][3] These included TECMAC (developed by John L. Kulp and Richard L. Bryan), TMACS (developed by Eugene C. Ciccarelli, Charles B. Frankston, Richard D. Greenblatt, Earl A. Killian, David A. Moon, Guy L. Steele Jr., and others), RMODE (developed by Robert V. Baron), DOC (developed by Vaughan R. Pratt), and MACROS (developed by R. Bruce Roberts). Guy Steele, recognizing that the diversity of these TECO-based editors had introduced unnecessary complexity into the hacker environment, proposed that the packages be integrated using their most useful commands.[4]

Steele set about designing the key bindings for the new symmetrical command set, engaging Stallman in discussions about his idea. They began the implementation together - starting with no code - working intensely for the first night of development on the basic mechanism to look up and run commands. Leadership of the project then changed hands with Stallman as principal developer. Steele contributed "little chunks of code" in the days following,[5] resuming hacking with Stallman as a dyad for a single 10-hour marathon session to code an indentation macro before dropping out altogether. Stallman finished the project: "By New Years in 1977, [the new editor] had made significant inroads against TECMAC/TMACS; and in another year or so the older editors had both succumbed to software rot".[6]

It was Stallman's innovations two years earlier, however, that marked the genesis of the editor we now know as "EMACS" - an acronym for "Editing MACroS". Inspired by the Stanford AI Lab's edit program named "E", Stallman considered how to harness TECO's potential for real-time display. [7] He found a rudimentary display-editing mode invented for TECO by Carl Mikkelsen named "Control-R" after the key-chord used to execute it. Stallman re-built Control-R mode from scratch, introducing the facility to store and retrieve command strings, or macros, bound to user-definable key-chords, thereby transforming the text editor into a user-programmable WYSIWYG editor. Fellow hacker John Kulp had asked Stallman to set aside a couple of keys to run macros,[8] and Stallman's genius immediately translated Kulp's request into the recognition that he could make it possible for a user to rebind any and all keys - endowing TECO with the capability for "Editing MACroS".

Stallman's invention sparked a wave of ideas, experimentation, and competition among his fellow hackers, leading to the emergence of TMACS, TECMAC, and the other macro packages. Steele's decision to unify these macro sets began a new phase in the evolution of EMACS. Stallman's work overtook, surpassed, and eventually displaced many of the features in these packages, as he set out to develop the editor we have come to revere with quasi-religious fervour.

In 1990, Stallman received the Grace Murray Hopper award "[f]or pioneering work in the development of the extensible editor EMACS (Editing Macros)". [9]

Notes

1. This account on the invention of EMACS is based on information from email discussions I had with Richard Stallman and Guy Steele (over the periods 27 July to 7 August 2007, 27 November to 8 December 2007, and 23-31 October 2009), as well as written records kept by them. I regard any conflicting information presented elsewhere to be inaccurate, as I believe this to be a true description of the events noted.

2. Greenberg, Bernard, S., Multics Emacs: The History, Design and

Implementation, 15 August 1979.

3. Stallman, Richard EMACS: The Extensible, Customizable Display Editor , paper delivered March 1982 to the ACM Conference on Text Processing.

4. Stallman, Richard, The EMACS Full-Screen Editor (1987).

5. Above, note 1, Steele's email of 27 November 2007.

6. Crispin, Mark, message to alt.folklore.computers, 19 January 1990.

7. Above, note 3.

8. Above, note 1, Stallman's email of 7 December 2007.

9. Grace Murray Hopper Award to Richard Stallman, Citation, 1990.