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
they do a good job of capturing how new ideas are born and
mplemented.
As judged by the dates on the entries, the speed of implementation
-- 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
takers. Edits notes with Dan Weinreb on AI, using ITS emacs, becomes
convinced that this is the way to go.
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.
Multics Communications expert ("FNPmeister"), who asks for a
demonstration. One is scheduled.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
-----------------------------------------------------
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.