[precedente] Editoriale - Copertina - Portatili [successivo]

Articolo


GNOME: il futuro dell'Open Source a colpi di mouse

Cos'è GNOME?

GNOME è un progetto della sempre più grande comunità Open Source, finalizzato alla costruzione di un desktop environment moderno e potente. Dopo meno di diciotto mesi dall'inzio del progetto è stata rilasciata la versione 1.0, che significa avere a disposizione una base solida su cui cominciare a sviluppare applicazioni. Solida non significa stabile: tutti gli sviluppatori, con in testa Miguel de Icaza (il leader del progetto), hanno riconosciuto che per quanto riguarda la stabilità la versione 1.0 è stata un poco prematura. A breve distanza di tempo sono state rilasciate ben otto nuove versioni per arrivare a un prodotto stabile: le gnome-libs 1.0.9 (le più recenti mentre sto scrivendo) sono piuttosto robuste.

Ma cos'è veramente GNOME? Fondamentalmente si tratta di un insieme di piccole utility e grosse applicazioni che condividono l'interfaccia, basata per lo più sulle librerie GTK+. Le GTK+ sono un'ottima base di partenza: The Gimp è forse il progetto più importante sviluppato con GTK+, e il risultato è ottimo. Per creare un ambiente omogeneo non sono però sufficienti: per questo motivo sono state sviluppate le gnome-libs, grazie alle quali si possono creare facilmente applicazioni che abbiano lo stesso look and feel. Per esempio tutte le buone applicazioni di GNOME hanno associati gli stessi hot-keys per aprire un file, per chiudere l'applicazione e così via; tutte le dialog hanno lo stesso aspetto, etc.

Ovviamente il comportamento e l'interfaccia delle applicazioni di GNOME sono almeno in parte personalizzabili. L'aspetto di tutti gli oggetti di interfaccia (bottoni, scrollbar, menu, etc.) è personalizzabile grazie al pacchetto gtk-engines, che permette la temificazione di tutti questi aspetti. Per farvi un'idea, potete dare un'occhiata a http://gtk.themes.org. Inoltre è supportata la localizzazione delle applicazioni tramite gettext: è sufficiente settare opportunamente la variabile d'ambiente LANG e tutte le applicazioni parleranno la lingua che desiderate. La traduzione delle applicazioni in Italiano è lontana dall'essere completa: tuttavia recentemente alcune persone hanno ripreso tale lavoro, per cui vedremo i risultati a breve.

A differenza di KDE non esiste un Window Manager specifico per GNOME: è stato definito uno standard che i Window Manager devono seguire per interagire correttamente con il resto del desktop environment, e già parecchi Window Manager sono pronti: fvwm2, Enlightenment, Window Maker, ICEwm sono quelli che conosco. Ma cosa succede se il vostro Window Manager preferito non è compatibile? Nessun problema! Solo non potrete usufruire di alcune utili caratteristiche: un corretto session managment, lo stupendo GNOME-pager, etc. Se da un lato questo può rendere meno omogeneo l'ambiente, dall'altro viene mantenuta la libertà di usare il Window Manager preferito permettendo una personalizzazione importante per il desktop.

Uno degli aspetti più interessanti di GNOME è rappresentato dall'utilizzo di CORBA: si tratta di una tecnologia che consente a due programmi, o a due parti di un programma di comunicare tra di loro: nel caso dei due programmi, questi possono girare su macchine differenti (ovviamente connesse in qualche modo) e possono essere scritti in linguaggi diversi. Per esempio è possibile scrivere un mail reader in C++ che gira sulla macchina A, ma che non va a leggere direttamente la base messaggi, ma va a chiedere quali messaggi sono disponibili a un altro programma scritto in Java che gira sulla macchina B. In pratica viene utilizzata un'interfaccia standard per la comunicazione tra applicazioni estremamente potente e flessibile.

