3. A History of Emacs

XEmacs is a powerful, customizable text editor and development
environment. It began in 1991 as Lucid Emacs, which was in turn
derived from GNU Emacs, a program written by Richard Stallman of the
Free Software Foundation. GNU Emacs dates back to 1985 and was
modelled after Unipress Emacs, an editor written by James Gosling in
1981 and based on a series of other “Emacs”-like editors, including
EINE (EINE Is Not EMACS), c. 1976, by Dan Weinreb, which run on the
MIT Lisp Machine and was the first Emacs written in Lisp; ZWEI (ZWEI
Was EINE Initially), c. 1978, by Dan Weinreb and Mike McMahon; Multics
Emacs, c. 1978, by Bernie Greenberg, which was written in MacLisp and
also used Lisp as its extension language; and ZMACS, c. 1980, a direct
descendant of ZWEI that on ran the Symbolics LM-2, LMI LispM, and
later, TI Explorer (1983-1989). These in turn were inspired by the
first Emacs, a package called EMACS, written in 1976 by Richard
Stallman, Guy Steele, and Dave Moon. This was a merger of TECMAC and
TMACS, a pair of “TECO-macro realtime editors” written by Guy Steele,
Dave Moon, Richard Greenblatt, Charles Frankston, et al., and added a
dynamic loader and Meta-key cmds. It ran under ITS (the Incompatible
Timesharing System) on a DEC PDP 10 and under TWENEX on a Tops-20 and
was written in TECO and PDP 10 assembly. ITS was one of the first
time-sharing operating systems and dates back well before Unix. ITS,
TECO, and Emacs were products of a group of people at MIT who called
themselves “hackers”, who shared an idealistic belief system about
the free exchange of information and were fanatical in their devotion
to and time spent with computers. (The hacker subculture dates back to
the late 1950’s at MIT and is described in detail in Steven Levy’s
book Hackers. This book also includes a lot of information
about Stallman himself and the development of Lisp, a programming
language developed at MIT that underlies Emacs.)

3.1 Through Version 18

As described above, Emacs began life in the mid-1970’s as a series of
editor macros for TECO, an early editor on the PDP-10. In the early
1980’s it was rewritten in C as a collaboration between Richard
M. Stallman (RMS) and James Gosling (the creator of Java); its extension
language was known as Mocklisp. This version of Emacs-in-C formed
the basis for the early versions of GNU Emacs and also for Gosling’s
Unipress Emacs, a commercial product. Because of bad blood between the
two over the issue of commercialism, RMS pretty much disowned this
collaboration, referring to it as “Gosling Emacs”.

At this point we pick up with a time line of events. (A broader timeline
is available at “Emacs Timeline”.)

NOTE: Sometimes there are two release dates listed below. In
this case, the first one is the date listed in the source code, and
the second one is when the official announcement was made on
Usenet. (Sometimes, one or the other of the dates is missing, and then
the date below reflects the only existing one.)

Unipress Emacs, a $395 commercial product, was released on May 6, 1983.
This was an outgrowth of the Emacs-in-C collaboration written by Gosling
and RMS.

The first entry on ‘net.emacs’ available on Google is dated
August 20, 1984:

