# XEmacs
## Historique

XEmacs (anciennement Lucid Emacs) est un éditeur de texte (et un IDE, entre autres) pour X Window, basé sur un fork d'une version de GNU Emacs (présumée être la version 19) de la fin des années 1980, produit d'une collaboration entre Lucid Inc., SunPro (une division de Sun Microsystems) et l’université d'Illinois.
Lorsque Lucid a cessé ses activités en 1994, d'autres développeurs ont repris le code. Des sociétés telles que Sun Microsystems voulaient continuer à commercialiser Lucid Emacs, mais l'utilisation de la marque était devenue juridiquement ambiguë, personne ne sachant qui contrôlerait éventuellement la marque « Lucid ». En conséquence, le « X » dans « XEmacs », représente un compromis entre les parties impliquées dans le développement d'XEmacs.
Ce "X" n'est donc pas lié au système X Window. Après avoir initialement pris en charge uniquement X11, XEmacs s'est ensuite intéressé aux terminaux en mode texte et aux systèmes de fenêtrage autres que X11. Les installateurs purent donc compiler XEmacs et GNU Emacs avec ou sans support d'X. Pendant un moment, XEmacs était même le seul à inclure certaines fonctionnalités qui restaient spécifiques au mode texte, comme la colorisation, dont GNU Emacs manquait.
La communauté du logiciel libre fait généralement référence à GNU Emacs, XEmacs et quelques autres éditeurs similaires -- collectivement ou individuellement -- en tant qu' « emacsen » (par analogie avec oxen ), voire « emacs », puisqu'ils s'inspirent tous de l'original TECO (« Text Editor and COrrector ») Emacs (Emacs signifiait à l'origine : « Editing MACroS running on TECO », « macros d'édition fonctionnant sur TECO »).

## Fonctionnalités

XEmacs dispose de commandes pour manipuler des mots et des paragraphes (suppression, déplacements, copie, déplacements dans les phrases, etc.), de la coloration syntaxique (pour rendre le code source plus facile à lire), ainsi que des « macros », pour exécuter le traitement par lots de commandes d'édition définies par l'utilisateur.
Cet éditeur propose une aide en ligne complète, ainsi que cinq manuels qui sont disponibles sur le site web officiel. XEmacs prend en charge beaucoup de langages humains, ainsi que des modes d'édition pour de nombreux langages de programmation et de balisage. Il fonctionne sur nombre de systèmes d'exploitation, notamment : Unix / Linux, BSD et Mac OS X. L'exécution sur Mac OS nécessite X. Il existe deux versions d'XEmacs pour l'environnement Microsoft Windows : un installeur natif et un paquet Cygwin.
Une des fonctionnalités très appréciée des utilisateurs (qui est également présente dans Emacs), est la personnalisation ; les possibilités sont incroyables (« sky is the limit »). On peut reconfigurer presque toutes les fonctionnalités de l'éditeur en utilisant le langage ELisp (Emacs Lisp) . Les modifications apportées au code Lisp ne nécessitant pas que l'utilisateur redémarre ou recompile l'éditeur ; on a, cela dit, la possibilité de le recompiler, ce qui donnera un code plus concis, moins lourd et, donc, plus rapide à exécuter (au moins sur le matériel plus ancien, avec des ressources limitées en mémoire et en CPU). Les programmeurs ont mis à disposition de nombreuses extensions Lisp pré-écrites.
Il y a de nombreux paquets (packages) pour étendre les possibilités d'XEmacs. Les utilisateurs peuvent, soit les télécharger au coup par coup -- via le gestionnaire de paquets d'XEmacs --, soit les appliquer en masse à l'aide du paquet xemacs-sumo. Ce gestionnaire de paquet est antérieur de près d'une décennie au système de packages ELPA utilisé par GNU Emacs, avec lequel il est incompatible. Depuis la versions 21.1, cette fonctionnalité a été retirée du noyau d'XEmacs, mais rendue disponible séparément, sous forme de paquets ; cela permet aux utilisateurs d'exclure les paquets dont ils n'ont pas besoin. XEmacs doit être redémarré avant que les nouveaux paquets ne soient chargés.

