LyX () è un software libero con interfaccia grafica per elaborare testi. Viene descritto dagli sviluppatori non come un word processor ma come un document processor in quanto permette di concentrarsi sulla struttura del testo invece che sul suo layout. La fase di stampa viene gestita producendo codice , con il quale è possibile una stampa di qualità elevata. Gli sviluppatori ci tengono a sottolineare che si tratta di un editore WYSIWYM (What You See Is What You Mean) e non WYSIWYG (What You See Is What You Get).

È particolarmente adatto all'elaborazione di testi scientifici, ma si sta diffondendo in ambito umanistico e in generale accademico, grazie anche alla possibilità di gestire database bibliografici (attraverso BibTeX), ed è spesso usato per la scrittura di romanzi, specialmente eBook. Si pone come alternativa a nel senso che pur producendo codice evita di doverlo scrivere, il che è particolarmente vantaggioso in documenti con formule matematiche o tabelle. Gli sviluppatori in realtà non gradiscono troppo la definizione di «front end di », giustificando ciò con il fatto che non memorizza il documento con codice ma con un proprio formato, e anche dal fatto che si possono esportare i documenti anche in altri formati, come ad esempio DocBook. La presenza di è comunque indispensabile ed è innegabile che LyX trovi i suoi utenti in particolar modo tra utilizzatori di . Infatti in diversi siti personali, di persone anche esterne al progetto LyX, il programma viene praticamente sempre citato in ambito . Lo stesso vale per le diverse recensioni che si possono trovare nelle riviste o, più raramente, nei libri.

È disponibile soprattutto per sistemi operativi con X11 (tipicamente Unix e GNU/Linux), ma esistono anche versioni binarie per Win32 e Mac OS X.

Storia LyX nasce nel 1995 come tesi di laurea di Matthias Ettrich, iniziatore e attuale coordinatore del più famoso progetto KDE. Lo scopo iniziale era un programma che permettesse di fare dei "documenti belli". Il progetto nasce con il nome LyriX in ambiente Unix, sui calcolatori dell'Università di Tübingen, dove l'iniziatore era studente di informatica. Dopo pochi mesi Ettrich rende pubblico il proprio progetto, distribuendolo a partire dalla versione lyrix-1.03 del 7 luglio 1995 con la licenza GPL. In un lungo thread svoltosi nei mesi di giugno e luglio 1995 nel gruppo di discussione comp.os.linux.misc, vengono discussi i primi progetti di wordprocessor WYSIWYG per GNU/Linux e il 29 giugno compare il primo riferimento a LyriX, primo nome di LyX. Dalla discussione che ne segue si vede che LyriX benché dichiarato dall'autore ancora in fase alpha, è considerato abbastanza maturo per essere usato.

Nel 1996 — nell'ambito del nuovo progetto KDE — Ettrich crea KLyX, una versione di LyX per KDE, che si basa sulle librerie Qt della Trolltech. Dalla versione 1.3 il frontend Qt viene integrato nella distribuzione standard di LyX, fino a quando con la versione 1.5 le Xforms usate in precedenza vengono abbandonate del tutto, risolvendo definitivamente dei problemi legati alla licenza di distribuzione.

La distribuzione LyX può essere usato sotto diverse piattaforme Unix (GNU/Linux, macOS, BSD, Irix, Solaris e altre), OS/2 e Windows. Non tutte le funzionalità sono supportate da tutte le piattaforme. In particolare, il LyX-server non è supportato da Win32 in quanto utilizza caratteristiche della gestione dei file inesistenti sotto Windows.

LyX può essere scaricato dal sito ufficiale e da suoi mirror, sia il sorgente che le versioni compilate; inoltre è incluso in tutte le principali distribuzioni Linux, in cui è possibile installarlo direttamente dal gestore di pacchetti.

