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.