From: B.BURGER (btb@hogpc.UUCP)
Subject: Arrow Key Problems
Newsgroups: net.emacs
Date: 1984-08-20 11:15:46 PST
I would greatly appreciate some help getting my arrow keys to work
with EMACS 4.5 on an AT&T 3B20. My terminal is an AT&T PC6300
(IBM-compatible) using an AT&T 4410 terminal emulator. While this
may not yet be a common configuration, I believe the same problem
has come up using an hp2621 emulator or a real live vt100.
The problem is that, when I press an arrow key, it isn't
transmitted/read by emacs (one or the other) correctly.
The 4410 terminal description that I'm using defines up=M-[A
(it appears as ^[[A, with the initial ^[ as one character).
Pressing Ctrl-Q up_arrow while in emacs shows me the same thing.
On the vt100 the same thing happens but the terminal file says up=M-A
(it appears as ^[A). I've tried every other imaginable up= but get
the same results. I've also been unsuccessful writing a macro that
understands what my keyboard is saying.
Any ideas on how I can get the arrow keys to do something?
Anything? Thanks in advance.
--Bruce Burger AT&T-Information Systems Freehold, NJ
{...ihnp4!}hogpc!btb (201) 577-5230

GNU Emacs versions 1.0 through 1.12 were apparently released in early
1985. The next version after this was 13.0; there were no GNU Emacs
versions 2 through 12.

GNU Emacs version 13.0? 1.0? was released on March 20, 1985. This
appears to be the initial public release. This was also based on this
same Emacs-in-C collaboration.

Here is the release notice:

From: Chuck Wegrzyn (wegrzyn@encore.UUCP)
Subject: Public Domain EMACS available from GNU Project
Newsgroups: net.emacs, net.general, net.unix, net.unix-wizards
Date: 1985-03-20 08:03:20 PST
The GNU project has released its first major subsystem,
the EMACS editor. This editor is a sophisticated screen
editor that is compatible and comparable with the EMACS
editors being sold by UniPress and CCA. It comes with
Mock Lisp ( did you know that UniPress trademarked MLISP??),
and all the little bells and features most of us expect
with EMACS.
The GNU version of EMACS, written by Richard Stallman, is
available for distribution. The distribution includes all
source code for EMACS and a source code level debugger.
Furthermore, under the GNU project banner, the EMACS system
can be distributed (in source code form) by one and all.
I was thinking of sending out the source code over the net,
but resisted : it is over 1Mbyte of code. If there is
enough demand, I will add a UUCP dial-in to our system, or
send out tapes, or ... ?
Is anyone interested in EMACS? If so, please tell me how
you think I should distribute it?
Chuck Wegrzyn
{allegra,decvax,ihnp4,princeton}!encore!wegrzyn

GNU Emacs version 15.10 was released on April 11, 1985.

GNU Emacs version 15.34 was released on May 7, 1985. This appears
to be the last release of version 15.

GNU Emacs version 16 (first released version was 16.56) was released on
July 15, 1985. All Gosling code was removed due to potential copyright
problems with the code.

Version 16.57: released on September 16, 1985.

Versions 16.58, 16.59: released on September 17, 1985.

Version 16.60: released on September 19, 1985. These later version 16’s
incorporated patches from the net, esp. for getting Emacs to work under
System V.

Version 17.36 (first official v17 release) released on December 20,
1985. Included a TeX-able user manual. First official unpatched
version that worked on vanilla System V machines.

Version 17.43 (second official v17 release) released on January 25,
1986.

Version 17.45 released on January 30, 1986.

Version 17.46 released on February 4, 1986.

Version 17.48 released on February 10, 1986 (February 9 on net.emacs).

Version 17.49 released on February 12, 1986.

Version 17.55 released on March 18, 1986.

Version 17.57 released on March 27, 1986.

Version 17.58 released on April 4, 1986.

Version 17.61 released on April 12 (?), 1986 (April 22 on net.emacs).

Version 17.63 released on May 7, 1986.

Version 17.64 released on May 12, 1986.

Version 18.24 (a beta version) released on October 2, 1986.

Version 18.30 (a beta version) released on November 15, 1986.

Version 18.31 (a beta version) released on November 23, 1986.

Version 18.32 (a beta version) released on December 6 or 7, 1986.

Version 18.33 (a beta version) released on December 12, 1986.

Version 18.35 (a beta version) released on January 5, 1987.

Version 18.36 (a beta version) released on January 21, 1987.

January 27, 1987: The Great Usenet Renaming. net.emacs is now
comp.emacs.

Version 18.37 (a beta version) released on February 9 or 12, 1987.

Version 18.38 (a beta version) released on March 2 or 3, 1987.

Version 18.39 (a beta version) released on March 14, 1987.

Version 18.40 (a beta version) released on March 18, 1987.

Version 18.41 (the first “official” release) released on March 22,
1987.

Version 18.45 released on June 2, 1987.

Version 18.46 released on June 8 or 9, 1987.

Version 18.47 released on June 10 or 18, 1987.

Version 18.48 released on August 30 or September 3, 1987.

Version 18.49 released on September 16 or 18, 1987.

Version 18.50 released on February 11 or 13, 1988.

Version 18.51 released on May 6 or 7, 1988.

Version 18.52 released on September 1, 1988.

Version 18.53 released on February 23 or 24, 1989.

Version 18.54 released on April 26, 1989.

Version 18.55 released on August 18 or 23, 1989. This is the earliest version
that is still available by FTP. (Verified in November 2004.)

3.3 Lucid Emacs

Lucid Emacs was developed by the (now-defunct) Lucid Inc., a maker of
C++ and Lisp development environments. It began when Lucid decided they
wanted to use Emacs as the editor and cornerstone of their C++
development environment (called “Energize”). They needed many features
that were not available in the existing version of GNU Emacs (version
18.5something), in particular good and integrated support for GUI
elements such as mouse support, multiple fonts, multiple window-system
windows, etc. A branch of GNU Emacs called Epoch, written at the
University of Illinois, existed that supplied many of these features;
however, Lucid needed more than what existed in Epoch. At the time, the
Free Software Foundation was working on version 19 of Emacs (this was
sometime around 1991), which was planned to have similar features, and
so Lucid decided to work with the Free Software Foundation. Their plan
was to add features that they needed, and coordinate with the FSF so
that the features would get included back into Emacs version 19.

Delays in the release of version 19 occurred, however (resulting in it
finally being released more than a year after what was initially
planned), and Lucid encountered unexpected technical resistance in
getting their changes merged back into version 19, so they decided to
release their own version of Emacs, which became Lucid Emacs 19.0.

The initial authors of Lucid Emacs were Matthieu Devin, Harlan Sexton,
and Eric Benson, and the work was later taken over by Jamie Zawinski,
who became “Mr. Lucid Emacs” for many releases.

A time line for Lucid Emacs is

Version 19.0 shipped with Energize 1.0, April 1992.

Version 19.1 released June 4, 1992.

Version 19.2 released June 19, 1992.

Version 19.3 released September 9, 1992.

Version 19.4 released January 21, 1993.

Version 19.5 released February 5, 1993. This was a repackaging of 19.4 with a
few bug fixes and shipped with Energize 2.0. It was a trade-show giveaway
and never released to the net.

Version 19.6 released April 9, 1993.

Version 19.7 was a repackaging of 19.6 with a few bug fixes and
shipped with Energize 2.1. Never released to the net.

Version 19.10 released May 27, 1994. (Uses configure; code merged
from GNU Emacs 19.23 beta and further merging with Epoch 4.0) Known as
“Lucid Emacs” when shipped by Lucid, and as “XEmacs” when shipped by
Sun; but Lucid went out of business a few days later and it’s unclear
very many copies of 19.10 were released by Lucid. (Last release by
Jamie Zawinski.)

3.4 GNU Emacs 19

About a year after the initial release of Lucid Emacs, the FSF
released a beta of their version of Emacs 19 (referred to here as “GNU
Emacs”). By this time, the current version of Lucid Emacs was
19.6. (Strangely, the first released beta from the FSF was GNU Emacs
19.7.) A time line for GNU Emacs version 19 is

Version 19.7 beta released May 22, 1993. First public beta v19 release.

Version 19.8 beta released May 25 or 27, 1993.

Version 19.9 beta released May 27, 1993.

Version 19.10 beta released May 30, 1993.

Version 19.11 beta released June 1, 1993.

Version 19.12 beta released June 1 or 2, 1993.

Version 19.13 beta released June 8, 1993.

Version 19.14 beta released June 17, 1993.

Version 19.15 beta released June 19, 1993.

Version 19.16 beta released July 6, 1993.

Version 19.17 beta released July 17, 1993.

Version 19.18 beta released August 8 or 9, 1993.

Version 19.19 beta released August 14 or 15, 1993.

Version 19.20 beta released November 11 or 17, 1993.

Version 19.21 beta released November 16 or 17, 1993.

Version 19.22 beta released November 27 or 28, 1993.

Version 19.23 beta released May 17, 1994.

Version 19.24 beta released May 23 or 16 (?), 1994.

Version 19.25 beta released May 30 or June 3, 1994.

Version 19.26 beta released September 7 or 11, 1994.

Version 19.27 beta released September 11 or 14, 1994.

Version 19.28 (first “official” release) released November 1, 1994.

Version 19.29 released June 19 or 21, 1995.

Version 19.30 released November 24, 1995.

Version 19.31 released May 25, 1996.

Version 19.32 released July 31, 1996.

Version 19.33 released August 11, 1996.

Version 19.34 released August 21, 1996.

Version 19.34b released September 6, 1996.

In some ways, GNU Emacs 19 was better than Lucid Emacs; in some ways,
worse. Lucid soon began incorporating features from GNU Emacs 19 into
Lucid Emacs; for the first year, the work was mostly done by Richard
Mlynarik, who had been working on and using GNU Emacs for a long time
(back as far as version 16 or 17). After that, Lucid folded and Sun
continued with XEmacs; further merging work has continued up through
the present, done mostly by Ben Wing but a good deal of synching was
done by Steve Baur in 1996 with GNU Emacs 19.34.

3.6 XEmacs

Around the time that Lucid was developing Energize, Sun Microsystems
was developing their own development environment (called “SPARCWorks”)
and also decided to use Emacs. They joined forces with the Epoch team
at the University of Illinois and later with Lucid. The maintainer of
the last-released version of Epoch was Marc Andreessen, but he dropped
out and the Epoch project, headed by Simon Kaplan, lured Chuck Thompson
away from a system administration job to become the primary Lucid Emacs
author for Epoch and Sun. Chuck’s area of specialty became the
redisplay engine (he replaced the old Lucid Emacs redisplay engine with
a ported version from Epoch and then later rewrote it from scratch).
Sun also hired Ben Wing (the author of Win-Emacs, a port of Lucid Emacs
to Microsoft Windows 3.1) in 1993, for what was initially a one-month
contract to fix some event problems but later became a many-year
involvement, punctuated by a six-month contract with Amdahl Corporation.

In 1994, Sun and Lucid agreed to rename Lucid Emacs to XEmacs (a name
not favorable to either company); the first release called XEmacs was
version 19.11. In June 1994, Lucid folded and Jamie quit to work for
the newly formed Mosaic Communications Corp., later Netscape
Communications Corp. (co-founded by the same Marc Andreessen, who had
quit his Epoch job to work on a graphical browser for the World Wide
Web). Chuck and Ben then become the primary authors and maintainers
of XEmacs, with Chuck putting out versions 19.11 through 19.14 in
conjunction with Ben. For 19.12 through 19.14, Chuck added the new
redisplay and various other display improvements and Ben added MULE
support (support for Asian and other languages), multi-device support,
glyphs, specifiers, and GIF/JPG/PNG support, and redesigned most of
the internal Lisp subsystems to better support the MULE work, display
work and the various other features being added to XEmacs. After
19.14 Chuck retired from XEmacs and Steve Baur stepped in as release
engineer. Ben Wing continued on as the primary author and architect
of XEmacs and has remained, sometimes on-and-off, with XEmacs until
the present day (late 2004), being responsible for perhaps 75% of all
the non-FSF code in the core (i.e. not the packages) of XEmacs.

Soon after 19.13 was released, work began in earnest on the MULE
internationalization code and the source tree was divided into two
development paths. The MULE version was initially called 19.20, but was
soon renamed to 20.0. In 1996 Martin Buchholz of Sun Microsystems took
over the care and feeding of it and worked on it in parallel with the
19.14 development that was occurring at the same time. After much work
by Martin, it was decided to release 20.0 ahead of 19.15 in February
1997. The source tree remained divided until 20.2 when the version 19
source was finally retired at version 19.16.

In 1997, Sun finally dropped all pretense of support for XEmacs and
Martin Buchholz left the company in November. Since then, and mostly
for the previous year, because Steve Baur was never paid to work on
XEmacs, XEmacs has existed solely on the contributions of volunteers
from the Free Software Community.

Between 1997 and 2000, MS-Windows support was added and stabilized by
Jonathan Harris, Andy Piper, Ben Wing and Kirill Katsnelson. Hrvoje
Niksic and Kyle Jones figured prominently in XEmacs development during
these same years. Steve Baur added the package system in 1997 (?),
and Olivier Galibert also added the portable dumper support around
2000. Martin Buchholz took over from Steve Baur as release manager in
late 1998 (?), and continued in this position through to early 2000
(?), when Stephen Turnbull took it over. XEmacs has also been split
into stable and experimental branches since early 1999, and Vin
Shelton has been the release manager of the stable branches since the
beginning. Ben Wing suffered severe pain problems throughout much of
this time, making him unable to use his hands, but he contributed when
he could, especially in the form of dictated design documents.

Starting around 2000, Kyle, Hrvoje, Martin and Kirill became less active.
Jonathan Harris had dropped out of the project around 1998, and Andy
Piper became mostly inactive by the year 2001 or 2002. New faces
appeared, however, and others continued strong:

Michael Sperber, who had been in the background as a beta tester for a
fair amount of time, began to assume a more active role. He revamped
the path-searching code at initialization time, did some major work on
the CVS repositories, and is in the process of a major project to
replace the garbage collector, which he is overseeing with some of his
students (e.g. Marcus Crestani).

Steve Youngs stepped in as package maintainer in late 1998 (?).

Stephen Turnbull has contained to produce the experimental beta
releases, write code when he can, produce many design documents, and
generally oversee the managerial aspects of the project.

Jerry James appeared on the scene in early 2002 and has contributed a
large amount of code, including the module subsystem, bignums, and
lots of other code cleanup.

Bill Perry, who had been active on and off in XEmacs since the early
1990’s (e.g. he did a fair amount of work on the JPG and PNG interface
and added the TIFF interface, in addition to writing the Emacs/W3
browser), added GTK support for XEmacs, a major project for which he
received a multi-month contract through BeOpen (?). He has since
disappeared but Malcolm Purvis has taken up the GTK project again and
is keeping it going when he has time.

Adrian Aichner is continuing to create and update the web site on
XEmacs Web Site, and is a particularly active
beta tester.

Ben Wing has recovered somewhat from the bad years of 1997 - 1999 and
has resumed his position as Architect of XEmacs and chief code
contributor to the project. He added Mule on Windows support, Unicode
support, the Internals manual (originally written by him during his
last days at Sun) and many other projects, and is now working on a new
behaviors system and cleanups of various other subsystems.

Vin Shelton continues to put out stable releases of XEmacs.

Many attempts have been made to merge XEmacs and GNU Emacs, but they
have consistently failed.

A more detailed history is contained in the XEmacs About page.

For more detailed information about the features added to each version,
see the files ‘NEWS’, ‘ONEWS’, and ‘OONEWS’ in the
‘etc/’ directory.

A time line for XEmacs is

version 19.11 (first XEmacs) released September 13, 1994.

Initial work on Mule support begins September 1994 by both Ben Wing and
Stig. Both projects got bogged down in other issues.

Mule work done in earnest from May through November, 1995 by Ben Wing.
Early on, much of the work involved Mule-izing and was incorporated
into 19.12 and 19.13. After the release of 19.13, further work was
forked onto a new development branch, which eventually became 20.0.

version 19.16 released October 31, 1997. (Bug-fix release. Faster
font-locking. Not much else.)

version 20.3 (the first stable version of XEmacs 20.x) released November 30,
1997.

version 20.4 released February 28, 1998.

version 21.0.60 released December 10, 1998. (The version naming scheme was
changed at this point: [a] the second version number is odd for stable
versions, even for beta versions; [b] a third version number is added,
replacing the “beta xxx” ending for beta versions and allowing for
periodic maintenance releases for stable versions. Therefore, 21.0 was
never “officially” released; similarly for 21.2, etc.)

version 21.0.61 released January 4, 1999.

version 21.0.63 released February 3, 1999.

version 21.0.64 released March 1, 1999.

version 21.0.65 released March 5, 1999.

version 21.0.66 released March 12, 1999.

version 21.0.67 released March 25, 1999.

version 21.1.2 released May 14, 1999. (This is the followup to 21.0.67.
The second version number was bumped to indicate the beginning of the
“stable” series.)

version 21.1.3 released June 26, 1999.

version 21.1.4 released July 8, 1999.

version 21.1.6 released August 14, 1999. (There was no 21.1.5.)

version 21.1.7 released September 26, 1999.

version 21.1.8 released November 2, 1999.

version 21.1.9 released February 13, 2000.

version 21.1.10 released May 7, 2000.

version 21.1.10a released June 24, 2000.

version 21.1.11 released July 18, 2000.

version 21.1.12 released August 5, 2000.

version 21.1.13 released January 7, 2001.

version 21.1.14 released January 27, 2001.

version 21.2.9 released February 3, 1999.

version 21.2.10 released February 5, 1999.

version 21.2.11 released March 1, 1999.

version 21.2.12 released March 5, 1999.

version 21.2.13 released March 12, 1999.

version 21.2.14 released May 14, 1999.

version 21.2.15 released June 4, 1999.

version 21.2.16 released June 11, 1999.

version 21.2.17 released June 22, 1999.

version 21.2.18 released July 14, 1999.

version 21.2.19 released July 30, 1999.

version 21.2.20 released November 10, 1999.

version 21.2.21 released November 28, 1999.

version 21.2.22 released November 29, 1999.

version 21.2.23 released December 7, 1999.

version 21.2.24 released December 14, 1999.

version 21.2.25 released December 24, 1999.

version 21.2.26 released December 31, 1999.

version 21.2.27 released January 18, 2000.

version 21.2.28 released February 7, 2000.

version 21.2.29 released February 16, 2000.

version 21.2.30 released February 21, 2000.

version 21.2.31 released February 23, 2000.

version 21.2.32 released March 20, 2000.

version 21.2.33 released May 1, 2000.

version 21.2.34 released May 28, 2000.

version 21.2.35 released July 19, 2000.

version 21.2.36 released October 4, 2000.

version 21.2.37 released November 14, 2000.

version 21.2.38 released December 5, 2000.

version 21.2.39 released December 31, 2000.

version 21.2.40 released January 8, 2001.

version 21.2.41 “Polyhymnia” released January 17, 2001.

version 21.2.42 “Poseidon” released January 20, 2001.

version 21.2.43 “Terspichore” released January 26, 2001.

version 21.2.44 “Thalia” released February 8, 2001.

version 21.2.45 “Thelxepeia” released February 23, 2001.

version 21.2.46 “Urania” released March 21, 2001.

version 21.2.47 “Zephir” released April 14, 2001.

XEmacs 21.4.0 “Solid Vapor” released April 16, 2001.

XEmacs 21.4.1 “Copyleft” released April 19, 2001.

XEmacs 21.4.2 “Developer-Friendly Unix APIs” released May 10, 2001.

XEmacs 21.4.3 “Academic Rigor” released May 17, 2001.

XEmacs 21.4.4 “Artificial Intelligence” released July 28, 2001.

XEmacs 21.4.5 “Civil Service” released October 23, 2001.

XEmacs 21.4.6 “Common Lisp” released December 17, 2001.

XEmacs 21.4.7 “Economic Science” released May 4, 2002.

XEmacs 21.4.8 “Honest Recruiter” released May 9, 2002.

XEmacs 21.4.9 “Informed Management” released August 23, 2002.

XEmacs 21.4.10 “Military Intelligence” released November 2, 2002.

XEmacs 21.4.11 “Native Windows TTY Support” released January 3, 2003.

XEmacs 21.4.12 “Portable Code” released January 15, 2003.

XEmacs 21.4.13 “Rational FORTRAN” released May 25, 2003.

XEmacs 21.4.14 “Reasonable Discussion” released September 3, 2003.

XEmacs 21.4.15 “Security Through Obscurity” released February 2, 2004.