# XEmacs

XEmacs è un editor di testo derivato da GNU Emacs, che pone l'accento su un buon supporto per l'interfaccia grafica, principalmente per il sistema a finestre X. XEmacs funziona per la maggior parte dei sistemi operativi Unix (sotto X o in un terminale di testo), oltre che sotto Windows. Funziona anche sotto macOS con un server X, ma ne esiste anche una versione alpha nativa (che usa Carbon).
Come Emacs (da qui in poi inteso come GNU Emacs, per indicare genericamente entrambi si usa il termine in minuscolo emacs), XEmacs è software libero disponibile sotto la GNU General Public License.
XEmacs fu creato nel 1991 come Lucid Emacs da Lucid inc. per supportare il loro ambiente proprietario Energize. Gli sviluppatori presso Lucid effettuarono un fork del codice, sviluppando e mantenendo la propria versione di Emacs, perché non erano soddisfatti del metodo di mantenimento dell'Emacs originale. La loro versione di Emacs divenne molto popolare, tanto che quando Lucid chiuse nel 1994 il codice fu preso da un'altra squadra di sviluppatori e mantenuto sotto il nome correntemente usato, "XEmacs".

## Differenze tra Emacs e XEmacs

Emacs e XEmacs hanno una filosofia di sviluppo differente. XEmacs è più aperto alla sperimentazione e spesso è il primo ad offrire nuove funzionalità, come le immagini nel testo, font di grandezza variabile e i colori a terminale. I detrattori di questo sistema fanno notare che a causa di questo approccio aggressivo e motivato dall'introdurre nuove funzionalità, le funzioni interne di XEmacs sono spesso meno consistenti e meno documentate rispetto a quelle di Emacs.
XEmacs funzionò subito anche con i terminali a caratteri (o emulatori come xterm). In effetti, XEmacs ebbe da prima alcune funzionalità da terminale, come la colorazione dei caratteri, che a Emacs mancavano.
XEmacs integra spesso direttamente codice di pacchetti sviluppati indipendentemente, laddove il progetto Emacs effettua test su ogni singolo pacchetto distribuito con esso. Come risultato, i pacchetti sotto XEmacs sono solitamente più aggiornati.
Storicamente, XEmacs ha sempre avuto un sistema di sviluppo più aperto, incluso accesso CVS anonimo e mailing list ad accesso pubblico. Con il rilascio di Emacs 21 nel 2001 il progetto Emacs ha però fornito entrambe le funzioni. I modelli di sviluppo dei due progetti sono ora molto simili.
XEmacs ha ancora in qualche maniera un miglior supporto grafico, come ad esempio le barre di scorrimento orizzontali, anche se le differenze di funzionalità sono meno marcate rispetto a prima (anche Emacs ha ottenuto supporto per GTK+ ad esempio). Il supporto multi-lingua è inferiore rispetto a quello di Emacs, ma è opzionale, mentre in Emacs l'internazionalizzazione è codificata al suo interno.
Programmatori che desiderano fare in modo che i loro pacchetti Emacs Lisp funzionino con entrambi gli emacs devono fare attenzione ad evitare caratteristiche specifiche di entrambi. Per esempio, XEmacs introduce il concetto di extents, ad una regione di testo possono essere assegnati attributi come colori e font. Una cosa simile ma non identica, overlays, è stata aggiunta in seguito ad Emacs. È prassi del progetto XEmacs mantenere la compatibilità con le API di Emacs, fornendo per esempio uno strato di compatibilità implementando gli overlays con funzionalità native.
Lo scisma tra Emacs e XEmacs è uno dei più conosciuti esempi di fork (un altro famoso fu la divisione di BSD dallo Unix di AT&T). Entrambi gli emacs sono distribuiti sotto la GPL (in effetti, il copyright di molto del codice XEmacs è posseduto dalla Free Software Foundation) quindi il codice potrebbe essere scambiato tra i due progetti in linea di principio. Il progetto Emacs ha però la prassi di includere solo contributi il cui copyright sia stato assegnato alla FSF, con lo scopo di applicare il copyleft. Questo non è sempre possibile con il codice di XEmacs.
Esiste una rivalità significativa fra i due gruppi, che è il motivo per cui nuove funzionalità in uno dei due editor appaiono prima o poi nell'altro. D'altro canto, molti sviluppatori contribuiscono ad entrambi i progetti; in particolare svariati sottosistemi lisp come Gnus e Dired sono sviluppati per funzionare con entrambi.

## Stato del progetto

Lo sviluppo di XEmacs si verifica in tre rami: stabile (stable), gamma e beta, quest'ultima è la prima a ricevere nuove funzionalità, ma l'ultima a essere testata. A novembre 2003 le versioni in questi rami sono 21.4.14 e 21.5.16, senza nessuna versione gamma. Il numero delle versioni segue uno schema simile a quello del kernel Linux, con il secondo numero dispari per segnalare una versione di sviluppo e pari per le versioni stabili.
La versione 20.0 è stata pubblicata il 9 febbraio 1997, la versione 21.0 il 12 luglio 1998.