From [email protected] 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.