XEmacs is a
graphical- and
console-based
text editor
A text editor is a type of computer program that edits plain text. Such programs are sometimes known as "notepad" software (e.g. Windows Notepad). Text editors are provided with operating systems and software development packages, and can be u ...
which runs on almost any
Unix-like
A Unix-like (sometimes referred to as UN*X or *nix) operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Unix-li ...
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
as well as
Microsoft Windows. XEmacs is a
fork
In cutlery or kitchenware, a fork (from la, furca ' pitchfork') is a utensil, now usually made of metal, whose long handle terminates in a head that branches into several narrow and often slightly curved tines with which one can spear foods ...
, based on a version of
GNU Emacs
GNU Emacs is a free software text editor. It was created by GNU Project founder Richard Stallman, based on the Emacs editor developed for Unix operating systems. GNU Emacs has been a central component of the GNU project and a flagship proje ...
from the late 1980s. Any user can download, use, and modify XEmacs as
free software
Free software or libre software is computer software distributed under terms that allow users to run the software for any purpose as well as to study, change, and distribute it and any adapted versions. Free software is a matter of liberty, ...
available under the
GNU General Public License
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end user
In product development, an end user (sometimes end-user) is a person who ultimately uses or is intended to ulti ...
version 2 or any later version.
History
Between 1987 and 1993 significant delays occurred in bringing out a new version of
GNU Emacs
GNU Emacs is a free software text editor. It was created by GNU Project founder Richard Stallman, based on the Emacs editor developed for Unix operating systems. GNU Emacs has been a central component of the GNU project and a flagship proje ...
(presumed to be version 19).
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,
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
The Free Software Foundation (FSF) is a 501(c)(3) non-profit organization founded by Richard Stallman on October 4, 1985, to support the free software movement, with the organization's preference for software being distributed under copyleft ("s ...
(FSF).
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.
When Lucid went out of business in 1994, other developers picked up the code.
Companies such as
Sun Microsystems
Sun Microsystems, Inc. (Sun for short) was an American technology company that sold computers, computer components, software, and information technology services and created the Java programming language, the Solaris operating system, ZFS, ...
wanted to carry on shipping Lucid Emacs, but 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.
The "X" in XEmacs is thus not related to the
X Window System
The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems.
X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting ...
. After initially only supporting X11, XEmacs 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
oxen
An ox ( : oxen, ), also known as a bullock (in BrE, AusE, and IndE), is a male bovine trained and used as a draft animal. Oxen are commonly castrated adult male cattle; castration inhibits testosterone and aggression, which makes the ma ...
) or as ''emacs'', since they both take their inspiration from the original
TECO Emacs.
Features
XEmacs has commands to manipulate
word
A word is a basic element of language that carries an objective or practical meaning, can be used on its own, and is uninterruptible. Despite the fact that language speakers often have an intuitive grasp of what a word is, there is no consen ...
s and
paragraph
A paragraph () is a self-contained unit of discourse in writing dealing with a particular point or idea. Though not required by the orthographic conventions of any language with a writing system, paragraphs are a conventional means of organizing e ...
s (deleting them, moving them, moving through them, and so forth),
syntax highlighting
Syntax highlighting is a feature of text editors that are used for programming, scripting, or markup languages, such as HTML. The feature displays text, especially source code, in different colours and fonts according to the category of terms. ...
for making
source code
In computing, source code, or simply code, is any collection of code, with or without comment (computer programming), comments, written using a human-readable programming language, usually as plain text. The source code of a Computer program, p ...
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
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
/
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which i ...
,
BSDs and
Mac OS X
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and lapt ...
. Running on Mac OS requires
X11; while development has on a native
Carbon
Carbon () is a chemical element with the symbol C and atomic number 6. It is nonmetallic and tetravalent—its atom making four electrons available to form covalent chemical bonds. It belongs to group 14 of the periodic table. Carbon makes ...
version. Two versions of XEmacs for the Microsoft Windows environment exist: a native installer and a
Cygwin
Cygwin ( ) is a POSIX-compatible programming and runtime environment that runs natively on Microsoft Windows. Under Cygwin, source code designed for Unix-like operating systems may be compiled with minimal modification and executed.
The Cygwin i ...
package.
Users can reconfigure almost all of the functionality in the editor by using the
Emacs Lisp
Emacs Lisp is a dialect of the Lisp programming language used as a scripting language by Emacs (a text editor family most commonly associated with GNU Emacs and XEmacs). It is used for implementing most of the editing functionality built into Em ...
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
A package manager or package-management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.
A package manager deals w ...
or apply them in bulk using the xemacs-sumo package or "
sumo
is a form of competitive full-contact wrestling where a '' rikishi'' (wrestler) attempts to force his opponent out of a circular ring ('' dohyō'') or into touching the ground with any body part other than the soles of his feet (usually by ...
tarballs". The package manager in XEmacs predates the ELPA package system used by GNU Emacs by almost a decade and is incompatible with it. 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 had a package manager for over a decade before GNU Emacs developed one, but XEmacs must be restarted before new packages are loaded.
Development
From the project's beginnings, the developers of XEmacs aimed to have a frequent release-cycle.
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 version has
GTK+
GTK (formerly GIMP ToolKit and GTK+) is a free and open-source cross-platform widget toolkit for creating graphical user interfaces (GUIs). It is licensed under the terms of the GNU Lesser General Public License, allowing both free and prop ...
support
and a native Carbon port for Mac OS X.
XEmacs has always had a very open development-environment, including anonymous
CVS, later
Mercurial
Mercurial is a distributed revision control tool for software developers. It is supported on Microsoft Windows and Unix-like systems, such as FreeBSD, macOS, and Linux.
Mercurial's major design goals include high performance and scalabilit ...
access and publicly accessible development
mailing-lists. XEmacs comes with a 500+ page internals manual (Wing, et al., 2004).
Support for
Unicode
Unicode, formally The Unicode Standard,The formal version reference is is an information technology standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. The standard, ...
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.
XEmacs development features three branches: stable, gamma, and beta,
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 . 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.
XEmacs and GNU Emacs
Several of XEmacs's principal developers have published accounts of the split between XEmacs and GNU Emacs, for example, Stephen Turnbull's summary 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,
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
A fiduciary is a person who holds a legal or ethical relationship of trust with one or more other parties (person or group of persons). Typically, a fiduciary prudently takes care of money or other assets for another person. One party, for exa ...
to shareholders, companies may have trouble in getting permission to assign away code completely.
The
Free Software Foundation
The Free Software Foundation (FSF) is a 501(c)(3) non-profit organization founded by Richard Stallman on October 4, 1985, to support the free software movement, with the organization's preference for software being distributed under copyleft ("s ...
holds
copyright
A copyright is a type of intellectual property that gives its owner the exclusive right to copy, distribute, adapt, display, and perform a creative work, usually for a limited time. The creative work may be in a literary, artistic, education ...
of much of the XEmacs code because of prior copyright assignment during merge attempts and cross-development. 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.
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. "XEmacs developers strive to keep their code compatible with GNU Emacs, especially on the Lisp level."
As XEmacs development has slowed, XEmacs has incorporated much code from GNU Emacs, 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.
Many major packages, such as
Gnus
Gnus (), or Gnus Network User Services, is a message reader which is part of GNU Emacs. It supports reading and composing both e-mail and news and can also act as an RSS reader, web processor, and directory browser for both local and remote file ...
and
Dired
Dired (for Directory Editor) is a computer program for editing file system directories. It typically runs inside the Emacs text editor as a specialized mode, though standalone versions have been written. Dired was the file manager, or visual ed ...
, were formerly developed to work with both, although the main developer of Gnus has announced his intention to move the Gnus tree into the main Emacs trunk and remove XEmacs compatibility code, citing other packages similarly dropping XEmacs support.
In December 2015 project maintainer Stephen J. Turnbull posted a message to an XEmacs development list stating the project was "at a crossroads" in terms of future compatibility with GNU Emacs due to developer attrition and GNU Emacs' progress. Several options were laid out for future directions including ending development entirely, creating a new fork from the current version of GNU Emacs, or putting the project in
maintenance mode
In the world of software development, maintenance mode refers to a point in a computer program's life when it has reached all of its goals and is generally considered to be "complete" and bug-free. The term can also refer to the point in a softwar ...
in case someone wants to restart development in the future.
This last option was the direction decided, with commitments from individual contributors to provide minimal support for the web site and development resources.
See also
*
List of Unix commands
This is a list of Unix commands as specified by IEEE Std 1003.1-2008, which is part of the Single UNIX Specification (SUS). These commands can be found on Unix operating systems and most Unix-like operating systems.
List
See also
* List of G ...
*
Comparison of text editors
This article provides basic comparisons for notable text editors. More feature details for text editors are available from the '' Category of text editor features'' and from the individual products' articles. This article may not be up-to-date or n ...
*
SXEmacs (a
fork
In cutlery or kitchenware, a fork (from la, furca ' pitchfork') is a utensil, now usually made of metal, whose long handle terminates in a head that branches into several narrow and often slightly curved tines with which one can spear foods ...
of XEmacs)
References
External links
The XEmacs Project's websitefrom the view of its original maintainer,
Jamie Zawinski
Jamie Zawinski (born November 3, 1968), commonly known as jwz, is an American computer programmer, blogger and impresario. He is best known for his role in the creation of Netscape Navigator, Netscape Mail, Lucid Emacs, Mozilla.org, and XScr ...
The History of XEmacsPrintable XEmacs Reference Card (PDF)
{{DEFAULTSORT:Xemacs
Cross-platform software
Emacs
Free software programmed in C
Free text editors
MacOS text editors
Software forks
Software using the GPL license
Text editors that use GTK
Discontinued development tools
Unix text editors
Windows text editors