Contents

Between 1987 and 1993 significant delays occurred in bringing out a new version of GNU Emacs (presumed to be version 19).[1] In the late 1980s, Richard P. Gabriel's Lucid Inc. faced a requirement to ship Emacs to support the Energize C++IDE. So Lucid recruited a team to improve and extend the code,[2] with the intention that their new version, released in 1991, would form the basis of GNU Emacs version 19. However, they did not have time to wait for their changes to be accepted by the Free Software Foundation (FSF).[3] Lucid continued developing and maintaining their version of Emacs, while the FSF released version 19 of GNU Emacs a year later, while merging some of the code and adapting some other parts.[4]

When Lucid went out of business in 1994, other developers picked up the code.[5] Companies such as Sun Microsystems wanted to carry on shipping Lucid Emacs, however, using the trademark had become legally ambiguous because no one knew who would eventually control the trademark "Lucid". Accordingly the "X" in XEmacs represents a compromise among the parties involved in developing XEmacs.[6]

The "X" in XEmacs is thus not related to the X Window System. XEmacs has always supported text-based terminals and windowing systems other than X11. Installers can compile both XEmacs and GNU Emacs with and without X support. For a period of time XEmacs even had some terminal-specific features, such as coloring, that GNU Emacs lacked.

The software community generally refers to GNU Emacs, XEmacs (and a number of other similar editors) collectively or individually as emacsen (by analogy with boxen) or as emacs, since they both take their inspiration from the original TECO Emacs.

XEmacs text-editing features commands to manipulate words and paragraphs (deleting them, moving them, moving through them, and so forth), syntax highlighting for making source code easier to read, and "keyboard macros" for performing arbitrary batches of editing commands defined by the user.

XEmacs has comprehensive online help, as well as five manuals available from the XEmacs website. XEmacs supports many human languages as well as editing-modes for many programming and markup-languages. XEmacs runs on many operating systems including Unix/Linux, BSDs and Mac OS X. Running on Mac OS requires X11; while development has started[update] on a native Carbon version. Two versions of XEmacs for the Microsoft Windows environment exist: a native installer and a Cygwin package.

Users can reconfigure almost all of the functionality in the editor by using the Emacs Lisp language. Changes to the Lisp code do not require the user to restart or recompile the editor. Programmers have made available many pre-written Lisp extensions.

Many packages exist to extend and supplement the capabilities of XEmacs. Users can either download them piecemeal through XEmacs' package manager or apply them in bulk using the xemacs-sumo package or "sumo tarballs".[7] Since XEmacs 21.1 functionality has been moved out of XEmacs core and made available separately as packages. This allows users to exclude packages they have no need for. XEmacs has had a package manager for over a decade before GNU Emacs developed one, but XEmacs must be restarted before new packages are loaded.

From the project's beginnings, the developers of XEmacs aimed to have a frequent release-cycle: currently[update] 2 to 3 releases appear per year, which is a slowdown from earlier years.[8] They also aimed for more openness to experimentation, and XEmacs often offers new features before other emacsen—pioneering (for example) inline images, variable fonts and terminal coloring. Over the years, the developers have extensively rewritten the code in order to improve consistency and to follow modern programming conventions stressing data abstraction. XEmacs has a packaging system for independently maintained Lisp packages. The latest[update] version has GTK+ support[9] and a native Carbon port for Mac OS X.[10]

XEmacs has always had a very open development-environment, including anonymous CVS, later Mercurial access and publicly accessible development mailing-lists. XEmacs comes with a 500+ page internals manual (Wing, et al., 2004).

The XEmacs project has a policy of maintaining compatibility with the GNU Emacs API. For example, it provides a compatibility-layer implementing overlays via the native extent functionality. "[T]he XEmacs developers strive to keep their code compatible with GNU Emacs, especially on the Lisp level."[11]

Support for Unicode has become a problem for XEmacs. As of 2005, the released version depends on the unmaintained package called Mule-UCS to support Unicode, while the development branch of XEmacs has had robust native support for external Unicode encodings since May 2002, but the internal Mule character sets lack completeness, and development seems stalled as of September 2005.[12]

XEmacs development features three branches: stable, gamma, and beta,[8] with beta getting new features first, but potentially having less testing, stability and security. The developers released version 20.0 on 9 February 1997, and version 21.0 on 12 July 1998. As of January 2009, the stable branch had reached version 21.4.22 and the beta branch version 21.5.28. No gamma releases exist as of 2007[update]. With the release of XEmacs 21.4.0, version numbers follow a scheme whereby an odd second number signals a development-version, and an even second number indicates a stable release.

Several of XEmacs's principal developers have published accounts of the split between XEmacs and GNU Emacs, for example, Stephen Turnbull's summary[13] of the arguments from both sides. One of the main disagreements involves different views of copyright assignment. The FSF sees copyright assignment to the FSF as necessary to allow it to defend the code against GPL violations,[14] while the XEmacs developers have argued that the lack of copyright assignment has allowed major companies to get involved, as sometimes companies can license their code but due to a cautious attitude concerning fiduciary duties to shareholders, companies may have trouble in getting permission to assign away code completely. The Free Software Foundation holds copyright of much of the XEmacs code because of prior copyright assignment during merge attempts and cross-development.[15] Whether a piece of new XEmacs code enters GNU Emacs often depends on the willingness of that individual contributor to assign the code to the FSF. New features in either editor usually show up in the other sooner or later. Furthermore, many developers contribute to both projects; in particular, many major packages, such as Gnus and Dired, undergo development to work with both.[citation needed]

XEmacs development has slowed, with the most recent stable version 21.4.22 released in January 2009. XEmacs has incorporated much code from GNU Emacs in recent versions[16] while GNU Emacs has implemented many formerly XEmacs-only features. This has led some users to proclaim XEmacs' death, advocating that its developers contribute to GNU Emacs instead.[17]

^"Xemacs vs GNU Emacs". XEmacs is GNU software because it's a modified version of a GNU program. And it is GNU software because the FSF is the copyright holder for most of it... XEmacs has no choice, because much of its code is copyrighted by the Free Software Foundation, and is only available to XEmacs under the GPL.