Le forme di comunicazione e informazione LyX, come d'altronde la stragrande maggioranza dei prodotti opensource, non viene pubblicizzato in senso convenzionale. La sua diffusione è dunque legata ad altre forme di informazione. Una è la presenza stessa nelle distribuzioni GNU/Linux, in quanto il software di queste è organizzato in pacchetti. LyX viene compreso ad esempio nel pacchetto dedicato a e viene presentato come un "wordprocessor WYSIWYG basato su ". Il target in questo caso sono le persone interessate a e non persone alla ricerca generica di un programma per videoscrittura.

Un'ulteriore forma per aumentare la popolarità di LyX sono articoli su riviste o libri. Si tratta di riviste e testi dedicate a GNU/Linux o . A parte le 25 pagine nel libro di Kofler, per il resto si tratta di una presentazione più o meno ampia del programma, indicando a volte il sito Internet oppure includendo il programma nel CD allegato. Inoltre esistono articoli o citazioni pubblicate su Internet da parte di siti specializzati in notizie e dunque visitati da utenti che di per sé possono persino ignorare l'esistenza di . Il sistema di ipertesto permette a tali articoli di rinviare direttamente al sito di LyX o ad altre risorse collegate. Gli articoli trovati risultavano nella stragrande maggioranza presenti in siti specializzati per GNU/Linux.

Esiste pure la possibilità che una persona utilizzi un motore di ricerca ricercando un programma o altro, senza conoscere l'esistenza di LyX. Interrogando i motori di ricerca si è visto che una ricerca riguardante e WYSIWYG porta ottimi risultati per LyX, ma anche una ricerca per un wordprocessor sotto GNU/Linux ha buone probabilità di indicare LyX.

A queste forme di pubblicità bisogna aggiungere un'ultima risorsa direttamente controllabile dal LyX-Team: i gruppi di discussione, in particolar modo comp.os.linux.announce. Intervistando gli utilizzatori di LyX è risultato che le succitate modalità sono state effettivamente la fonte per la scoperta di LyX, alle quali bisogna aggiungere il passaparola tra amici o colleghi. Le due modalità principali risultano essere Internet, specialmente con i motori di ricerca, e la presenza di LyX dentro le distribuzioni GNU/Linux.

Per concludere si possono citare le occasioni nelle quali singoli collaboratori del progetto presentano LyX a convegni o incontri riguardanti l'Open Source in genere e GNU/Linux in particolare.

Il processo di sviluppo di LyX La genesi del progetto Gli inizi LyX nasce nel 1995 come tesi di laurea di Matthias Ettrich. Già dal primo anno cominciano le prime collaborazioni, alcune delle quali durano fino alle attuali versioni. Nel 1998 compaiono raccolte di software su CD che includono per la prima volta anche LyX.

Tra il 1997 e il 1998 si sviluppa una discussione su quali librerie grafiche utilizzare. Di fatto vengono proposte le librerie Qt e gtk+, la prima non ancora libera, l'altra nata già GPL. In quest'ambito Ettrich porta LyX verso il progetto KDE creando KLyX, ma la scelta della libreria Qt porta a discussioni sul fatto che non essendo tali librerie libere, di fatto veniva violata la licenza GPL con la quale veniva distribuito LyX. D'altronde anche l'utilizzo delle librerie xforms violava la GPL. Da qui la scelta di licenziare LyX con una GPL modificata.

KLyX esce in marzo 1998, ma non ha tra gli sviluppatori il successo sperato, in quanto gli sviluppatori di LyX non passano al nuovo progetto e la collaborazione tra i due non è intensa. Questa biforcazione del codice mette però in evidenza l'utilità di sviluppare LyX in modo tale da rendersi indipendenti dall'interfaccia grafica (GUII — GUI Independence). L'idea e la speranza era di trovare una sufficiente collaborazione sia in campo KDE che in campo Gnome e, in attesa di raggiungere l'indipendenza dalla GUI, mantenere le xforms come una delle possibili implementazioni. I tempi si rivelano più lunghi del previsto, anche se nel 2001 l'indipendenza sembra vicina al successo. Comunque sia, una delle prime conseguenze della decisione a favore della GUI è che si separa lo sviluppo del kernel dallo sviluppo riguardante l'interfaccia grafica.

