XEmacs

歴史

1987年から1993年の間に、GNU Emacsの（バージョン19となるはずの）新規バージョンのリリースにおいて大幅な遅延が発生した。1980年代後半、Richard P. GabrielのLucid社はEnergize C++ IDEをサポートするためのEmacsをリリースする必要に直面していた。そのため、Lucid社はEmacsのコードを改善して拡張するためのチームを募集し、1991年にリリースされたLucid社の新しいバージョンは、GNU Emacsのバージョン19の基礎を形成することを意図して作られた。しかしながら、フリーソフトウェア財団 (FSF) がこの変更を受諾するのを待つ余裕がLucid社にはなかった。Lucid社はEmacsの自社バージョンの開発と保守を継続していたが、1年後にFSFはLucid社バージョンのコードをいくつかマージし、さらそれ以外の部分も取り入れたGNU Emacsのバージョン19をリリースした。
Lucid社は1994年に廃業したが、他の開発者がコードを拾い上げた。サン・マイクロシステムズなどの企業はLucid Emacsの開発継続を望んでいたが、誰が "Lucid" という商標を最終的に管理しているのかを誰も知らなかったため、法的に "Lucid" という商標を使えるかが不確かとなっていた。そのため、XEmacsの "X" はXEmacsの開発に係わった当事者間による妥協案の象徴である。
このため、XEmacsの "X" はX Window Systemとは関係がない。XEmacsはテキストベース端末とX11以外のウィンドウシステムを常にサポートしている。インストーラはXEmacsとGNU Emacsを両方とも、Xのサポートの有無によらずコンパイル可能である。一時はXEmacsがシンタックスハイライトなどのGNU Emacsにはない端末固有の機能を搭載していた時代もあった。
ソフトウェアコミュニティでは一般的に、GNU EmacsとXEmacs（およびこの2つ以外の類似エディタ）を総称して（boxenからの類推により）emacsenと呼んだり、それぞれ個別にemacsと呼んだりする。なぜならGNU EmacsとXEmacsは両方とも、原型であるTECO Emacsからインスピレーションを得ているためである。

機能

XEmacsのテキスト編集は、単語や段落を操作（削除や移動など）するコマンド、ソースコードを読みやすくするためのシンタックスハイライト、そしてユーザー定義の編集コマンドの任意のバッチを実行するための「キーボードマクロ」を特徴としている。
XEmacsには、XEmacsのウェブサイトから利用可能な5つのマニュアルだけではなく、包括的なオンラインヘルプが搭載されている。XEmacsは数多くのプログラミング言語やマークアップ言語のための編集モードだけではなく、数多くの人間言語をサポートする。XEmacsはUnix/Linux、BSD、Mac OS Xなどの数多くのオペレーティングシステムで起動する。Mac OSでの起動にはX11が必要であるが、ネイティブCarbonバージョン上で起動するバージョンの開発が開始されている。Microsoft Windows環境用のXEmacsには、ネイティブインストーラバージョンとCygwinパッケージバージョンの2つのバージョンが存在する。
ユーザーはEmacs Lisp言語を使うことで、エディタの機能のほとんど全てを再設定することができる。Lispコードを変更してもユーザーはエディタをリコンパイルする必要はない。プログラマはあらかじめ書かれた多くのLisp拡張を利用可能である。
XEmacsの機能拡張や機能補足のためのパッケージは数多く存在する。ユーザーはXEmacsのパッケージマネージャを通じてそれらを少しずつダウンロードしたり、xemacs-sumoパッケージや "sumo tarballs" を使って一括適用することができる。XEmacs 21.1より、機能はXEmacsコアから外されて独立したパッケージとして利用可能となったので、ユーザーは不要なパッケージを除外することが可能となった。XEmacsはパッケージマネージャをGNU Emacsに搭載される以前から搭載していたが、XEmacsは新しいパッケージをロードした後は再起動しなければならない。

開発

