Sempre più spesso si vedono sui forum di linux e in particolare di ubuntu si possono osservare numerosi flame. Da un lato si vedono schierati i parecchi nuovi utenti che hanno percorso la strada del sistema operativo libero, dall’altro i vecchi utenti che da parecchi anni usano linux. Il dilemma nasce da come queste diverse categorie di utenti vedono il futuro del pinguino. I nuovi utenti vorrebbero una semplificazione di linux per rendero più semplice e accessibile anche a chi non è un esperto di informatica. I vecchi al contrario vorrebbero che linux mantenga il suo stato attuale o addirittura criticano alcune novità oggi ormai affermate e addirtittura additano le novità introdotte da ubuntu come un passo verso la costruzione di un sistema operativo Windows Like.
Ovviamente questi gruppi non sono così compatti e le eccezioni ci sono però tendenzialmente è così. In questo articolo vorrei dimostrare come i progressi fatte (almeno fin’ora) e proposti nell’iniziativa Nuove interfacce per Ubuntu sono ben lontani da un sistema windows like
Gestori pacchetti
Ubuntu come tutti i sistemi debian-based usano un gestore pacchetti chiamato apt-get che è uno strumento davvero potente e versatile. In ubuntu, come in altre distribuzione esiste anche una GUI di apt-get chiamata Synpatic che è una delle tante disponibili. Windows non ha un gestore pacchetti e nemmeno una GUI: i programmi si installano usando degli exe. Questo aspetto è profondamente diverso. In ubuntu esiste anche un gestore aggiornamenti che si preoccupati di aggiornare in automatico. Niente di male: chi non lo vuole lo disabilita (se vuole aumentare le prestazioni del pc o preferisce aggiornare a mano) ma siamo ben lontani dal sistema di aggiornamento di windows che fa tutto da solo (e a volte pure di nascosto)
Gestione dei dischi, partizioni ecc. ecc.
In sistemi linux i dischi vengono gestiti utilizzando un filesystem distribuito. Ma cosa vuol dire? In linux e anche unix i dischi sono indicati come hdx o ultimamente sdx dove al posto di x ci vanno lettere come a,b,c,d ec c che distinguono le unita. SE abbiamo 2 dischi fissi avremo ad esempio sda e sdb. Se i dischi sono partizionati avremo sda1 sda2 che indicano le singole partizioni.
I dischi corrispondo a dei file contenuti nella cartella /dev/ dove sono presenti i dispositivi per il pc (è un po’ generico ma spero si capisca di più così). Per cui se abbiamo un disco tripartizionato avremo ifile /dev/sda1 /dev/sda2 /dev/sda3.
Un altro concetto importante è quello di “punto di mount”. Questo indica in parole povere la cartella in cui vogliamo montare la partizione. Per cui se scegliamo come punto di mount /media/disco dentro questa cartella vedremo il contenuto della partizione montata. Questo non vale solo per i dischi fissi ma anche per i floppy, i cdrom e le memorie usb e anche partizioni di rete NFS o SAMBA. Il comando mount richiede in generale che sia specificato il punto di mount.
Un altro concetto importante è il file fstab. Questo file contiene le informazioni che permetto al kernel di montare automaticamente all’avvio (oppure mediande un semplice mount /dev/sdxx) i dischi connessi al pc. Durante l’installazione di un sistema linux tipicamente tutte le partizioni sono riconosciute automaticamente e inserite in fstab così al primo avvio troveremo già tutto pronto.
Con questa costruzione si disponiamo di un vero filesystem distribuito.
Detto questo se tutto va bene in una distribuzione come ubuntu, fedora o mandriva non avrei mai bisogno di ritocare questo file. Se invece abbiamo bisogno di aggiungere un disco al pc bisogna mettere mano a fstab trovando la riga corretta da inserire. Un’interfaccia di fstab consente di fare questo in modo più veloce, con un riconoscimento del filesystem, del nuovo disco e la possibilità di settare le opzioni.
Linux riconosce tantissimi file system ed è così in grando di utilizzarli
In Windows cosa accade invece? La struttura è molto diversa. Niente file system distribuito. Windows impone che i dischi si trovino in C:, D: , e così via e niente punto di mount. Se in linux è del tutto trasparente quale sia il dispostivo, in Windows invece è il perno dell’archittetura del file system. Inoltre i file system riconosciuti sono davvero pochissimi così come pochissime le opzioni disponibili. Tutto è nascosto non da semplici GUI ma dal sistema operativo stesso che nasconte qualunque tipo di configurazione. Quindi non è la GUI che nasconte ma il sistema operativo stesso.
Configurazione del server x
Il server x è in semplici parole ciò che si occupa della grafica di un sistema linux ovvero di farci vedere gnome/kde/xfce e così via. Il server x parte con la schermata di login. La sua configurazione è contenuta nel file xorg.conf che contiene informazioni sul monitor (risoluzione, refresh), scheda video (driver, opzioni grafiche). Queste sono solo alcune delle opzioni, quelle più intuitive ma da xorg.conf si può fare molto di più.
Se il driver per la nostra scheda video funziona correttamente non sarà mai necessario mettere mano a xorg.conf perché la configurazione avviene automaticamente. Spesso però i driver o perché proprietari o perché open e fatti con metodi di reverse engeneering non funzionano così bene e si è costretti ad aggiungere risoluzioni mancanti, driver corretti o frequenze di refresh e così via. Una GUI di xorg.conf permette all’utente di scegliere il driver da un elenco e le frequenze per il proprio monitor. Chiaramente bisogna sapere quale è il driver per la propria scheda, mentre penso sia più intuitiva la scelta di risoluzione e refresh per il monitor. In caso di problemi hardware sarà sempre necessario ricorrere al terminale. L’utiliti displayconfig-gtk installata in Ubuntu Gutsy permette di fare questo, garantendo una configurazione del monitor più easy ma ovviamente limitata a driver e monitor.
In Windows invece non si vede nulla di tutto questo: si vedrà solo un’interfaccia grafica che sceglie refresh e risoluzioni e basta. Non avremo mai la possibilità di accedere a un file di configurazione del monitor/scheda video.
Gestore dei driver ristretti
Questa utilità è tipica di ubuntu e consente di gestire i driver proprietari. Molti criticano questa interfaccia che però di fatto permette di semplificare il procedimento di installazione dei driver. Infatti se non ho particolari esigenze sono più che sufficienti i driver forniti dai repository e il gestore aiuta a individuare automaticamente i driver proprietari che potrebbero far andare meglio il sistema. E’ vero che ad oggi per molti componenti, come le schede video nvidia ad esempio, l’uso di driver proprietari è necessario per sfruttare appieno la propria scheda grafica.
In Windows invece la situazione è ben diversa: i driver devo essere scaricati e installati a mano. E’ vero che se il computer aveva windows pre-installato allora è possibile che sia già tutto pronto, ma se installate Windows all’inizio non ci sono e vanno scaricati. Nel caso nvidia dal sito del produttore e installati col solito exe. La GUI di ubuntu quindi è tutt’altro rispetto alla situazione che si ha in Windows che forse è persino più complessa perché sono io che devo cercarmi il driver.
La differenza sta forse nel fatto che alcuni driver proprietari per linux non funzionano bene e quindi a volte l’uso del restricted manager può creare problemi.
Gestione delle interfacce di rete: LAN, WLAN, ADSL
La rete in linux viene gestita tramite il file di configurazione /etc/network/interfaces. Questo file contiene tutte le informazioni su ogni scheda di rete ovvero tipo di connessione (dhcp o statica) eventuale indirizzo ip con netmask e gateway. Questo file appare molto semplice per le reti LAN e comunque già gnome (ma anche kde) intergrano interfacce che non fanno altro che mettere a disposizione dei form o dei pulsati per configurare ma in pratica senza discostarsi molto dal file di configurazione. E’ copiare windows questo? Non credo è solo compilare il file avendo una inquadratura delle opzioni disponibili. Le cose invece si complicano per le reti WLAN. Infatti per connettersi a una rete wireless tutto si complica soprattuto se si ha a che fare con reti codificate con WPA. Infatti bisogna compilare correttamente il file interface aggiungendo ad esempio il nome della rete (id della rete), canale e così via e poi compilare un file wpa_supplicant che dipende fortemente dalla rete che si utilizza (ovvero tipo di codifica, nome, password, eventuale percorso dei certificati, driver). Questo file può far impazzire. Inoltre le informazioni della rete vanno ricavate con comandi da terminale, che comunque non sono complessi. Il vero problema sorge però in certe situazioni. Supponiamo di avere un pc portatile e di andare al lavoro. Arrivati vogliamo connetterci alla rete wireless aziendale. Per configurare tutto anche un utente esperto impiegherà molto tempo. Il giorno dopo invece avremo una conferenza e anche lì vorremo connetterci alla rete wireless e ancora una volta dovremo riconfigurare tutto. E’ stupido metterci così tanto per una semplice rete WLAN questo dovrebbe essere anche su linux un’operazione semplice e rapita (tra l’altro sto assumento che i driver della nostra scheda wireless funzionino a dovere e non sempre questo è vero). Sono nati così diversi programmi chiamati “gestori di reti” che permettono in modo semplice di collegarsi a qualunque rete wireless. Fra i più famosi per gnome esiste network manager, installato di default in ubuntu e wicd. Network manager è per me l’esempio di una GUI che funziona male: infatti non rispetta lo standard di /etc/network/interfaces e wpa_supplicant ma effettua a modo sua la configurazione. Questo è sbagliato perché dovrebbe essere possibile agire sai a mano che via GUI senza alcuna differenza. SE invece network manager è attivo le modifiche a mano non verranno rilevate oppure creeranno problemi di vario tipo. Wicd è invece molto migliore: infatti non fa nient’altro che compilare i file di configurazione standard come dovrebbe essere. Purtroppo al momento Wicd è ancora giovane ma molto promettente per il futuro. In Windows la configurazione di rete avviene tramite una apposita interfaccia secondo me molto invadente ma che funziona e permette di collegarsi in modo semplice alla reti. In questo caso un gestore di reti si comporta come windows ma di fatto mi sembra più giusto che la connessione alla rete wireless sia fatta in modo semplice non deve essere un’operazione lunga e complessa. Semplificarla non vuol dire essere come Windows. Vuol dire essere un sistema operativo moderno.
La configurazione dell’ADSL è in Ubuntu effettuata da un interfaccia dialog, ovvero una specie di GUI per terminale. Si attiva col comando pppoeconf e permette una semplice configurazione della connessione. Passarla a una GUI di gnome per esempio non cambierebbe niente sarebbe solo più carina esteticamente. Forse varrebbe la pena permettere la modifica di nome utente o password o scegliere la disattivazione/attivazione all’avvio della connessio anche dopo aver già configurato il ADSL. Forse mi sono documentato male ma non sono mai riuscito a scoprire dove pppoeconf salva le impostazioni finché poi non ho messo un router e non ho più usato pppoe e quindi ho lasciato perdere. In Windows l’ADSL viene configurato o con degli wizard (non poi diversi da pppoeconf se non forse più confusionari all’utente inesperto) oppure gli utenti più niubbi usano i cd forniti dalla società telefonica che installano un sacco di roba inutile perché Windows ha già tutto per connettersi all’ADSL (mi riferisco ovviamente ai modem ethernet che ormai sono i più diffusi). In linux non avremo niente di simile, niente finestrella ridicola che si apre aprendo un Browser. La bella idea è la voce nel menù di network-manager con le voci per connettersi e disconnettersi che di fatto lanciano per noi i comandi pon dsl-provider oppure poff per spegnere.
Le interfacce di rete sono gestite in modo indipendente dal sistema operativo per cui ci sarà sempre l’indirizzo ip , la netmask, il dhcp e così via per cui non vedo quanta differenza possa esserci da Windows. E in ogni caso c’è sempre un po’ di differenza perché in linux è sempre possibile avere più personalizzazione.
Il centro di controllo
Questa è uno dei punti più caldi. Kde possiede da tempo un control center che permette di configurare praticamente tutto. Gnome ha a sua volta un suo centro di controllo che però è più giovane. Windows ha invece il pannello di controllo. In realtà la funzione dei centri di controllo in sistemi linux è quella di raccogliere in modo ordinato vari applet e permettere una maggiore configurazione del sistema. Se così non fosse avremmo lunghi menù come sistema e preferenze e dovremo scorrere decine di voci. Non dico che il centro di controllo sia indispensabile ma sicuramente un qualcosa che raccolga in qualche modo tutti gli applet di configurazione ci vuole. E’ una questione di usabilità principalmente. Forse il modo migliore non è un centro di controllo ma sicuramente si può fare di meglio che un lungo menù pieno di voci
Conclusioni
Credo che queste cose non siano un avvicinamento a Windows ma siano passi in avanti per la modernizzazione di un sistema operativo. Tra l’altro non si tratta di prendere una altro strada ma è la direzione verso cui cammina Ubuntu ma anche altre distribuzioni. Consideriamo che ubuntu è venduta su pc desktop della DELL e deve quindi essere più che usabile. Esistono esempi negativi come network manager ma molti esempi positivi e pian piano si completerà la costruzione delle intefacce rispettando gli standard unix e senza effettuare una “Finestrazione”
del sistema. Anche perché la base unix rimane alcune differenze rimangono e vanno imparate così come tutti gli utenti windows sanno che c: è il disco fisso.
Le sfide dei vecchi utenti
Io credo che i vecchi utenti non debbano pensare di essere tagliati fuori con un sistema stravolto rispetto a quello di alcuni anni fa. Infatti io credo che l’utente medio voglia soltanto un sistema operativo usabile e pronto all’uso perché deve lavorarci, giocarci, ascoltare musica e così via. Deve cioè svolgere le funzioni di un sistema operativo, e non essere un hobby come se parlassimo di modellismo: molti infatti hanno windows in una partizione con cui fanno tutto e con linux si divertono a fare chissà che cosa ma poi di fatto non ci lavorano. Questo è sbagliato: su linux si fa tutto ciò che si può fare e se proprio si è costretti si usa Windows, se disponibile, per ciò che su linux non si può fare.
Gli utenti esperti devono continuare a fare quello che hanno fatto fino ad oggi: sperimentare. Ovvero ricompilare il kernel, installare i driver beta, lavorare con un sistema instabile in fase di sviluppo, fare operazioni oggi complesse ma che se utili verranno in futuro semplificate.
Se io per esempio decido di ricompilare il kernel tutti gli automatismi di ubuntu devono essere tolti e si torna a fare tutto a mano ma almeno con un motivo: fare un passo in avanti perché provo qualcosa che gli altri non hanno e il mio contributo può essere utile per il futuro di linux. Non è forse stupido rendere difficile anche l’operazione più idiota sembra di essere masochisti.
Esempio: utente medio -> installa i programmi da repository e usa subito il programma. Segnala eventuali bug della versione stabile
utente esperto -> scarica i sorgenti svn e li compila magari con particolari opzioni e ne fa che so recensioni su blog, guide , suggerimenti per gli sviluppatori e così via
C’è poi chi dice che se linux è più difficile aiuta ad impare di più. E’ vero fino ad un certo punto: io ho imparato fin’ora a risolvere i problemi che ho incontrato ma se tutto fosse sempre filato liscio non avrei imparato nulla. E in ogni caso è chiaro che i concetti unix saranno sempre nuovi a un utente Windows. Dovrà imparare cosa vuol dire punto di mount, la gestione dei permessi e la struttura del file system. E non esiste una GUI che nasconde questo perché unix è fatto così e windows è diverso. Per cui si imparano le basi essenziali per usare il sistema e chi vuole imparare di più può farlo gettandosi nella compilazione di programmi, driver e kernel.