La prima svolta di progettazione In seguito alle discussioni svoltesi tra gli sviluppatori all'inizio del 1998, anche in seguito alla distribuzione di KLyX, venne deciso di sviluppare LyX in modo tale, da separare il codice di LyX in senso stretto (LyX core o kernel) dal codice necessario per comunicare con l'utente. Questa separazione è cominciata di fatto con la versione (non stabile) 0.13.

La Graphical User Interface (GUI) è composta, oltre che dalla finestra principale che permette di vedere e scrivere il testo, dai menù, dalla barra degli strumenti, il minibuffer, i popup e quant'altro venga usato per comunicare con l'utilizzatore. In LyX, idealmente, la parte GUI è tutto ciò che non serve quando si usa LyX per processi batch.

L'indipendenza dalla GUI implica che gli sviluppatori possono ignorare il lavoro svolto da chi implementa l'interfaccia con l'utente (che potenzialmente potrebbe essere anche di tipo testo e non grafico), mentre gli sviluppatori della GUI possono usare un frontend 7 di proprio piacimento, senza conoscere i dettagli del LyX core. La parte che mette in contatto i due aspetti è il cosiddetto back end.

Tale indipendenza permette così di avere lo stesso programma, LyX, con interfacce diverse, evitando in questo modo il rischio di forking che si concretizzò con KLyX e che avrebbe potuto rendersi necessario con il progetto CJK-LyX. La scelta di separare il più possibile il kernel dall'interfaccia utente rende più facile il port verso sistemi operativi diversi da Unix e GNU/Linux, come ad esempio OS/2 e Windows, aprendo la possibilità ad un port nativo 8. Gli sviluppatori di LyX non hanno seguito completamente la soluzione scelta dal progetto opensource Mozilla, in quanto ritenuto tra l'altro troppo lento, pur considerandolo un punto di riferimento.

L'intenzione è di rendere l'indipendenza il più trasparente possibile dal punto di vista del LyX core. Inoltre dovrebbe rendere possibile lo sviluppo multi-toolkit, in modo che possano esistere diverse versioni di LyX che si distinguono soltanto per l'interfaccia con l'utente, integrandosi meglio con l'ambiente scelto dai porter: KDE piuttosto che Gnome in ambito GNU/Linux, ma anche OS/2 piuttosto che Windows per quanto riguarda i più noti sistemi operativi grafici proprietari.

La GUI non è ancora completa, si tratta infatti di modificare il codice un modo graduale. Non è stato neanche completata una GUI che non usi le xforms che rimangono di fatto l'implementazione di riferimento. Diversi gruppi lavorano alle seguenti librerie come alternativa alle xforms: Gtk/Gnome, Qt/KDE e Qt2. Da quanto pubblicato sul sito si può notare come i diversi gruppi lavorino con priorità simili ma non uguali, in quanto alcune parti sono state implementate da tutti e tre i gruppi, altre invece solo da uno o due di loro. Trattandosi di un progetto che per definizione coinvolge un numero imprecisato di sviluppatori, il LyX-Team ha scritto un'ampia documentazione destinata agli altri (potenziali) sviluppatori.

Le versioni Nell'arco di quasi cinque anni le linee di codice sono sestuplicate. Al crescere della complessità è corrisposta una equivalente organizzazione dei file i quali mantengono nel tempo certe caratteristiche: sono formati mediamente da 80-90 linee di codice ciascuno, corrispondenti a 20-25 istruzioni elementari con una media di 4 linee di codice per ogni istruzione. Un decimo del codice è formato da commenti.

Al crescere del numero di file nei quali è stato scomposto il codice complessivo, non corrisponde una crescita della complessità. Infatti si registrano mediamente 5-6 #include pro file, sia per le versioni di più modeste dimensioni come la 0.12.0 che per quelle maggiori come la 1.1.6. Stabile pure il rapporto tra istruzioni elementari e l'ammontare di variabili definite, che passa però da una media di 100 istruzioni pro variabile nelle versioni tra la 0.12.0 e la 1.1.4 ad una media di 70 istruzioni pro variabile nelle versioni successive.