Main Page | See live article | Alphabetical index

XEmacs

A text editor derived from Emacs, XEmacs capitalises on good GUI support, mainly for the X Window System. XEmacs runs on almost any Unix-like operating system (inside X or on a text terminal), as well as on Microsoft Windows. It also runs on Mac OS X with an X server, and a native Carbon version is in alpha test.

Like Emacs, XEmacs is free software available under the GNU General Public License. When speaking about an unspecified version of Emacs/XEmacs, the generic lowercase term emacs (plural emacsen) is used.

XEmacs was created in 1991 as Lucid Emacs by Lucid Inc. to support their proprietory Energize environment. Lucid forked the code, developing and maintaining their own version of Emacs, because they were dissatisfied with the maintenance of the original Emacs. Their version of Emacs was very popular, so when Lucid went out of business in 1994, the code was picked up by another development team, and maintained under its current name, "XEmacs".

Differences between Emacs and XEmacs

Emacs and XEmacs have different development philosophies. XEmacs is more open to experimentation, and is often the first to offer new features, such as inline images, variable fonts, and terminal coloring. Detractors complain that because of its more aggressive, features-driven approach, XEmacs internals are less consistent and less extensively documented than Emacs.

It is a popular myth that XEmacs did not have proper support for text terminals (or emulators such as xterm). This was never true; XEmacs always ran without a windowing system. In fact, for a period of time it even had some terminal features, such as coloring, that Emacs lacked.

XEmacs often directly integrates upstream code for independently maintained lisp packages, whereas the Emacs project performs testing on every package distributed with it. As a result, major lisp packages in XEmacs are usually more up-to-date.

Historically, XEmacs had a more open development environment, including anonymous CVS access and publicly accessible development mailing lists. However, with the release of Emacs 21 in 2001, the Emacs project has provided both functions. The development models of the two projects are now very similar.

XEmacs still has somewhat better X toolkit support, and experimental Gtk+ support. Its multi-lingual support is poorer, but is optional; internationalization is hard-coded into Emacs.

Programmers who wish their Emacs Lisp packages to work with both emacsen have to be careful to avoid features specific to either. For example, XEmacs introduced the concept of extents, a region of text that can be assigned attributes such as color and font. A similar but not identical feature, overlays, was later added to Emacs. XEmacs project policy is to maintain compatibility with the Emacs API. For example, it provides a compatibility layer implementing overlays via the native extent functionality.

The schism between Emacs and XEmacs is one of the more well-known examples of a code fork (another being the splitting of BSD from AT&T Unix.) Both emacsen are licensed under the GNU GPL (in fact, the copyright of much XEmacs code is owned by the Free Software Foundation), so code could in principle be freely exchanged between the two projects. However, the Emacs project has a policy of including only contributions whose copyright has been assigned to the FSF, for the purpose of copyleft enforcement. This is not always possible with XEmacs code.

There is significant rivalry between the two camps, which is why new features in either editor usually show up in the other sooner or later. On the other hand, many developers contribute to both projects; in particular, many major lisp subsystems, such as Gnus and Dired, are developed to work with both.

Project Status

XEmacs development happens on three branches: stable, gamma, and beta, with beta being the first to get new features, but being the least tested. As of November 2003, the current versions in these branches were 21.4.14 and 21.5.16, without any gamma release. Future version numbers will follow a scheme similar to Linux, with an odd second number signalling a development version, and an even second number for stable releases.

Version 20.0 was released on 9 February 1997, and 21.0 on 12 July 1998.

Further Reading