LyX
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 LaTeX, 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, si pone come alternativa a LaTeX nel senso che pur producendo codice LaTeX evita di doverlo scrivere, il ché è particolarmente vantaggioso in documenti con formule matematiche o tabelle. Gli sviluppatori in realtà non gradiscono troppo la definizione di front-end di LaTeX, giustificando ciò con il fatto che non memorizza il documento con codice LaTeX ma con un proprio formato, e anche dal fatto che si possono esportare i documenti anche in altri formati, come ad esempio HTML. La presenza di LaTeX è comunque indispensabile ed è innegabile che LyX trovi i suoi utenti in particolar modo tra utilizzatori di LaTeX. Infatti in diversi siti personali, di persone anche esterne al progetto LyX, il programma viene praticamente sempre citato in ambito LaTeX. Lo stesso vale per le diverse recensioni che si possono trovare nelle riviste o, più raramente, nei libri.
È disponibile soprattutto per sistemi operativi con X-Windows (tipicamente Unix e GNU Linux). Esistono anche versioni per Win32 e una versione speciale per gli ideogrammi asiatici. Progetto (attualmente sospeso) derivato da LyX è KLyx.
| Indice |
|
2.1 La licenza d’uso |
Il progetto
La nascita
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 Troll Tech.
L’evoluzione storica
Inizialmente Lyrix/LyX viene sviluppato privatamente da Ettrich utilizzando le librerie xviews. Queste vengono sostituite quasi subito dalle librerie Motif, in quanto sembrava che queste dovessero diventare lo standard in ambito Linux e erano disponibili sui calcolatori dell’università frequentata da Ettrich. La versione di luglio 1995 - lyrix-1.03 - è già opensource con la licenza GPL ed ha già le principali funzionalità di LyX: icone con le quali modificare il font principali dei caratteri (emphasize, noun), inserire note a piè di pagina o al margine, figure o tabelle, cut e paste, codice LaTeX, codice LaTeX in ambiente math, nonché qualche shortcuts per accedere ad alcune delle succitate funzionalità.
Dietro suggerimento di un altro programmatore, Ettrich sostituisce dopo versione lyrix-1.05p2 le librerie Motif con le xforms in quanto le prime erano a disposizione soltanto a poche persone e ciò avrebbe ridotto il numero di potenziali collaboratori e di utilizzatori. Inoltre le xforms erano più facili da utilizzare rispetto alle Motif. Le xforms verranno mantenuto fino alla versione 1.2, salvo la scelta di Ettrich di usare le Qt che lo porteranno a creare il progetto KLyX derivato dal codice di LyX stesso.
I successivi rilasci hanno portato quasi sempre nuove funzionalità. Feature già presenti vengono migliorate, corrette o modificate. Da una versione all’altra vengono aggiunte anche alcune classi o modelli, che pur dando nuove facilitazioni all’utilizzatore non implicano modifiche nel programma in se. Lo stesso vale per la documentazione e l’internazionalizzazione. Le versioni più innovative sono la 0.9 e la 0.12, mentre le altre non introducono vere e proprie novità, ma migliorano sensibilmente la facilità d’uso di quelle precedenti o ne aumentano le opzioni disponibili. Tra una versione e l’altra vengono pure migliorate le parti riguardanti l’installazione e la configurazione del programma rendendo tali operazione più facili agli utenti inesperti.
La versione 0.7 introduce la gestione dell’indice e la possibilità di spostarsi tramite questo attraverso il documento. Per la prima volta è disponibile il cosiddetto lyxserver, con il quale è possibile utilizzare alcune funzionalità di LyX che non necessitano l’interfaccia grafica, come ad esempio la conversione di formati o la stampa.
La versione 0.9 introduce come principali novità la possibilità di vedere direttamente i grafici inseriti, di usare le tabelle in forma wysiwym nonché il Mathed, vale a dire una forma wysiwym di scrivere le formule mathematiche in ambiente math.
La versione 0.10 non introduce particolari novità per ciò riguarda le funzionalità, si tratta comunque di una versione importante in quanto è molto più stabile delle precedenti e tante funzionalità già presenti sono state notevolmente migliorate. La versione 0.9 era pur sempre una versione di sviluppo pertanto tutte le novità li menzionate sono delle novità per le versioni stabili.
La versione 0.12 - rilasciata nella primavera del 1997 - ha come principali novità l’internazionalizzazione, un migliore supporto di risoluzioni grafiche superiori a 640 x 480 anche a colori, nonche il supporto per il primo sistema operativo non-unix, OS/2. A partire dalla versione 0.10 gli sviluppatori hanno come obiettivo una pulizia generale del codice, pertanto non vengono implementate molte nuove funzionalità, ma si bada piuttosto a migliorare quelle precedenti oltre che a migliorare la performance e a rendere più leggibile il sorgente. Sono state comunque introdotte nuove funzioni come il supporto alla spedizione di Fax e la gestione delle versioni tramite RCS. La documentazione è stato in buona parte riscritta dall’appostito gruppo di lavoro.
Le versioni successive - dalla 1.0 in poi - non introducono nuove funzionalità ma le ampliano o ne semplificano l’uso. Vengono introdotti nuovi stili, vengono supportati ulteriori formati nelle fasi di importazione o esportazione dei documenti e tanti bachi vengono eliminati. La documentazione viene notevolmente ampliata e cresce il numero di lingue disponibili per l’internalizzazione. La versione 1.0.4 è la base per il primo port sul terzo sistema operativo supportato da LyX, ovvero Windows, mentre la versione speciale per scrivere documenti contenenti ideogrammi - LyX-CJK - è disponibile con la versione 1.1.4.
La distribuzione
La licenza d’uso
LyX è considerato un prodotto Open Source, in quanto e viene sviluppato e distribuito con una licenza leggermente modificata della GPL, modificata in quanto sono incluse delle librerie proprietarie (le xforms). Per il futuro si prevedono due novità tali che renderanno LyX completamente libero: da un lato gli sviluppatori hanno deciso di rendere LyX indipendente dal toolkit usato per l’interfaccia grafica, il che permetterà di usare le librerie libere come Qt e Gtk (entrambe licenziate secondo la GPL), dall’altro gli sviluppatori delle librerie xforms hanno dichiarato di volerle rendere libere.
Le piattaforme supportate
LyX può essere usato sotto diverse piattaforme Unix (Linux, Irix, Solaris e altre), OS/2 e Windows NT). 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.
Benché vi sia una ampia scelta di sistemi operativi, di fatto, i sistemi operativi prevalenti sono Linux e altri sistemi Unix. Ciò vale sia osservando il numero di utenti che il numero di messaggi inviati. Chiaramente nulla garantisce che il sistemo operativo utilizzato per mandare i messaggi coincida con quello utilizzato per lavorare con LyX, ma la statistica fornisce comunque alcune indicazioni.
I canali di distribuzione
LyX può essere scaricato direttamente dal sito ufficiale degli sviluppatori (o da suoi mirror), sia il sorgente che le versioni compilate. Presso altri siti sono disponibili alcune versioni particolari quali CJK-LyX, oppure programmi accessori quali i convertitori.
La disponibilità di LyX per una particolare piattaforma o distribuzione, dipende dalla disponibilità delle librerie xforms, le quali non sono libere. Specialmente in ambito Linux, dove la discussione sulle licenze è sempre presente, la presenza di LyX all’interno di una specifica distribuzione dipende dalla politica open source praticata. Ad esempio LyX non sarà disponibile nelle distribuzioni Debian fino a quando sarà necessaria una libreria proprietaria. Mentre la SuSE e la Mandrake hanno deciso di includere anche le librerie xforms, chi distribuisce Red Hat ha fatto la scelta opposta, cosicché per le prime due LyX si trova pure nella edizione minore, mentre Red Hat non include LyX neanche nella sua versione completa.
Tale situazione potrebbe cambiare completamente qualora le xforms venissero liberalizzate, oppure quando ci sarà una realizzazione completa di una GUI con le librerie Qt piuttosto che gtk.
Attualmente LyX è presente oltre che nelle distribuzioni Linux S.u.S.E. e Mandrake anche nella Stampede, TurboLinux e Demolinux e nelle distribuzioni FreeBSD e OpenBSD. Nelle distribuzioni Lanthan e OpenLinux è presente la versione KLyX. Si può pensare che LyX abbia una certa notorietà come prodotto, in quanto alcune distribuzioni, pur non includendo LyX stesso, allegano l’icona (in formato xpm) che lo rappresenta ad esempio nella barra delle finestre o nella barra delle applicazioni.
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 Linux, in quanto il software di queste è organizzato in pacchetti. LyX viene compreso ad esempio nel pacchetto dedicato a LaTeX e viene presentato come un "wordprocessor wysiwyg basato su LaTeX". Il target in questo caso sono le persone interessate a LaTeX e non persona 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 Linux o LaTeX. 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 T E X. 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 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 LaTeX e wysiwyg porta ottimi risultati per LyX, ma anche una ricerca per un wordprocessor sotto 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 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 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 GUII è che si separa lo sviluppo del kernel dallo sviluppo riguardante l’interfaccia grafica.
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.
Quanto detto indica che al crescere del progetto la complessità è aumentata in modo quasi lineare. Il repentino cambiare di alcuni indicatori mostra come i passaggi dalla versione 0.12 alla versione 1.0 e poi dalla versione 1.1.4 alla versione 1.1.5 siano stati i più intensi per quanto riguarda la programmazione.
La prima svolta di progettazione
In seguito alle discussioni svoltesi tra gli sviluppatori all’inzio 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 backend.
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/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 Linux, ma anche OS/2 piuttosto che Windows per quanto riguarda i più noti sistemi operativi grafici proprietari.
La GUII 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. Attualmente 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.
L’organizzazione del progetto
Non esiste un’organizzazione aziendale che si occupa dello sviluppo e la distribuzione di LyX. Si tratta invece di un’organizzazione informale, dove alcune decine di persone collaborano al progetto in modo gratuito e senza impegni formali. Complessivamente quasi un centinaio di persone, da tutti e cinque continenti ma in prevalenza europei, con più di quarant’anni di differenza tra il più anziano e il più giovane ma soprattutto tra i 25 e i 35 anni, hanno contribuito o contribuiscono tuttora ad alcune parti del progetto. Praticamente l’unica lingua di comunicazione è l’inglese.
I gruppi
Ci sono tre gruppi principali:
- gli sviluppatori o il developer team
- coloro che si occupano della documentazione (per gli utenti) o documentation-team
- i traduttori e chiunque si occupi dell’internazionalizzazione di LyX
Una singola persona può senz’altro contribuire ai lavori di più di un gruppo, come effettivamente avviene.
I vari gruppi procedono in modo autonomo. I contatti sono dovuti più che altro al fatto che coloro che effettuano la documentazione necessitano di saperne di più da parte degli sviluppatori, e, analogamente, coloro che traducono i "manuali" hanno bisogno di informazioni supplementari da parte di chi cura la documentazione.
Il Developer Team
È formato da una ventina di programmatori, di cui una manciata sono coloro che vi lavorano con più impegno, da più tempo e pertanto vi svolgono anche il ruolo di "coordinatori" o di "decisori" di un certo rilievo.
Il gruppo centrale degli sviluppatori
Lars Gullik Bjonnes era, prima dell’introduzione del CVS, il patch-mantainer, nel senso che le varie patches venivano spedite a lui, che le metteva poi insieme. Questa responsabilità gli derivava dal passaggio delle consegne avvenuto in seguito all’impegno di Ettrich a favore del progetto KDE. Con l’introduzione del CVS Bjonnes è colui che ne gestisce i diritti di scrittura. È inoltre lui che cura l’hardware (e il software) che ospita il sito principale www.lyx.org (compresi i sottodomini). Gli viene riconosciuto di fatto un ruolo maggiore sia perché partecipa al progetto fin dagli inizi, sia per le sue capacità, pur rifiutando l’etichetta di "capoprogetto".
Alcuni sviluppatori come Jean-Marc Lasgouttes, Jürgen Vigna e, per alcuni ambiti particolari, Angus Leeming e Allan Rae, hanno un particolare peso quando devono essere prese decisioni che riguardono più parti del codice o il progetto nel suo complesso (vedasi oltre, sui processi decisionali).
Un’altra decina di sviluppatori collaborano in modo continuativo al progetto ed hanno diritti di scrittura su alcune o tutte le directory del CVS. Altri ancora, pur ricevendo gli annunci tramite una mailinglist riservata, non possono parteciparvi (vedasi oltre, sui metodi di comunicazione). Infine vi sono sviluppatori che offrono sporadicamente contributi o patches, ma che non si può dire appartengano al gruppo LyX vero e proprio. Quando si vede che uno di questi collaboratori invia in modo più assiduo dei contributi ritenuti validi, gli viene proposto di entrare nella lista riservata degli sviluppatori oppure gli si assegnano i diritti di scrittura su una directory del CVS.
Come si può vedere nel riquadro nella pagina seguente, il gruppo principale degli sviluppatori è formato da persone che di professione si occupano di informatica o di matematica. L’età va dai 25 ai 35 anni, quattro sono sposati. Salvo RAE, l’unico di madrelingua inglese, parlano tutti correntemente almeno una lingua straniera, alcuni anche più di una. Lingua principale di comunicazione è l’inglese, parlato da tutti correntemente.
Salvo Pönitz e Rae, tutti gli altri hanno conosciuto LyX già ai suoi inizi, anche se non tutti hanno cominicato a contribuire al progetto fin dall’inizio, ma comunque da prima del 1999.
I processi decisionali
Non esistendo di fatto una vera e propria gerarchia, le decisioni vengono prese tramite consenso che si basa sul tacito e reciproco riconoscimento delle competenze dei colleghi. Solitamente colui che mantiene una directory del CVS può agire in piena libertà finquando le sue decisioni non incidono sul lavoro altrui. Anche in questi casi però i suoi colleghi possono fare le osservazioni che ritengono opportune, sia riguardo all’implementazione del codice che alla sua leggibilità. Di fatto la responsabilità della decisione da prendere rimane sempre a colui che mantiene la directory.
Decisioni di più ampio respiro vengono discusse pubblicamente sulla mailinglist, ove sia i pareri positivi che quelli negativi vengono motivati. La continua discussione fa in modo che venga presa la decisione ritenuta dai più la migliore. Coloro che la pensano diversamente accettano, dissentendo, tale decisione. Non si tratta di una decisione a maggioranza vera e propria, in quanto i pareri dei singoli vengono in qualche modo "pesati" dall’esperienza e competenza e dall’"autorità" di chi li esprime.
I contributi di "esterni" vengono o immediatamente accettati, p.es. in quanto si tratta di patches precise, oppure ne viene discussa l’utilità o meno del contributo, oltre che l’eventuale implementazione. Qualora il contributo non fosse interessante, la discussione si zittisce per mancanza di interesse.
Il singolo programmatore, quando vuole implementare una nuova funzione o effettuare modifiche più o meno ampie al proprio codice, può crearsi una propria sottodirectory all’interno della directory principale del CVS, testare il proprio codice e quando ritiene che questo funziona, proporlo per un test agli altri e includerlo nella directory principale del CVS (cancellando solitamente la sottodirectory che creò provvisoriamente).
La condivisione del codice
Trattandosi di un progetto open source, è evidente che chiunque possa vedere il codice, a maggior ragione gli sviluppatori stessi. Questo non vuol dire però che chiunque abbia i diritti di scrittura su quasiasi directory del CVS e anche i questi casi, il tacito accordo tra gli sviluppatori è che eventuali modifiche riguardanti codice "altrui" vengano proposte a colui che ne mantiene la directory.
Collegamenti esterni
