# XEmacs

XEmacs ist ein Ende der 1980er Jahre als Abspaltung von GNU Emacs entstandener sowohl grafisch als auch in einer Konsole bedienbarer Texteditor, der auf fast jedem unixartigen Betriebssystem und Windows lauffähig ist. Er wurde ursprünglich unter dem Namen „Lucid Emacs“ von Lucid Inc. entwickelt und ist als freie Software unter der GNU General Public License im Quelltext verfügbar.

## Geschichte

Zwischen 1987 und 1993 kam es zu erheblichen Verzögerungen bei der Herausgabe neuer GNU-Emacs-Versionen. Ende der 1980er Jahre sahen sich Richard P. Gabriel und Jamie Zawinski von Lucid Inc. daher gezwungen eine eigene Emacs-Version herausbringen, um Energize, eine integrierte Entwicklungsumgebung für C++, zu unterstützen. Lucid stellte daher ein Team an, um Emacs zu verbessern und zu erweitern. Ihre Absicht war, dass diese 1991 veröffentlichte Weiterentwicklung die Basis der Version 19 von GNU Emacs bilden würde. Jedoch fanden sie nicht die Zeit, ihre Änderungen bei der für die Pflege von Emacs verantwortlichen Free Software Foundation (FSF) einzureichen. Lucid entwickelte ihre eigene Version weiter, während die FSF ein Jahr später Version 19 von Emacs veröffentlichte, in der sie die meisten neuen Funktionen von Lucid Emacs nicht aufnahm.
Als Lucid 1994 aufhörte zu bestehen, übernahmen andere Entwickler die Weiterentwicklung des Programms. Firmen wie Sun Microsystems hatten ein Interesse daran, Lucid Emacs weiterzuvertreiben. Aufgrund rechtlicher Bedenken bezüglich der weiteren Nutzung der Marke Lucid entschied man sich, das Programm umzubenennen, und einigte sich auf den Namen XEmacs.
In der Softwareentwicklergemeinschaft bezeichnet man GNU Emacs, XEmacs (und eine Reihe ähnlicher Editoren) zusammengefasst als Emacse[n] oder kurz Emacs, da ihr aller Vorbild der originale TECO Emacs ist.

## Programmfunktionen

XEmacs’ Textbearbeitungsmodus bietet Funktionen zum Bearbeiten von Wörtern, Textabsätzen (löschen, verschieben usw.), Syntaxhervorhebung, um Quelltexte besser lesbar zu machen, und benutzerdefinierte Tastenkürzel, um selbstdefinierte Makros zur Textbearbeitung auszuführen.
Das Programm hat eine umfangreiche integrierte Hilfe neben fünf weiteren von der XEmacs-Website herunterladbaren Handbüchern. Es unterstützt zahlreiche natürliche Sprachen und Bearbeitungsmodi für viele Programmier- und Auszeichnungssprachen. XEmacs ist auf vielen Betriebssystemen lauffähig, wie Unix, Linux, BSDs und Mac OS X. XEmacs unterstützte stets kommandozeileenbasierte Terminals und weitere Grafiksysteme neben dem X Window System. Die aktuelle Version kann im Grafikmodus wahlweise auch die modernere GTK+-Benutzeroberflächenbibliothek nutzen. Unter Mac OS X benötigt die aktuelle Version noch X11.app, eine derzeit noch als experimentell angesehene Carbonversion ist aber bereits benutzbar. Für Windows existiert eine native und eine Cygwin-Variante.
Benutzer können mithilfe der Programmiersprache Emacs Lisp fast die gesamte Funktionalität des Editors umkonfigurieren. Änderungen an den Lispscripten erfordert kein Neustarten oder Neuübersetzen des Editors. Es existieren zahlreiche in Lisp geschriebene Erweiterungen, welche vom Benutzer beispielsweise mit dem umfangreichen XEmacs-Sumo-Paket nachinstalliert werden können. XEmacs bietet darüber auch ein eigenständiges Paketsystem, um von Dritten bereitgestellte Lisp-Pakete in eine bestehende Installation einfach zu integrieren.

## Entwicklung

Seit dem Anfang des Projekts strebten die XEmacs-Entwickler regelmäßige Veröffentlichungen an. Derzeit erscheinen 2 bis 3 neue Versionen pro Jahr, was im Vergleich zu früheren Jahren weniger ist. Daneben setzten sie sich auch eine größere Offenheit und Experimentierfreudigkeit zum Ziel. So hat XEmacs oft neue Funktionen, bevor sie in anderen Emacsen Einzug halten, wie beispielsweise eingebettete Bilder, verschiedene Schriftarten und farbliche Syntaxhervorhebung. Über die Jahre wurde der Quelltext umfassend neugeschrieben, um die Einheitlichkeit des Programms zu verbessern und moderne Programmierkonzepte zur Datenabstraktion zu verfolgen.
XEmacs wurde im Gegensatz zu GNU Emacs stets sehr offen und transparent entwickelt. So können alle Änderung der Quellen öffentlich nachvollzogen werden, zunächst über anonymen Zugang mittels CVS, später über Mercurial. Änderungen können über öffentlich zugängliche Mailinglisten diskutiert werden. Darüber hinaus bietet XEmacs über 500 Seiten Dokumentation zu Programminterna.
Die Entwicklung des Programms geschieht in den drei Zweigen „stable“, „gamma“ und „beta“, wobei neue Funktionen zuerst in „beta“ auftauchen, welcher aber potenziell weniger stabil und sicher ist. Die Entwickler veröffentlichten die stabilen Hauptversionen 20.0 am 9. Februar 1997 und 21.0 am 12. Juli 1998. Derzeit ist Version 21.4.22 von 30. Januar 2009 die letzte stabile Version und 21.5.29 die letzte Betaversion. Eine aktuelle Gammaversion existiert derzeit nicht. Seit der Veröffentlichung von XEmacs 21.4.0 folgen die Versionsnummern einem Schema, bei dem eine ungerade zweite Zahl eine Entwicklungsversion und gerade zweite Zahl eine stabile Fassung anzeigen.

## XEmacs und GNU Emacs

Mehrere XEmacs-Hauptentwickler haben ihre Ansichten zur Spaltung von XEmacs und GNU Emacs veröffentlicht. Eine der wichtigsten der derzeit noch bestehenden Meinungsverschiedenheiten besteht in der Uneinigkeit zu Urheberrechtsüberlassungen. Die FSF betrachtet Urheberrechtsüberlassungen an die FSF als notwendig, um sich gegen Verstöße gegen die Bestimmungen der GPL verteidigen zu können, während die XEmacs-Entwickler argumentieren, dass der Verzicht auf derartige Überlassungen es ermöglicht hat, dass sich mehrere größere Firmen an der Entwicklung beteiligten.
Obwohl XEmacs schon 1991 von Emacs abgespalten wurde, haben beide Programme recht ähnliche und zumeist kompatible Funktionen. Das liegt zum einen daran, dass das XEmacs-Projekt möglichst enge Kompatibilität mit der API von GNU Emacs bewahrt. So bietet es Kompatibilitätsmodi im Fall erweiterter Funktionen, insbesondere in Bezug auf das integrierte LISP. Zum anderen dauert es meist nicht lange, bis ein neues Feature auch im jeweils anderen Editor implementiert wird. Dies geht so weit, dass Modulprogramme wie AUCTeX, Gnus, org-mode und Dired in beiden Editoren lauffähig sind.