PDP-10 / its

Incompatible Timesharing System
Other
850 stars 80 forks source link

Early Emacs editors #1354

Closed larsbrinkhoff closed 5 years ago

larsbrinkhoff commented 5 years ago

I believe the first Emacs copies were, in order:

  1. EINE
  2. SINE
  3. Multics Emacs

I would like to collect some evidence here.

larsbrinkhoff commented 5 years ago

Some early EMACS file timestamps:

Moon wrote:

In August 1976, a bunch of hackers decided it was time to write a new editor, using the sharable-library and named-commands (MM) technology developed by Tmacs, but intended for general use. Tmacs was not really set up to be used by anyone but its maintainers, and I think every user had a different set of key bindings, although by that time it was in use by perhaps eight or ten people. The new editor, which was initially called "?" because that was a command name which could not be typed to DDT, was supposed to take full advantage of the TV keyboards, to have a more sensible and consistent set of commands, to have good self-documentation, and to be faster than Tecmac. ? was intended to woo people away from Tecmac.

larsbrinkhoff commented 5 years ago

Earliest file timestamp referring to EINE is LMDOC; EINED 5, dated 1977-11-09.

larsbrinkhoff commented 5 years ago

Anderson's SINE thesis:
https://dspace.mit.edu/handle/1721.1/16038

This editor [TECO EMACS] became a model for several other implementations. The first was one written for the LISP Machine at MIT's Artificial Intelligence Laboratory by Daniel Weinreb

Another implementation started somewhat after mine was written by Bernard Greenberg on Honeywell's Multics operating System also in LISP

larsbrinkhoff commented 5 years ago

About the inception of Multics Emacs, from MC: EAK; EMACS LORE:


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 Johnson 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.
eswenson1 commented 5 years ago

Wow! Never knew that story.

lispwright commented 5 years ago

Might be worth checking Craig A. Finseth's documentation, started out as an undergrad? MIT EECS thesis, then a book, here's the appendix on implementations.

larsbrinkhoff commented 5 years ago

Thanks, I do see Finseth's work every time I do searches on Emacs history. He still posts his list of implementations to comp.emacs occasionally.

larsbrinkhoff commented 5 years ago

So we have:

EDIT: Updated to reflect new information below.

larsbrinkhoff commented 5 years ago

BUG-EINE mailing list. First message is from "7 Jan 78".

https://ml.cddddr.org/bug-eine/

larsbrinkhoff commented 5 years ago

Link to SINE source code:

https://github.com/ArchMach/Sine

larsbrinkhoff commented 4 years ago

I have found EINE sources on ToTS tape 9004365. Earliest timestamp is 1977-09-28.

ams commented 4 years ago

There is no mention of ZWEI here?

larsbrinkhoff commented 4 years ago

I consider Zwei more well documented elsewhere. But do feel free to add information.

larsbrinkhoff commented 3 years ago

@johnsonjh, please add MINCE info here.

johnsonjh commented 3 years ago

Keeping in mind that I'm only an accidental "expert" (thus, not actually an expert at all) regarding MINCE, the following should be considered facts as they reference verifiable sources:

MINCE 1: 1979

MINCE 2: 1980

Users Group

Post-MINCE

Notable Users at MIT

Further Information

johnsonjh commented 3 years ago

A bit more info … DDJ and era interviews indicate that BDS C was working by January 1979 (at least in some state), and released around April 1979, earlier than previously mentioned above.

Leor Zolman was from MIT, the Unicorn guys were from MIT, and articles from this time indicate that others, all (obviously) connected with MIT as well, had been using the BDS C software before it was generally released as a product.

Indeed, an 01/1980 DDJ article mentions BDS C was available at that time, and that the Tiny-C people had been using it with success for quite awhile before that date.

A contemporary interview with Leor Zolman lines up, as he states he knew the Tiny-C people well (but was not aware of Small-C at the time.)

I'm considering writing him to ask if he might recall when he provided his software to the Unicorn people!

I normally wouldn't bother someone for just this kind of question, especially since BDS C history is well documented - and I sure wouldn't expect anyone to remember a sale from 42 years before, but, in this case, it's likely that the Unicorn people must have been among the very first users.

Also, the fact that the MOTU AMETHYST product actually bundled BDS C points to a special relationship, so it's likely worth asking. I'd not be surprised if Mark of the Unicorn was the very first reseller of BDS C.

So, it is a possibility that the first MINCE could have been any time after 01/79.

Now, I looked at many DDJ and BYTE scans, as well as the CP/M 2 source code comments, and can date the release of CP/M 2 to August 1979.

So, while it's possible that MINCE was begun earlier and adapted for CP/M 2, looking at the code makes me think it was not. Judgement call here too, but I've looked at a lot of CP/M code lately!

This all also lines up with the "late 1979" recollection linked above.

Now, until definitive answers come back, this is nothing more than a somewhat well informed guess... but, based on the rate of development (as evidenced by the comments) and, assuming that work progressed more quickly at first than later on (...well known fact that fixing bugs and polishing a release takes longer than getting the core functionality done ... the 80:20 rule ... etc) ... I'd conclude, with high confidence, that the first workable version of MINCE must be dated to sometime between September and December of 1979.

larsbrinkhoff commented 3 years ago

I found a message to BUG-LISPM that DLW named the Lisp machine editor "EINE" on August 8th, 1977.

I see Lispm editor sources going back to 1975, predating EMACS by a year or so. I wonder if it was more TECO-like at first, but morphing to be more like EMACS in 1977?

larsbrinkhoff commented 3 years ago

I see in a source file called "ED1" from February 1977 that the command set was already at that point similar to Emacs. I found no useful Lispm editor before that.

BobKerns commented 3 years ago

Regarding Multics Emacs, I believe there's more to the story about the front-end hackery that came a bit later. (I'm pretty sure it was later than the character-at-a-time hack).

Rather than a character-at-a-time, the front end gained the ability to do local echo for straight typing, and only pass off input to the back end when an editing command or other exceptional condition arose (such as line-wrap). This cut the cost of using Emacs substantially and boosted its perceived responsiveness.

I think BSG was responsible for the hack? Or at least I learned of it from him? I think the story is probably to be found somewhere on multics.org.

eswenson1 commented 3 years ago

Yes, BSG was responsible for the design and implementation. There is a Multics MTB on the subject (MTB-418, https://multicians.org/mtbs/MTB-418.pdf). The mechanism was called "echo negotiation" and is described in this MTB.

larsbrinkhoff commented 1 year ago

The earliest reference to ZWEI I can find is this message:

DLW@MIT-AI 11/14/78 19:18:50
To: EAK at MIT-MC
ZWEI is the second version of EINE, of course.  It stands for
Zwei Was Eine Initially.  It is a complete rewrite for about
six reasons which I will type in one of these days.  It wan't
announced in mail because everyone here heard about it by word
of mouth.