2. Introduzione

Ai tempi in cui Unix era cosa nuova, intorno al 1970, le interfacce grafiche erano solo stranezze con cui si giocherellava nei laboratori (lo Xerox's PARC per la precisione). Al giorno d'oggi, comunque, ogni sistema operativo che vuole essere un minimo competitivo ha bisogno di un sottosistema GUI (Infaccia Grafica per l'Utente). Le GUI sono ritenute più facili da usare. Ma questo non interessa granché ad un utente di Unix, sistema che è sempre stato, tradizionalmente e in un certo suo modo, abbastanza insensibile alle esigenze di usabilità dei propri utenti, preferendo la versatilità alla facilità d'uso. Tuttavia ci sono parecchi motivi per cui una GUI è desiderabile anche su un sistema Unix. Per esempio, data la natura multitasking di Unix, è naturale avere in ogni momento molti programmi che girano sulla stessa macchina. Una GUI dà più controllo su come i programmi sono visualizzati sullo schermo, fornendo strumenti per gestire moltissimi programmi in contemporanea. E poi alcune informazioni rendono di più in formato grafico (alcune, addirittura, possono essere visualizzate solo in forma grafica; come il porno e altri dati intrinsecamente grafici).

Storicamente Unix ha ricevuto molti miglioramenti provenienti da ambienti accademici. Un buon esempio è il codice di rete di BSD, aggiunto alla fine degli anni '70, che era, ovviamente, il risultato del lavoro svolto all'università della California, a Berkeley. Anche il sistema X Window (anche detto X, ma mai X Windows), che rappresenta le fondamenta per la maggior parte dei sottosistemi GUI dei sistemi Unix moderni (inclusi Linux e i vari BSD), è il prodotto di un progetto universitario, ovvero il progetto Athena del Massachusetts Institute of Technology (MIT).

Unix è sempre stato fin dai suoi inizi multiutente, multitasking e time sharing. Inoltre, da quando vi sono state incorporate tecnologie di rete, ha avuto la capacità di permettere a un utente di connettersi da remoto e lavorare sul sistema. Precedentemente ciò era fattibile o collegandosi via terminale seriale o attraverso una connessione di rete (il leggendario telnet).

Quando giunse il tempo di sviluppare un sistema GUI che potesse girare principalmente sotto Unix, questi concetti vennero tenuti a mente e incorporati nella progettazione. In realtà X ha una struttura piuttosto complessa, cosa che è spesso stata menzionata come uno svantaggio. Tuttavia, proprio grazie alla sua struttura, esso è anche un sistema molto versatile, e ciò diverrà molto chiaro quando spiegheremo come si incastrano fra loro le parti che vanno a comporre una GUI.

Prima di andare a vedere l'architettura di X, è necessario parlare un po' della sua storia e di come esso sia arrivato sui sistemi Linux.

X è stato sviluppato dal progetto Athena e rilasciato nel 1984. Nel 1988 un ente chiamato "Consorzio X" prese le redini del progetto, e ad oggi gestisce il suo sviluppo e la sua distribuzione. Le specifiche di X sono disponibili al pubblico, mossa saggia che ha reso X onnipresente. Ecco come venne alla luce XFree86: XFree86 è l'implementazione di X sulle nostre macchine Linux. XFree86 funziona anche su altri sistemi operativi, come i vari *BSD, OS/2 e forse altri. Inoltre, nonostante il suo nome, XFree86 è disponibile per diversi tipi di processore.