Dato che non era disponibile un'implementazione di CORBA soddisfacente (per motivi di licenze e per motivi tecnici), i ragazzi di GNOME hanno deciso di scriversene una da zero. Il risultato è ORBit: un'implementazione scritta in C, estremamante veloce e che non ha grosse pretese di memoria, si tratta senza dubbio di una delle migliori implementazioni di CORBA in assoluto. Inoltre ORBit è ormai stabile, ed è una cosa importante, visto che è il collante di tutto quello che riguarda GNOME.

Tutto il cuore di GNOME, le librerie su cui si basa, sono sotto licenza LGPL (tranne ORBit, che è sotto GPL), il che permette a chiunque di sviluppare software con tali librerie, purchè siano linkate dinamicamente. Questo significa che chiunque può scrivere programmi per GNOME, oppure fare il porting di programmi già esistenti: con questa licenza è anche possibile scrivere applicazioni commerciali, senza dover pubblicare il codice o nulla del genere. Questo rende GNOME un progetto decisamente aperto.

GNOME è ancora più aperto se si considera che esistono interfacce per non pochi linguaggi: C, C++, Objective C, TOM, Guile, Perl, Python e quant'altro. Inoltre il cuore di GNOME (e sperabilmente anche tutte le applicazioni) sono portabili tra diversi sistemi: GNOME funziona sotto Linux, FreeBSD, SunOS/Solaris, Irix e teoricamente su tutti i sistemi Unix-like.

Qual è lo stato attuale di GNOME?

GNOME è un progetto giovane, e soffre della sua gioventù. D'altro canto è un progetto ben coordinato e a cui lavorano ottime menti. In un anno e mezzo, oltre ad esser riusciti ad ottenere un'ottima interfaccia di base, sono stati prodotti elementi importantissimi, quale l'implementazione di CORBA; oltretutto lo sviluppo si preannuncia sempre più veloce, grazie ai nuovi strumenti di sviluppo (GLADE, aspetti interessanti delle librerie, ORBit). Ma è veramente utilizzabile GNOME, adesso? Io attualmente sto utilizzando i pacchetti debian dispobibili più recenti di gnome-libs (1.0.9-1), gnome-core (1.0.5-0.2), GMC (4.5.30-2), e come window manager uso Enlightenment (0.15.4-5). Fino a poco tempo fa prendevo tutto dal CVS, quindi mantenevo il sistema sempre superaggiornato. Nonostante i pacchetti debian non siano aggiornatissimi (sul CVS si trovano nuovi bug-fix e nuovi elementi), il sistema che sto usando adesso è stabilissimo. A parte GMC, tutto il resto non dà nessun problema. È incredibilmente bello da vedere, grazie alla temificabilità di Enlightenment e delle gtk, e in linea di massima lo preferisco a KDE, sebbene KDE abbia al suo attivo parecchie applicazioni decisamente valide.

Le applicazioni importanti per GNOME per ora sono ancora poche ed oltretutto si registrano esempi contraddittori: GMC, il file manager, basa le sue fondamenta sul veterano Midnight Commander e nonostante questo non è sicuramente il software più stabile dell'universo. D'altro canto esiste Gnumeric, uno spreadsheet, un progetto incredibile: nostante la complessità dell'applicazione, in meno di tre mesi di sviluppo si è arrivati ad un'applicazione valida e stabile. Il fervore è grande: il numero di applicazioni sta crescendo e la voglia di fare non manca. La settimana scorsa Miguel de Icaza ha lanciato sulla mailing list degli sviluppatori un messaggio dove accusava la mancanza di un buon mail client per Gnome: in meno di 48 ore erano già decine le persone che discutevano seriamente sul progetto. Viste le premesse c'è da aspettarsi una velocità di sviluppo comparabile a quella di Gnumeric, se non maggiore, visto che parecchio codice di Gnumeric può essere riutilizzato.