## Développement

XEmacs a toujours eu un environnement de développement très ouvert, comprenant des CVS anonymes (plus tard, un accès Mercurial) et des listes de diffusion de développement accessibles au grand public. XEmacs est livré avec un manuel interne de plus de 500 pages.
Le développement d'XEmacs comporte trois branches : stable, gamma et bêta ; la version bêta offrant plus de nouvelles fonctionnalités, mais ayant potentiellement subi moins de tests, ce qui implique moins de stabilité et moins de sécurité.
Les développeurs ont publié le 9 février 1997 la version 20.0 et la version 21.0 le 12 juillet 1998. En janvier 2009, la branche stable avait atteint la version 21.4.22 et la branche bêta la version 21.5.28. À compter de 2007, il n'y a plus de version gamma. Avec la sortie de XEmacs 21.4.0, les numéros de versions suivent un schéma selon lequel un deuxième nombre impair signale une version de développement et un deuxième nombre pair indique une version stable.

### XEmacs et GNU Emacs

Plusieurs des principaux développeurs d'XEmacs ont publié des comptes-rendus de la scission entre XEmacs et GNU Emacs ; lire, par exemple le résumé de Stephen Turnbull. L'un des principaux désaccords concerne la cession des droits d'auteur : la FSF considère normal -- et même nécessaire -- qu'ils lui reviennent, afin de lui permettre de défendre le code contre d'éventuelles violations de la GPL, tandis que les développeurs d'XEmacs, eux, ont soutenu que la non-attribution des droits d'auteur a permis aux grandes entreprises de s'impliquer ; car, parfois, celles-ci peuvent accorder des licences pour leur propre code, mais, en raison d'une attitude prudente concernant les obligations envers leurs actionnaires, elles peuvent aussi avoir du mal à autoriser la cession de la totalité du code.
En définitive, la FSF détient les droits d'auteur sur une grande partie du code d'XEmacs, en raison de leur attribution préalable lors de tentatives de fusion et de développement croisé.
Pour qu'un nouveau morceau de code d'XEmacs entre dans GNU Emacs, cela dépend souvent de la volonté du ou des développeur(s) dudit morceau de code. Les nouvelles fonctionnalités d’un éditeur apparaissent plus ou moins rapidement dans l’autre (et inversement). De plus, de nombreux développeurs contribuent à la fois aux deux projets.
Le projet XEmacs a pour politique de maintenir la compatibilité avec l'API de GNU Emacs. « Les développeurs d'XEmacs s'efforcent de garder leur code compatible avec celui de GNU Emacs, notamment au niveau Lisp. »
En décembre 2015, le responsable du projet, Stephen J. Turnbull, a publié un message sur une liste de développement XEmacs, indiquant que le projet était « à la croisée des chemins » en termes de compatibilité future avec GNU Emacs ; ce, en raison à la fois de la diminution régulière du nombre des développeurs et des progrès de GNU Emacs.
Plusieurs options ont été présentées pour les orientations futures, notamment celle de mettre un point d'arrêt définitif au développement ; mais aussi celle de créer un nouveau fork à partir de la version actuelle de GNU Emacs ou, enfin, de mettre le projet en mode maintenance, pour le cas où quelqu'un voudrait reprendre le développement à l'avenir. Cette dernière option est celle qui a été retenue.
En 2020, en raison de l'arrêt du support Mercurial, le projet a déplacé son référentiel source vers Heptapod. En mai 2023, le projet a publié la première nouvelle version bêta de XEmacs depuis près d'une décennie avec la bêta 21.5.35 « kohlrabi ».

## SXEmacs

Le projet SXEmacs a démarré un fork à partir d'XEmacs 21.4 et en a poursuivi le développement pendant plus d'une décennie, publiant de nouvelles versions jusqu'en 2020, la dernière version disponible étant la 22.1.17.