XEmacsの開発者はプロジェクトの開始から、頻繁なリリースサイクルを目指していた。現在では1年につき2つから3つの版がリリースされるが、初期の年よりスローダウンしている。XEmacsの開発者は、よりオープンな実験も目指していたため、インラインイメージ、可変フォントそして端末カラーなど、他のEmacs系エディタの先駆けとなる新しい機能をXEmacsが提供することが多い。長年にわたり、開発者は一貫性を改善しデータ抽象化を強調して近代プログラミング慣習に従うよう、広範囲にコードを書き直した。XEmacsは独立して管理されるLispパッケージ用のパッケージ管理システムを搭載している。XEmacsの最新バージョンはGTK+をサポートし、Mac OS X用ネイティブCarbon移植がある。
XEmacsには匿名CVSや、CVSの後に出来たMercurialへのアクセスと公開されたアクセス可能な開発メーリングリストといった、常にオープンな開発環境が存在する。XEmacsは500ページ以上の内部マニュアル（Wingなどによる、2004年）を搭載する。
XEmacsにとって、Unicodeのサポートは問題となっている。2005年の時点でリリースされたバージョンはUnicodeのサポートのために、Mule-UCSと呼ばれる既に保守が終わったパッケージに依存している。2002年5月よりXEmacsの開発ブランチは外部のUnicodeエンコーディングの強力なネイティブサポートを搭載するが、内部のMule文字セットが完全でなく、2005年の時点で開発が中断している。
XEmacsの開発は、stable、gamma、そしてbetaといった3つのブランチを特徴としている。新しい機能が最初に得られるのはbetaだが、テストが十分ではなく、安定性やセキュリティが劣っている可能性が高い。XEmacsの開発者は1997年2月9日にバージョン20.0をリリースし、1998年7月12日にバージョン21.0をリリースした。2009年1月の時点で、stableブランチのバージョンは21.4.22で、betaブランチのバージョンは21.5.28である。gammaリリースは2007年の時点で存在していない。XEmacs 21.4.0のリリースで、バージョン番号は2つ目の番号が奇数であれば開発版で、偶数であれば安定版を表すようになった。

XEmacsとGNU Emacs

XEmacsの主要な開発者の中には、XEmacsとGNU Emacsとの分断を公言する者もいる。例えば、Stephen Turnbullの両側からの議論の要旨。XEmacsとGNU Emacsとの主な相違点の1つとしては、著作権譲渡の見解が異なることが挙げられる。FSFはGPL侵害に対してコードを守れるようにするために著作権譲渡が必要であるとしているが、XEmacsの開発者は著作権譲渡がないことで、主要な企業が関与することが可能になると主張している。これは企業がコードのライセンスを発行できる場合でも株主の信認義務を気にした慎重な態度のため、企業がコードを全て譲渡してもよいという許可を得るのに苦労するかもしれないためである。
FSFは、XEmacsとGNU Emacsとのマージを試みたり、それぞれのクロス開発を行うにあたって事前に著作権を譲渡されたため、ほとんどのXEmacsコードの著作権を保持している。XEmacsコードの新しい要素がGNU Emacsに加わるかどうかは、FSFにコードを譲渡する寄稿者個人がそれをしたいかどうかに依存することが多い。XEmacsかGNU Emacsのどちらか一方に組み込まれた新しい機能は、遅かれ早かれ他方にも組み込まれることが普通である。さらに開発者の多くはXEmacsプロジェクトおよびGNU Emacsプロジェクトの両方に寄与している。
XEmacsプロジェクトはGNU Emacs APIとの互換性を維持する方針である。その例として、XEmacsはネイティブ部分の機能を媒介するオーバーレイを実装する互換レイヤーを提供する。XEmacsの開発者は、特にLispレベルでGNU Emacsと互換性のあるコードを維持するよう努力している。
XEmacsの開発は遅くなってきている。最も新しいstableのバージョン21.4.22は2009年1月にリリースされた。XEmacsにはGNU Emacsから多くのコードが組み込まれているが、GNU Emacsには以前はXEmacsにしかなかった機能の多くが実装されてきている。これにより、ユーザーの中にはXEmacsの死を宣言し、XEmacsの開発者はXEmacsの代わりにGNU Emacsへ貢献するよう主張する者もいる。
GnusやDiredといった主要なパッケージの多くはXEmacsとGNU Emacsの両方で動作するよう開発されていたが、Gnusの主要な開発者はXEmacsのサポートを中止した他の類似のパッケージを引用して、メインのEmacsトランクの中にGnusのツリーを移動し、XEmacsと互換性のあるコードを削除するつもりであることをアナウンスした。
2015年12月、XEmacsプロジェクトのメンテナであるStephen J. Turnbullは、XEmacsプロジェクトは開発者の減少とGNU Emacsの進化により、将来のGNU Emacsとの互換性に関しては「分岐点にある」というメッセージをXEmacs開発リストに投稿した。将来の方向として、開発を完全に終了する、現在バージョンのGNU Emacsから新しいフォークを作成する、または誰かが将来開発を再開したい場合に備えてXEmacsプロジェクトをメンテナンスモードにするなどの選択肢が提示された。そして貢献者個々人からウェブサイトと開発リソースのサポートを最小限提供するという約束を取り付け、最後の選択肢であるXEmacsプロジェクトのメンテナンスモード化が決定した。