7. Cosa abbiamo finora

A questo punto abbiamo un'idea dell'architettura client-server di X, dove i client sono i nostri programmi applicativi. Con questo sistema grafico client-server possiamo usare parecchi window manager, che gestiscono tutto quello che viene visualizzato sullo schermo; abbiamo anche le nostre applicazioni client, che sono ciò che comunemente usiamo per lavorare. Tali applicazioni possono essere state programmate utilizzando molti toolkit diversi.

Qui le cose cominciano a farsi complicate. Ogni window manager ha un approccio diverso alla gestione dei client; il comportamento e le decorazioni variano. Inoltre, anche i client possono comportarsi ed essere visualizzati in maniera diversa tra loro a seconda del toolkit usato. Poiché non c'è niente che dica che gli sviluppatori debbano usare lo stesso toolkit per ogni loro applicazione, è perfettamente plausibile che un utente stia lavorando con diciamo sei diverse applicazioni, ognuna scritta con un toolkit diverso, e che tutte si comportino e vengano visualizzate diversamente. Ciò crea confusione perché il comportamento delle applicazioni non è consistente. Se si è mai usato un programma scritto con Athena widgets si noterà che non è molto simile a qualunque altra cosa scritta con Gtk. E si ricorderà la difficoltà di usare tutte queste applicazioni con un look & feel diverso. Questi difetti annullano il vantaggio di avere a disposizione un'interfaccia grafica.

Da un punto di vista più tecnico, usare molti toolkit diversi aumenta l'utilizzo delle risorse. I sistemi operativi moderni supportano il concetto di librerie condivise dinamicamente (dynamic shared libraries). Ciò significa che se ho due o tre applicazioni che usano Gtk come libreria linkata dinamicamente, quelle due o tre applicazioni condivideranno la stessa copia di Gtk, sia sul disco che in memoria: non c'è spreco di risorse. Se invece ho un'applicazione Gtk, un'applicazione Qt, qualcosa che usa Athena, un programma basato su Motif come Netscape, un programma che usa FLTK e un altro che usa XForms, sto caricando sei diverse librerie in memoria, una per ciascun toolkit. Bisogna tenere presente che tutti i toolkit forniscono in definitiva le stesse funzionalità.

Ci sono altri problemi. Il modo in cui si lanciano i programmi varia da un window manager all'altro. Alcuni hanno un gradevole menu per lanciare le applicazioni, altri no e si aspettano che l'utente apra un box per lanciare comandi, o usi una determinata combinazione di tasti, o ancora apra un terminale xterm e lanci tutte le applicazioni richiamandole da riga di comando. Ancora una volta non ci sono standard e le cose si fanno complicate.

Infine ci sono alcune caratteristiche utili che ci aspettiamo da una GUI e che fin qui non abbiamo trattato. Cose come un'utility di configurazione (o "pannello di controllo") o un file manager grafico, che certamente possono essere scritte come applicazioni client. E in tipico stile free software ci sono centinaia di file manager e centinaia di programmi per la configurazione del sistema, che prevedibilmente apportano ulteriore confusione al già difficile compito di avere a che fare con molti componenti software diversi.