Un grosso freno per lo sviluppo deriva dalla mancanza di documentazione. Se è vero che esiste un ottimo tutorial per GTK+ (anche se spiega solo le basi), non si può dire la stessa cosa per GNOME. Solo una piccola parte delle librerie di GNOME è sufficientemente documentata: esiste un progetto per rimediare a questo problema, ma per ora è ancora in alto mare. In pratica per quasi tutte le cose più interessanti è indispensabile andare a leggere i sorgenti delle librerie, oppure andare a guardare esempi di implementazione di altri programmi. È un vero peccato, perché una volta che si capiscono i meccanismi di base, risulta abbastanza semplice sviluppare un'applicazione per GNOME: è praticamente come programmare con le GTK+ (che è reso semplice dal valido tutorial), con la differenza che ci sono nuovi widget a disposizione e bisogna seguire alcune semplici regole, quasi tutte banali e che spesso semplificano ulteriormente lo sviluppo (ad esempio la creazione di menu). Il mio consiglio per qualcuno che volesse cominciare a sviluppare applicazioni per GNOME è di imparare prima a programmare bene in GTK+, prendendo come punto di riferimento il tutorial; quindi leggere tutta la documentazione disponibile per programmare in GNOME, nonchè analizzare i sorgenti dei vari gnome-hello, e magari quelli di alcune applicazioni ben fatte, come per esempio GTop.

Considerazioni personali.

Ho cercato di essere il più oggettivo possibile in questo articolo, ma quello che penso veramente invece è che GNOME è il progetto della comunità Open Source più interessante dopo il GCC e il kernel Linux. Le prospettive sono grandiose, le idee di base sono validissime e potrebbero portare a un qualcosa di veramente importante: l'equivalente di bash per le interfacce grafiche, con la medesima potenza. The Gimp è un esempio di quello che la comunità Open Source riesce a produrre per il mondo reale: un programma di elaborazione immagini tale da far concorrenza ai più rinomati software commerciali. GNOME, benchè di un ordine di grandezza più complesso di The Gimp, ha tutti i requisiti per seguire la stessa strada ed ottenere gli stessi risultati. Sono decisamente ottimista. GNOME potrebbe essere un altro grande successo per l'Open Source stesso: potrebbe avvicinare al nostro mondo una gran quantità di persone, e questo non può che essere un bene per chi crede veramente nell'Open Source.

Come ottenere GNOME

Debian

Se usate slink aggiungete in /etc/apt/sources.list:

 deb http://www.debian.org/~jim/debian-gtk-gnome/gnome-stage-slink unstable main 
Se invece state usando una distribuzione aggiornata a potato:
 deb http://www.debian.org/~jules/gnome-stage-2 unstable main 
Quindi, una volta connessi alla rete, dati questi comandi:
     # apt-get update
     # apt-get install gnome-panel gnome-session gnome-control-center gmc
     
Questo potrebbe essere già un buon inizio. Poi, potreste dare un'occhiata ad altri pacchetti di GNOME.

Una volta scaricati questi pacchetti editate il vostro file ~/.xinitrc in modo tale che rimanga solo questa riga:

     gnome-session
     
Dovrebbe essere sufficiente.

RedHat

A questo indirizzo http://www.gnome.org/start/getting_rh.shtml c'è tutto quello che avete bisogno di sapere.

SUSE

Qui: http://www.gnome.org/suse/gnome.html troverete tutte le informazioni necessarie.

Slackware

Qui: ftp://ftp.gnome.org/pub/GNOME/gnome-1.0/slackware/ troverete i pacchetti per Slackware.

E qui: http://www.ncal.verio.com/~hakker/slackware-gnome-HOWTO.txt un HOWTO il cui titolo mi sembra abbastanza esplicativo.

Altre distribuzioni

Per le altre distribuzioni potrebbe essere necessario compilare GNOME da zero. Qui: http://www.gnome.org/gnome-1.0/ potrete trovare informazioni utili. In linea di massima comunque non è difficile. Basta avere installate le versioni più recenti che riuscite a trovare di:

Quindi scaricare i pacchetti gnome-libs, libgtop, gnome-core, control-center. Dovrebbe bastare. Per compilare questi pacchetti, normalmente è sufficiente scompattarli, entrare nella directory creata e lanciare:
     # ./autogen.sh
     # make
     # make install
     # ldconfig -v
     

Link utili

di Andrea Bosio


[precedente] Editoriale - Copertina - Portatili [successivo]