From jameson@riscan.riscan.com Sun Mar 31 18:45:04 CST 1996 Newsgroups: alt.os.multics Subject: 110 days of Early Multics Emacs History Summary: Followup-To: Distribution: world Organization: Realcase Software Research Corp Keywords: Here is short set of notes on the early history of Multics Emacs, apparently written down by BSG at the time the events occurred. I saved the notes because I thought they were inspirational---I think they do a good job of capturing how new ideas are born and implemented. As judged by the dates on the entries, the speed of implementation still impresses me. In essence, the notes suggest the following: -- some people look at existing editors for a few days; -- they consider implementation issues over a Friday night dinner; -- and after two hours of work *that same Friday night* they get a functional Emacs lisp editor working. Here is a short summary: Day 1 = 3/3/78 Day 1 - basic editor, insert/delete chars and lines, move point Day 2 - per-character input in raw tty mode (from console?) - this was put into a hacked copy of Server Telnet Day 3 - per-character input across the arpanet - per-character input from a Multics process (a first) (this was the birth of the later 'breakall' tty mode) Day 4 - the redisplay is begun Day 25 - ITS users get to use the new editor regularly - MIT users use the editor via the ARPANET Day 42 - Greenberg submits an MTB calling to distribute Emacs with Multics Day 48 - two-window mode is implemented Day 54 - Johnson submits an MCR that proposes breakall mode. Day 83 - Bill York's self-documentation package installed Day 87 - PL/1 mode is implemented, with automatic declaration - a dozen different terminals are supported by this time Day 106 - BSG/Weinreb make an efficient variant of SUPDUP to support Emacs Day 109 - breakall mode becomes available to users - Emacs response is excellent under normal midday Multics load The long (original) version of the notes follows. -------------------- A brief history of Multics EMACS Compiled by BSG 1/78 Bernie Greenberg gives 3rd presentation of SIPB Lisp Course to 100 takers. Edits notes with Dan Weinreb on AI, using ITS emacs, becomes convinced that this is the way to go. 2/78 A discussion group "Multics Editor People" is formed, debating whether or not Multics ever could support a real time editor, and debating various degrees of distribution of the editing task between central system and terminals. The opposing views held by the Elder and Younger Frankston brothers becomes a lively feature; some, pointing to the work of Ciccarelli, who developed a video-oriented character-at-a-time line editor for Network use on Multics, begin to feel that the only way to investigate the situation is to construct such an editor. 2/78 Greenberg expresses views about editors and TV's to Larry Johnson, Multics Communications expert ("FNPmeister"), who asks for a demonstration. One is scheduled. 3/3/78 1:00 PM. A Demonstration of ITS EMACS is held on the CISL Delta Data 4000. MC system is used, under heavy load, at 300 baud. Lack of organization, lack of preparation, hardware problems, low speed, load, and other difficulties contribute to an almost totally ineffective presentation. Some, however, were impressed. C. Frankston, E. Killian, E. Ciccarelli, and others participated. ~3:00 PM. Larry Johnston was impressed. He says, "We should be able to do that", and devises a FNP (communications processor) patch that enables character-at-a-time input on Multics. C. Frankston witnesses this. ~4:00 PM In a conversation to C. Frankston, Greenberg muses, "you know, if we implemented that in flat-out PL/I, we could do that even better". A little consideration of modularity and extensibility soon leads to Lisp as a chosen implementation language. ~6:00 PM SIPB Friday Night dinner is eaten at Colleen's. Various parties throw around ideas about right way to implement such an editor on Multics. The ideas of Bruce Edwards, who had recently implemented an editor in Lisp, stand out as important. ~10:00 PM C. Frankston drives Edwards and Greenberg to Brookline, in heavy snow. Edwards visits Greenberg's apartment (he lives down the block). They log in, and two hours, some beer and tty paper later, a functional editor in Lisp exists. This program (e_) could build and split lines, insert and delete characters and lines, and move its pointer about. It has no display or other output capability, and is driven by calls to Lisp functions. 3/4/78 A character reader is developed which allows e_ to be driven by reading characters ("^R mode") from the tty. Greenberg takes over all development from this point. 3/5/78 (Evening) Weinreb, having studied Ciccarelli's code, ascertains what is needed to read single characters from Multics ArpaNET. A version of Server Telnet is hacked up to allow programs to read single characters, and a normal Multics process does character-input for the first time. (Ciccarelli's technique invloved special processes). Soon, a version of the incipient editor exists which performs character input over the network, while the normal (FNP) access paths to Multics are limited to using Johnson's patch on the CISL machine. 3/6/78 (Morning) The software constructed that weekend is run on the CISL development machine, printing out via debugging functions, displaying a cursor as , but interacting character-at-a-time via a reconstruction of Johnson's patch. Few understand or appreciate the significance. 3/6/78 (Evening) Display support is started. Dave Moon is present at the birth of the redisplay. The redisplay is designed to take advantage of the explicit line structure maintained by the editor. At first, it supports only the Delta Data 4000, but is designed so that terminal support is substitutable. 3/9/78 Olin Sibert hangs out at CISL all night during an intensive debugging session of new redisplay. He develops a 2-terminal support package that runs the display as a slave terminal. Two-terminal use of this debugging feature becomes heavy during the next weeks, and many falsely conclude that two terminals are necessary to use the editor. 3/27/78 A mailing list of users of the Multics Editor is formed by Earl Killian. Killian, an avid supporter from the beginning, provides many good ideas and illuminations of "why ITS did it this or that way". Killian constructs, with Greenberg, a DataMedia 2500 control package, allowing ITS users to use the editor via a feature in ITS user telnet. Use from ITS becomes regular. People at MIT begin using editor via the ARPANET, which supports character-at-a-time interaction. 4/13/78 Greenberg writes a promulgates, officially, a Honeywell Multics Technical Bulletin proposing that Multics EMACS, as he now calls it, be shipped as part of Multics. Containing scathing denunciations of Multics communications support and existant editors, and proposing the support and distribution of Lisp as part of the deal, the document is distributed throughout the Multics technical organization. Rather than being meeted with shrieks of horror, the document is acclaimed, and enthusiasm for its ideas shown by all concerned. 4/19 (Evening) Two-window mode is implemented. The first of several "hairy features" of note, this feature had a birth of fire, killing people's Lisps and processes for a few days before it stabilized. Richard Lamson, of IPC, becomes a regular user, and subjects himself to buggy software and new features. His detailed comments and accurate reporting lead to rapid development. 4/25/78 A Multics Change Request is submitted by Larry Johnson proposing a "new teletype mode to break on every character" for the explicit reason of "support of Bernie's editor". Proposed as an experimental feature, "breakall mode" passes through the Change Review Board with only 1 dissenting vote, an issue of documentation. 5/78 (~ 5/20) Bill (archy) York joins CISL, becomes active editor co-developer and development assistant, acquires skill to the point of being able to write editor extensions in real time during demonstrations. On 5/24, the self-documentation package, done largely by him, is installed. 5/28 PL/I mode is implemented, comprising logic which parses all PL/I statements, using algorithms from the compiler. The most significant in a series of optional "packages", which included console-message processing and automatic declaration, this package signifies the kind of feature indicating the editor reaching maturity. By this time, at least a dozen terminals are supported. EMACS gets production use on the CISL machine. People in Phoenix play with it regularly. 6/26/78 Greenberg and Weinreb design and implement the "Youngers of Zion" ARPANET protocol, a variant of SUPDUP in which most screen management is done by the user telnet process. Multics EMACS becomes totally effective on ITS TV's, and potentially usable from any ITS terminal. 6/29/78 Enough support for "breakall" mode to allow it to be used without patches is installed on MIT Multics. Lamson and Gary Palter use it for the first time via dialup lines to MIT in character-response mode, and note excellent performance under normal midday load. Although response is excellent, resource consumption of the editor appears to be a large problem. ----------------------------------------------------- I MUST THANK: Richard Stallman, for Perpetrating ITS EMACS upon the world, and promulgating the EMACS philosophies, most significantly, the separation of Editing and Programming Languages in an editor. Earl Killian, for seeing this thing through every step of the way and guiding it John Gintell, my boss, and HISI, for allowing me to work on it all! Bruce Edwards, for the day when editor caro factus erat, Dave Moon and Eugene Ciccarelli, for many incisive and straightforward comments as Multics EMACS grew and misgrew. Richard Lamson and Gary Palter for submitting themselves to my software regularly, and giving accurate bug reports. Larry Johnson, Fnpmeister, for inventing and implementing breakall mode, and expressing an interest in the entire issue with increasing fortitude, and he and Jerry Stern for implementing it. Bill York, for contributing large amounts of time to the improvement of this editor, and frequently pointing directions in which to go. Dan Weinreb, perpetrator of EINE, for help all along and all kinds of support. Charles Frankston and all the people at SIPB for violent and powerful support throughout.