@tomjennings

I'm not sure what part is surprising here. Definitely Emacs arose on top of TECO via Control-R mode as described. I guess people are surprised there was something before emacs-lisp?

There was one semester of Sussman's course in between the old 6.031 and the revised 6.001 where they had been on an 11/45 and wanted to move to the 10, and I packaged up a thing called MinEmacs (a mini-emacs) that was not extensible and just had a basic set of commands I thought would keep people from getting confused.

Stallman did NOT like my packaging. He said that Emacs was not about the command set and that it could have vi's command set for all he cared, but that it was about extensibility [edit: i should've said customizability here, though both, the ability of users to program it, in other words. Sorry I have no quote.], and that I should not use reference to Emacs for what I did. I had been worried that some region commands were a bit surprising because Emacs did not visibly display the region and it was often baffling what happened to the region. He wrote a library called Novice that he said was the right way to do this. With it loaded, when you did one of the worrisome commands (which were still disabled by default) it would ask you if you knew what you were doing and wanted to turn the command on. This behavior became a standard part of emacs when the port was done to emacs-lisp, so there is no novice library now. But at the time it was a separately loadable thing.

I tell the story mainly because it gives a sense of what the identifying characteristic was of Lisp as I understood it based on his strong reaction to what I'd done.

@kentpitman @tomjennings Hunh. Were there other mini-emacs's before microemacs?

@davefischer @tomjennings

Dunno.

My editor mostly curtailed extension. not sure it it was smaller. Don't recall exactly how I built it. I'm not trying to compete for a place in history with the reimplementation crowd. I just feel like there WAS a lot of cool work at risk of not being recorded. People wrote papers on certain things, but they were encouraged to delete other things because diskspace was always at a premium.

So I feel like there was competition with emacs that I don't see represented in that summary page.

People wrote macro packages. Emacs was a particular set of macros, My impression as i arrived on scene was thst TECMAC was competing with EMACS, each of which packaged such macros.

I would at least like to see related work like that represented in such writeups, because just like with backquote/quasiquote in Lisp, there was a soup of ideas that a lot of people had implemented before something was finally standardized, and what later seemed like an invention was really more of a competition, not even competitive, just people getting work fone differently. Even bundling things into traded libraries was an evolving notion.

EMACS was part of a soup of parallel efforts that got whittled down because managing your own was a pain, and for some it meant more trading away their own ideas for someone else's just to get out from under maintenance burden.

Some people just had large libraries that got added on to one or another of these. Like Dave Moon's lunar library. There were two different TECO compilers, really compressors. They disagreed over whether to compress out the spaces or to require you to use underscores that would get replaced by spaces a similar problem exists today with verbose mode and regular expressions if you're looking to understand thaf problem.

Control-r mode in TECO, the idea of associating a sequence of editor commands with each keystroke, seem to me the real innovation. What I recall from the time, so I can't say for sure, was that it was Steele's suggestion and Stallman's implementation. I don't know if that was right but that was what I was told.

1/2 (this message ran long, and sorry for typos which maybe I'll fix later, but I'm in a hurry today and doing a lot of voice dictation of terms that are not transcribing well)

@kentpitman @tomjennings @davefischer
> EMACS was part of a soup of parallel efforts that got whittled down
> because managing your own was a pain, and for some it meant more
> trading away their own ideas for someone else's just to get out from
> under maintenance burden.

This makes me curious what was the cause of the maintenance work? OS
churn? Porting to new hardware? New file formats? Evolution of
the underlying programs and tools that they invoked?

@craigbro @tomjennings @davefischer

> what was the maintenance work

That's a really good question actually. I'm not sure if I can remember specifically, although I do know that there are new versions of things released from time to time. I think it was mostly pressure from users to fix bugs or add features.

TECO was remarkably stable as I recall, Vastly more so than Emacs lisp, which completely wrecks my extensions every single time there's a new major version. And with small exceptions, people mostly did not call other libraries as subroutines. They just built their libraries directly on TECO.

It's possible that ZBabyl, my library for Zmail compatibility on top of the Babyl malil reader made some assumptions about Babyl, but probably those were not violated very often, if at all.

I'm not saying the tenor of the time was that there was no software rot. Maclisp used to change incompatibly almost every week, and this is one of several pressures that led to Common Lisp. There is a tension between the need to develop new things and the need to be stable so that new things can be layered on top.

TECO may have had small things added to it, but I don't perceive that it changed a lot. At least I don't remember it impacting me much.

And the operating system did change but generally in compatible ways, not withstanding the dire nature of a name like incompatible time sharing system. That was mostly a name joke about CTSS (the compatible time sharing system) as I was told, though never bothered to check.

For example I think I mentioned some recent message about the echoin system call being added to the OS. TECO and/or emacs advantage of that, but I don't think it affected most programs, including most emacs libraries.

So I'm going to go out on a limb on the basis of far too little information, since I only maintained a few libraries, and say that most of it was just feature requests and in-library bug fixes in a time when it was popular to be very responsive to such things in order to maintain a customer base.

I wrote TeX mode. I think there was a trivial one before that, but I'd found it to trivial to use. As I recall it's concept of what a dollar sign was was just a variant of vertical bar in lisp, which was really inadequate. Mine added things like flashing matching dollar signs and separate managing of bracketing enclosure differently inside of dollar signs and outside. I was doing a lot of editing in a raw TeX and needed unbalanced things to work well. It had support for looking at things in comments that you could leave to say to view the buffer as different zones of correctness so that one type of graphical and completeness somewhere didn't poison the whole buffer's syntax analysis.
I hope/think the stuff I did on this got transliterated into emacs-lisp code.

I wrote a version of lisp mode that extended indentation to work like the list machine where it knew that some number of forms have special indentation before the body. This data driven so you could declare your own operators to have that same concept. I suspect somebody transliterated this as well to emacs-lisp.

And I wrote a mode line manager MODLIN, that my NEX library (an extension of Bob Kerns' EX library, which was partly borrowed from Lunar and other libraries). There was a lot of redundancy and not all of those libraries needed to survive.

NEX had a nice feature, which Jonathan Rees might have imported into gnex, I have not checked, of flashing the matching backquote when you type a comma in lisp mode. That was a case where an extension was needed because backquote was not originally in Lisp. And c-x # for keyboard macros arose just because I had a lot of things that were numbered and I wanted the keyboard macro to be able to insert successive numbers.

1/2

@craigbro @tomjennings @davefischer

But in general there was a rich commerce in suggestions because the ITS mailer, COMSAT, supported the notion that you could mail to BUG-anything or FEATURE-anything. If there was not a specific mailing list, it would go to BUG-RANDOM-PROGRAM or FEATURE-RANDOM-PROGRAM and a human would get it to the right place. So you could always report bugs on anything. And people genuinely took great pride in things they maintained. Which was why it was overhead cost some didn't want.

But an example of a problem in a library was that modeling would sometimes go off while in the mini buffer and the mini buffer load line was different than the regular mode line and it would get tangled while operating a mode line update at an interrupt level. Don't remember if that was a teco bug, an emacs bug or my bug. But complex shared state was an example of something where software could get out of alignment.

There was a library I did not write call LISPT which was a sort of precursor to things like slime, that ran as an inferior process to a lisp, abd it relied on coordinated support insude lisp, so I'm sure there were maintenance issues there. I saw recent references to LEDIT which also did a similar kind of thing. The reference I saw in the last month somewhere in social media seem to suggest that LEDIT was the thing everyone used, but LISPT what's the thing I and people I know were using. So again, more competition than sometimes people mention.

2/2