XEmacs

From Wikipedia, the free encyclopedia

XEmacs

XEmacs
Developer: XEmacs community
Latest release: 21.4.19 / February 2, 2006
OS: Cross-platform
Use: Text editor
License: GNU General Public License
Website: XEmacs Website
Emacs
edit

XEmacs is a text editor which is forked from the GNU Emacs text editor. Its signature feature is good GUI support. XEmacs runs on almost any Unix-like operating system (inside X or in a text terminal), as well as on Microsoft Windows. It also runs on Mac OS X with X11.app; a native Carbon version is in alpha testing.

Like GNU Emacs, XEmacs is free software and available under the GNU General Public License. GNU Emacs, XEmacs and a number of other similar editors are generally referred to collectively or individually as emacsen and emacs, since they are all inspired by the original TECO Emacs.

XEmacs was created in 1991 as Lucid Emacs by Richard P. Gabriel's Lucid Inc. to support their proprietary Energize C++ IDE. Lucid forked the code, developing and maintaining their own version of Emacs, because they were dissatisfied with the maintenance of the original Emacs, and delays in the release of the next GNU 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 began to be maintained under its current name, "XEmacs" (the "X" coming from the X Window System).

Contents

[edit] Differences between GNU Emacs and XEmacs

GNU 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.

In the past, some detractors have complained that because of its more aggressive, features-driven approach, XEmacs internals are less consistent and less extensively documented than GNU Emacs. Actually, the opposite is true: XEmacs comes with a 140-page internals manual (Wing and Buchholz, 1997), making it one of the most well-documented software projects, and has been more open to change than GNU Emacs, with the result that its internals have been extensively rewritten to improve consistency and follow modern programming conventions stressing data abstraction. One of the sticking points in the various GNU Emacs/XEmacs merge talks, in fact, has been the XEmacs preference for abstract data interfaces as compared to Richard Stallman's preference for interfaces that use simple Lisp data types (cons, vector) and expose the internals.

It is a popular myth that XEmacs does not, or did not, support text terminals or anything other than X11. This is partly due to the name, which was due to a choice (sometimes seen as unfortunate) by Lucid, Inc. and Sun Microsystems when they were the primary developers of XEmacs. In fact, XEmacs has had proper support for text terminals (or emulators such as xterm) since version 19.12 (early 1995) and has supported Microsoft Windows natively since the late 1990s. For a period of time it even had some terminal features, such as coloring, that GNU Emacs lacked.

XEmacs has a separate packaging system for independently maintained Lisp packages, which is more extensive and more up-to-date than GNU Emacs, which includes a much smaller subset of more carefully integrated packages in its core.

Historically, XEmacs had a more open development environment, including anonymous CVS access and publicly accessible development mailing lists. With the release of GNU Emacs 21 in 2001, the GNU project has begun providing both of these facilities, as well. The development models of the projects are now very similar, with the exception that all contributions to GNU Emacs require copyright assignment for any significant contributions (that is, the author must sign a legal document transferring the copyright of the code to the Free Software Foundation, or FSF.) The issue of copyright assignment is one of the main issues dividing the two camps.

XEmacs still has somewhat better X toolkit support, and experimental GTK+ support. However, as of 2005, the released version depends on the unmaintained package called Mule-UCS to support Unicode, while GNU Emacs has had robust integrated Unicode support through MULE since before 2003. The development branch of XEmacs has had robust native support for external Unicode encodings since May 2002, but the internal Mule character sets are incomplete, and development seems stalled as of September 2005.

Programmers who wish their Emacs Lisp packages to work with both programs 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 (but without those attributes actually becoming part of the text). A similar but not identical feature, overlays, was later added to GNU Emacs. XEmacs' project policy is to maintain compatibility with the GNU Emacs API. For example, it provides a compatibility layer implementing overlays via the native extent functionality.

The schism between GNU Emacs and XEmacs is one of the most well-known examples of a code fork. Several of XEmacs's principal developers have published accounts of the split: Ben Wing's critiques[1] Stallman's technical choices and gives his willingness to compromise, Jamie Zawinski's email record of the split containing correspondence from participants[2], Stephen Turnbull's summary[3] of both sides, and Richard P. Gabriel reconsiders and implies that Stallman is "insane"[1]. Stallman describes the XEmacs team as being uncooperative.[4].

Both programs are licensed under the GNU GPL. The copyright of some of the XEmacs code is even held by the Free Software Foundation because of prior copyright assignment during merge attempts and repeated copying from GNU Emacs into XEmacs. The code could in principle be freely exchanged between the two projects. However, the GNU Emacs project has a policy of including only contributions whose copyright has been assigned to the FSF. The FSF asserts that copyright assignment is necessary to allow it to defend the code against GPL violations ("Why the FSF gets copyright assignments from contributors"). The XEmacs project, which does not share the FSF's interpretation, does not and has never required copyright assignment, and has in the past received much assistance from various software corporations who also agree. The XEmacs project has also freely accepted patches from various contributors over the years. The result is that much of the code in XEmacs has an unknown or corporate copyright, and copyright assignment of all the code is not possible in practice. The FSF's strict insistence on copyright assignment has, in addition to numerous other issues, tended to scuttle the various merge attempts to date.

However, 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 Lisp subsystems, such as Gnus and Dired, are developed to work with both.

[edit] Project status

XEmacs development is split between three branches: stable, gamma, and beta, with beta being the first to get new features, but being the least tested, stable and secure. Version 20.0 was released on 9 February 1997, and 21.0 on 12 July 1998. As of November 2006, the current stable version is 21.4.19 and the latest release in the beta branch is 21.5.27. There are currently no gamma releases. Beginning with the release of XEmacs 21.4.0, XEmacs version numbers follow a scheme similar to that of Linux, with an odd second number signalling a development version, and an even second number for stable releases.

SXEmacs [5] is a fork of XEmacs 21.4.16 led by former XEmacs developer Steve Youngs. It is currently in beta.

[edit] See also

[edit] External links

In other languages