A settembre abbiamo parlato con Leonardo Favario, componente del Team per la Trasformazione Digitale. Il “Team Digitale” è un gruppo di esperti formato nel 2016 per volere del Governo, il cui scopo è preparare il necessario alla digitalizzazione della pubblica amministrazione.
L’attuale epidemia ha mostrato quanto importante sia la digitalizzazione per il futuro, visto che l’unico modo per non diffondere il contagio è contattare gli uffici pubblici da casa propria, ma è una cosa a cui che il Team Digitale lavora da tempo. Il rapporto tra i cittadini e la pubblica amministrazione è farraginoso, comporta ancora dover fare la fila presso gli uffici per poter consegnare un modulo o anche semplicemente ottenere informazioni per capire cosa bisogna fare. E anche il funzionamento interno alla pubblica amministrazione stessa è complicato, a causa di inconsistenze tra uffici diversi per competenze e territorialità e anche a causa della necessità di fare continuamente copie cartacee di documenti che potrebbero rimanere esclusivamente digitali. Negli ultimi anni il Team Digitale ha costruito il “sistema operativo del paese”, un insieme di software e linee guida che permettono alla pubblica amministrazione di digitalizzare man mano sempre più parti della propria attività.
Con Leonardo abbiamo parlato di quanto è stato fatto, come la piattaforma Developers Italia, l’identità elettronica, e la fatturazione elettronica. Per il futuro, possiamo solo sperare che da questo lockdown dovuto all’epidemia si impari l’importanza della digitalizzazione.
Alcuni anni fa Linus Torvalds, principale autore del kernel Linux, aveva accettato una nostra intervista. I temi discussi sono tutt’ora rilevanti e sempre interessanti per gli appassionati del software libero e open source, quindi abbiamo deciso di ripubblicarla online.
Era il 25 agosto 1991 quando Linus Torvalds comunicò di aver cominciato a lavorare su un sistema operativo open source: il sistema era basato sui programmi del progetto GNU e su un kernel di sua concezione chiamato Linux (il nome originale doveva essere Freax, ma il suo amico Ari Lemmke chiamò “linux” la cartella che conteneva il codice sul server FTP). Finalmente, il progetto GNU aveva un kernel a disposizione, e quindi il primo sistema operativo FOSS era pronto (anche se ancora non stabile). Linux stesso era nato da un controversia di Torvalds con il professor Tanebaum, docente della sua università, che aveva realizzato il kernel Minix. Questo aveva, secondo il padre di Linux, due fondamentali pecche: la prima è di essere realizzato con una struttura a microkernel (molto più complicato di un kernel monolitico), e di non essere liberamente modificabile. Il tempo ha dato ragione a Linus Torvalds: infatti Minix non ha avuto successo, a differenza di Linux, perché non era veramente open source, ed anche perché non solo Minix ma anche Hurd (entrambe microkernel) sono risultati troppo complessi per poter essere realmente funzionali.
Oggi Linus Torvalds è uno dei personaggi più influenti del mondo del Free Open Source Software, assieme a Richard Stallman (l’ideatore del progetto GNU e padre della filosofia free software). A differenza di Stallman, però, il padre del pinguino ha sempre mantenuto un profilo di basso livello, cercando di farsi trascinare il meno possibile nelle varie dispute della comunità. In questa intervista Torvalds ci rivela il suo pensiero e scopriamo che, forse, il principale motivo per cui riesce a rimanere super partes è l’essere estremamente razionale, capace quindi di mettere da parte i moralismi in favore di ciò che, semplicemente, funziona. Possiamo dire che se Stallman è il pastore spirituale della comunità FOSS, sempre pronto a tirare le orecchie a chi non segue le tavole dei comandamenti, Torvalds è un regista che dirige il film che la comunità sta realizzando.
LM – Ciao Linus, tutti noi sappiamo che sei il creatore del kernel Linux e di Git. Però sappiamo poco della tua vita personale. Puoi dirci qualcosa al riguardo? Linus Torvalds – Non so da dove cominciare… ho avuto a che fare con i computer sin dall’inizio della mia adolescenza: mio nonno (da parte di mia madre) era professore di statistica all’università di Helsinki, ed aveva uno dei primi computer per uso domestico (un Commodore VIC-20) che portava a casa per fare dei calcoli, a volte, quando avevo 11 o 12 anni. Io lo aiutavo a scrivere alcuni dei programmi (senza capire nulla della matematica che c’era dietro), e poi sono finito a scrivere giochi ed altri programmi presi da riviste d’informatica e manuali dell’epoca. Ed in certi casi scrivendo i miei stessi programmi.
I computer sono ancora il mio hobby, oltre che il mio lavoro. Al di là di quello, io leggo molto (ma per la maggior parte cose che si possono dimenticare senza problemi, come fantascienza e fantasy) e faccio scuba diving (immersioni subacquee – n.d.r.) ogni volta che posso.
Vivo a Portland, Oregon, in questi giorni (sono nato e cresciuto a Helsinki, Finlandia), sono sposato ed ho tre figlie adolescenti. E… no, nessuna di loro è molto interessata ai computer, se non come utente.
LM – Tu hai detto “Il software è come il sesso: è meglio quando è libero e gratuito”. Quindi qual’è la tua idea di software libero ed open source, ed in che modo questa è differente dall’idea di Richard Stallman?
Eh. Io non uso nemmeno più il termine “free software”, perché penso che sia un punto di partenza sbagliato.
Sia per l’ambiguità presente in lingua inglese tra “free” inteso come “libero” e “free” come “gratuito”, sia perché anche quando capisci la differenza dei due significati (che poi non è così difficile da comprendere) la parola “free” è talmente piena di carico emotivo (soprattutto negli Stati Uniti, “Land of the Free, rah, rah, USA USA USA!”) che chiunque la fa significare qualsiasi cosa voglia. Richard Stallman, in particolare, vuole definirla in un modo molto specifico ed usarla per un discorso sulla morale.
Io penso che la morale sia qualcosa di privato, e chiunque la utilizzi per fare una discussione qualunque stia sbagliando. Io posso avere le mie personali ragioni per preferire l’open source, ma sono le mie motivazioni personali, e non hanno nulla a che vedere con i motivi per i quali suggerisco agli altri di adottare l’open source.
Quindi io (ed anche altre persone) uso il termine “open source software”, e non mi disturbo a fare alcun stupido ragionamento moralistico. L’open source tende a essere semplicemente migliore dal punto vista tecnico, ed è molto più divertente partecipare al processo creativo quando questo è “open” e tutti possono collaborare. Open source significa che non c’è una singola entità che controlla, e nessuno può nascondere quello che sta facendo. Significa anche che le persone e le aziende possono competere a livelli differenti oltre al semplice software. E mi sembra interessante notare come delle persone si siano messe insieme per rendere Linux stesso migliore, ma poi altre persone prendono il risultato e lo utilizzano per fare delle altre cose interessanti che non hanno nulla a che vedere con Linux di per se, se non il fatto che avevano bisogno di un sistema operativo.
Quindi l’open source è un’ottima strada per i tecnici, affinchè possano lavorare insieme senza dover essere legati a un particolare ambito o a una azienda. Questo lo rende molto più interessante. Ma fornisce la possibilità di fare comunque cose interessanti, anche se il tuo obiettivo primario non è il software open source stesso.
LM – Che cosa ne pensi del progetto GNU HURD? Bisogna dire che HURD viene sviluppato dal 1990 e non è ancora stabile. Forse questo dimostra che i microkernel sono troppo complessi e il gioco non vale la candela?
Io penso che i microkernels siano fondamentalmente una idea sbagliata, perché pongono la complessità del progetto nel punto sbagliato (la comunicazione tra diverse entità) e ti limitano troppo dal punto di vista tecnico, mettendo da parte quel tipo di condivisione che è invece standard nei sistemi operativi tradizionali. Poi ci sono stati altri problemi con Hurd, e mentre una volta era un progetto interessante penso che ormai non sia più di rilievo da un bel po’ di tempo.
Detto questo, una delle belle cose dell’open source è che non deve necessariamente essere di rilievo: per persone che si divertono semplicemente a giocare con le cose, penso che Hurd possa essere ancora interessante.
LM – Sembra che tu non sia soddisfatto degli ultimi contributi degli sviluppatori al codice di Linux (hai detto che potresti “tornare a imprecare”)…
Questa non è certo una discussione nuova, c’è sempre stata questa tensione tra “persone che pensano sia più bello scrivere nuovo codice” e “hei, dobbiamo sistemare le cose per rilasciare la nuova versione”. Penso che al momento abbiamo trovato il giusto bilanciamento tra i due, ed il nostro ciclo di rilascio di circa 3 mesi, con una finestra di due settimane per il merge di tutti i nuovi contributi, e con poi circa 6-8 settimane per darsi una calmata funzioni piuttosto bene.
Però io finisco ancora per dover ogni tanto ricordare alle persone di darsi una calmata: capita nella maggior parte dei rilasci di una nuova versione, non è una novità, e penso che sia quasi naturale. In alcune versioni di più rispetto a altre, ma è una normale fluttuazione statistica.
LM – Quindi cosa vorresti vedere in un prossimo rilascio del kernel?
Beh, c’è un gran numero di cose su cui le persone stanno lavorando, ma alla fin fine le funzionalità di base del kernel si sono stabilizzate.
Per me personalmente, le modifiche più interessanti stanno nei miglioramenti del core, ma sono spesso molto piccole e difficili da notare: in un progetto che è vecchio più di 20 anni, il codice del core è abbastanza stabile, ed i miglioramenti sono dettagli che non importano a nessuno al di fuori del progetto stesso (a parte il fatto che rendono il kernel più efficiente e rendono più facili altri miglioramenti del codice).
Per quanto riguarda le nuove caratteristiche, la maggior parte di esse riguarda supporto per nuovo hardware. La maggior parte del lavoro fatto nel kernel è per supportare nuovo hardware e nuove architetture. Finchè i “ragazzi dell’hardware” continueranno a produrre versioni nuove e migliorate del loro hardware, noi “ragazzi del sistema operativo” avremo del lavoro da fare. Quindi non avremo mai veramente “finito”.
A volte – ma non così spesso – introduciamo anche nuove interfacce, specialmente con nuovi modelli d’uso (per esempio quando l’hardware diventa talmente piccolo ed economico da poter essere usato in modi completamente nuovi).
LM – Parlando del mondo mobile, al momento Android è il sistema operativo mobile open source più famoso. Vorremmo sapere che cosa pensi del sistema di Google ed anche dei concorrenti (per esempio Mer o Ubuntu Phone).
Ehi, io ero abituato a odiare i telefonini, perché per me erano semplicemente un altro modo per essere infastidito in qualsiasi posto io fossi. Ma con la nascita di Android per me non è più un telefonino, è un dispositivo mobile per leggere le email, ed ora lo porto sempre con me. Quindi io amo Android. E quando altri concorrenti saranno pronti, sarò felice di provarli. Una delle belle cose nell’avere a che fare con Linux è vedere come persone diverse usino Linux in modi che non erano assolutamente nei miei piani originali. Amo vedere nuovi dispositivi come questi.
LM – Sappiamo che hai utilizzato diversi ambienti desktop,passando da KDE a GNOME e poi XFCE. Quindi la domanda è: che cosa cerchi in un DE?
Quello che io cerco, più che altro, è essere lasciato in pace, ed avere la possibilità di adattare il DE in modo che le poche cose di cui ho bisogno siano a posto. Ed io non voglio che questa personalizzazione sia qualcosa su cui devo pensare più di tanto, per questo mi lamento se le poche cose che mi servono sono difficili da fare.
Per esempio, io voglio dei font più piccoli di quanto la gente normalmente desidera, perché sono abituato a avere un sacco di linee di codice (ed email) sullo schermo. Quindi i grandi font (soprattutto in cose “secondarie” come icone e barre del titolo delle finestre) che stanno prendendosi troppo spazio inutilmente, sono qualcosa di cui mi voglio liberare. Voglio che il mio lavoro sia fatto, le mie poche finestre aperte, ed il DE non dovrebbe intralciarmi. “Veloce, pronto, e leggero” è spesso più importante per me di “carino”.
E voglio che quelle poche cose che faccio siano facili da realizzare. Se non posso aprire un nuovo terminale con un singolo click del mouse su una icona che sia sempre visibile, allora c’è qualcosa di strano. Il fatto che io, a volte, abbia addirittura dovuto discutere con qualcuno su questa cosa è un po’ triste.
LM – Tornando al kernel Linux, oggi la maggior parte dei server di internet e dei dispositivi di ridotte dimensioni (dai telefoni ai router e le stampanti…) funzionano grazie a questo kernel. Forse, senza Linux queste tecnologie non esisterebbero nemmeno. Come ci si sente sapendo che miliardi di persone nel mondo utilizzano tecnologie e strumenti basati su un progetto software che tu hai creato?
Non ci penso molto, in realtà, ma penso al fatto che quello che io costruisco è importante per le persone, ed è importante per me.
Perché, certo, a me piace semplicemente programmare e giocherellare con la tecnologia, ma allo stesso tempo non voglio giocare tanto per il piacere di farlo: voglio lavorare su qualcosa che abbia un impatto sul resto del mondo. E quindi il fatto che Linux sia riuscito a avere un grande impatto, è una gran bella sensazione.
La lampadina a incandescenza di un lampione illumina con la luce calda del tungsteno il marciapiede ancora umido per la pioggia che ha smesso da poco, in una fredda notte a Cambridge, nel Massachussets. Il marciapiede corre lungo Main Street, interrompendosi sullo scivolo d’ingresso del Tech Square. Immediatamente dentro l’edificio c’è un portiere che legge un ormai vecchio quotidiano guardando distrattamente l’orologio che ha sul polso: manca qualche minuto a mezzanotte. Nove piani più in alto, una stanza tra le altre spicca nel buio per la luce accesa che filtra da sotto la porta. Il rumore di molle arrugginite è un po’ attutito da quello delle ventole dei computer che si trovano nella stanza. Un uomo sulla trentina, dai capelli lunghi e la barba incolta, si sta svegliando: è seduto su di un letto pieghevole, ed ogni minimo movimento del suo corpo fa cigolare le molle che sostengono la rete su cui poggia il materasso. Allunga la mano verso una scrivania per prendere una lattina di Pepsi Cola, già aperta, e ne beve un sorso per facilitare il risveglio. Dopo essersi strofinato gli occhi, l’uomo può finalmente alzarsi in piedi e percorrere un paio di metri, per sedersi davanti alla postazione di un terminale sorseggiando la cola rimasta nella lattina. Il terminale non mostra altro che una riga di comando in attesa di istruzioni, preceduta dalla riga “JOB 7 on TTY43 16-Dec-1983 11:52 PM”. È il minimale messaggio di benvenuto di un sistema operativo TOPS-20, che sta girando su un mainframe modello DEC-20 presente in quello stesso edificio. Non sono molti i luoghi nel mondo che possono permettersi un calcolatore di questo tipo, nel 1983, ma quell’edificio è la sede del laboratorio di intelligenza artificiale del Massachussets Institute of Technology.
Come nasce il progetto GNU
Il progetto GNU è una delle collaborazioni di massa più grandi mai viste dall’umanità. Annunciato da Richard Stallman il 27 settembre del 1983, raccoglie immediatamente molti sostenitori. Come recita nel proprio annuncio lo stesso Stallman, “Ho trovato molti altri programmatori molto interessati a GNU che vogliono dare una mano. Molti programmatori sono scontenti della commercializzazione del software di sistema. Li può aiutare a far soldi, ma li costringe in generale a sentirsi in conflitto con gli altri programmatori, invece che solidali”. Nel manifesto GNU (https://www.gnu.org/gnu/manifesto.html) Stallman chiarisce anche il concetto di “free software”. In lingua inglese, infatti, la parola “free” è ambigua, perché può significare sia “gratuito” (come nella frase “birra gratis”) che “libero” (come nella parola “libertà”). Ha voluto specificare che il punto fondamentale del progetto GNU è di produrre del software libero, che garantisca le libertà di utilizzo, modifica, e redistribuzione dell’utente, ma non necessariamente gratuito. Oggi siamo in buona parte abituati ad associare le due cose: il software libero è anche gratuito. Tuttavia, non è scontato. Scrivere programmi richiede tempo e fatica, anche se fatto per passione si tratta di un lavoro. Ed un lavoro deve essere onestamente retribuito. Il motivo per cui oggi buona parte del software libero è gratuito è che in realtà i programmatori sono sovvenzionati da aziende e fondazioni. Tuttavia, nulla vieta ai programmatori di richiedere un pagamento in cambio del programma, l’importante è che assieme al codice binario forniscano agli utenti anche il sorgente con la libertà di poterlo modificare a proprio piacimento.
L’uomo non utilizza password, anzi: è anche riuscito a convincere un quinto degli altri utenti a non utilizzarla, in modo da permettere un libero accesso ai codici che scrivono. Il suo nickname da programmatore, invece, è “rms”. Un semplice acronimo del suo nome, Richard Matthew Stallman, ma anche un doppio senso: può indicare il root mean square, la radice della media dei quadrati, una operazione che si usa spesso in fisica. Stallman è infatti laureato in fisica ad Harvard, ma la sua passione è la programmazione ed è per questo che ormai vive dentro il laboratorio di intelligenza artificiale dell’MIT. Da alcuni anni si è fatto un nome creando un editor di testi molto evoluto, al quale ha dato il nome di EMACS: questo programma diventa in breve il più diffuso editor del mondo universitario statunitense, anche grazie alla licenza che Stallman decide di usare per pubblicarlo. Infatti EMACS è disponibile a tutti come codice sorgente, a condizione che chi vi apporta delle modifiche deve pubblicarle. Questo permette al programma di crescere molto velocemente, perché chiunque può migliorarlo e tutti beneficiano delle nuove caratteristiche. Negli ultimi due anni l’hacker, come egli stesso ama definirsi, ha compiuto del reverse engineering per creare una alternativa ad una macchina LISP prodotta dalla azienda Symbolics. Ha passato le notti a provare il programma della Symbolics e sviluppare un altro programma, che avrebbe poi ceduto all’azienda LMI, con le stesse funzioni ma scrivendo di proprio pugno tutto il codice. Perché? Per una sorta di vendetta: a suo avviso la Symbolics aveva danneggiato l’MIT, portando via dal laboratorio alcuni tra i migliori programmatori proprio per evitare che potessero condividere liberamente il proprio codice. Con questo reverse engineering, Stallman voleva colpire gli affari della Symbolics e contemporaneamente evitare che l’azienda potesse avere un monopolio assoluto della tecnologia. Mentre lavorava a questo progetto, tuttavia, aveva deciso di intraprendere anche un altro progetto, molto più grande: replicare un vero e proprio sistema Unix, pubblicando il codice in modo libero, come aveva fatto per EMACS. Un sistema operativo completamente libero dalle restrizioni d’uso dei vari sistemi dell’epoca avrebbe potuto far esplodere la vera potenzialità dei computer e permettere agli altri hacker, appassionati di programmazione, la creazione di programmi davvero innovativi.
In particolare, Stallman ha in mente un utilizzo quasi fantascientifico di questa libertà: modificare i driver della stampante del laboratorio per far si che, quando la carta si inceppa, l’utente venga avvisato. Il laboratorio dispone infatti di un prototipo della Xerox che è, fondamentalmente, una delle prime stampanti di rete mai prodotte. Tutti gli utenti possono inviare documenti in stampa dalla loro postazione, ed è una funzione particolarmente apprezzata visto che per studiare spesso è utile poter leggere da un foglio di carta. Il problema è che in questa stampante i fogli si incastrano molto spesso, e quando ciò avviene nessuno se ne accorge, col risultato che gli utenti danno per scontato che i loro documenti siano stati stampati, mentre in realtà non lo sono, e finiscano col perdere tutti i dati.
Richard Stallman vestito da Sant iGNUicius (che suona in inglese come “sant’ Ignazio”) parla al pubblico della libertà del software
Basterebbe un sistema di notifica che avvisi immediatamente l’utente che la propria stampa si è inceppata, e che deve rimuovere manualmente i fogli per evitare che tutti i prossimi documenti in stampa vengano persi. Tuttavia, Stallman ha un problema: i driver della stampante sono stati forniti all’MIT soltanto come codice binario, non come codice sorgente. Nonostante vari tentativi, Stallman non riesce a procurarsi il codice sorgente di questa stampante, ma solo una versione precedente, e scopre che l’azienda sta di fatto proibendo le modifiche al proprio software. Siccome il codice è chiuso, ed è di proprietà della Xerox, Stallman non può modificarlo per apportare la miglioria che desidera. A meno, naturalmente, di scrivere da capo un nuovo driver per la stampante, adatto per il sistema operativo TOPS-20 che fa funzionare il mainframe del laboratorio. Ma si rende anche conto che questo è un nuovo tipo di comportamento da parte delle aziende, che fino a prima non si facevano problemi a rilasciare il codice, e che inevitabilmente si diffonderà ad altri produttori. La prospettiva fa paura: nel giro di qualche anno potrebbe diventare impossibile modificare il software di un qualsiasi dispositivo, a meno di riscriverselo da capo. A quel punto, tanto vale scriversi un intero sistema operativo dal principio, rilasciandolo con una licenza libera, per risolvere il problema una volta per tutte.
Aveva anche già pensato ad un acronimo per il suo progetto: GNU, che significa GNU’s Not Unix. Insomma, un metodo ricorsivo per stabilire che GNU voleva assomigliare ad Unix, ma non era davvero Unix. In quel momento, alla fine del 1983, Stallman aveva deciso che il mondo aveva bisogno di libertà, il mondo aveva bisogno di GNU.
GNU è l’uomo di latta
Non serve molto tempo perché il progetto GNU guadagni una certa visibilità nel mondo della programmazione: in molti desiderano un sistema operativo che sia facilmente adattabile alle proprie esigenze, e sono ben contenti di dare una mano alla sua realizzazione. Stallman compila, assieme ad altri collaboratori, una lista di tutti i componenti necessari per il sistema operativo, per stabilire un piano di lavoro. Alcuni di questi, come la shell ed il compilatore per il linguaggio C vennero scritti con una certa facilità. Nel 1986 cominciò il lavoro sul kernel, letteralmente il cuore del sistema. Si tratta di quel componente che gestisce le varie interazioni con l’hardware e fa dialogare tra loro programmi diversi. È un componente difficile da scrivere, perché lavora a basso livello, quindi bisogna studiare il funzionamento dei processori, dei dischi rigidi, eccetera. Il kernel viene battezzato GNU Hurd, e per scriverlo ci si ispira a Mach, un esperimento della Carnegie Mellon University. Mach era stato rilasciato un anno prima ed è stato uno dei primi esempi del concetto di microkernel: in poche parole, si tratta di un kernel estremamente piccolo e leggero che demanda buona parte dei compiti ad altri programmi, in confronto ai kernel monolitici prodotti fino a quel momento che cercavano di racchiudere quante più funzioni possibili.
Un mainframe DEC-20 come quello con cui lavorava Stallman nel laboratorio di intelligenza artificiale dell’MIT
Il problema è che realizzare un kernel non è affatto facile, soprattutto non è facile realizzare un microkernel che sia davvero stabile. Il risultato è che al 1989, tre anni dopo l’inizio del lavoro, Hurd non è ancora pronto, e non si riesce nemmeno a stabilire quando lo sarà. Quasi tutto il resto del sistema operativo, invece, è pronto. Non solo: è pronta anche la licenza GPL, la General Public Licence: la prima licenza standard per rilasciare del software libero, che garantisce agli utenti la libertà di modificare e redistribuire il codice di ogni programma. Sembrerebbe tutto perfetto, tutto come deve stare, tranne per il fatto che manca un kernel funzionante ed ufficiale: vengono fatti alcuni tentativi per integrare in un sistema GNU vari kernel già esistenti, ma siccome non sono stati rilasciati dagli autori come software libero, non possono comunque essere redistribuiti ufficialmente. GNU diventa quindi l’uomo di latta alla ricerca di un cuore.
Un acquisto importante
Sono passati 7 anni dall’inizio di GNU, è la fine del 1990. Nel Vecchio Mondo, nell’europea Finlandia, un ragazzo ventunenne sta frequentando l’università di Helsinki. Nel giro di pochi giorni acquisterà un nuovo computer, con architettura 386, sperando di poterci installare il sistema operativo Minix. Sta infatti seguendo un corso su Unix ed il linguaggio C per il suo corso di laurea, e vorrebbe avere a casa un computer simile a quelli che usa all’università per potersi esercitare. È quasi un mese che la temperatura è stabilmente sotto lo zero, ed è pure nevicato da poco. Naturalmente, per i finlandesi questa patina di gelo che ricopre la città è normale, e nessuno ci fa particolarmente caso. Il ragazzo, in particolare, probabilmente non ci sta pensando anche perché è riscaldato da una emozione quasi febbrile appena pensa che tra qualche giorno otterrà il proprio computer 386, una grande novità per l’epoca, grazie ad un pagamento a rate. È pur sempre un universitario, non ha messo da parte molto denaro. Studiare informatica, però, gli piace: ha appena finito gli 11 mesi di servizio militare, ed è molto felice di avere ripreso gli studi. Tanto felice che, per l’appunto, nulla potrà raffreddare la sua impazienza. Nemmeno la consapevolezza che su questo nuovo computer non potrà installare il sistema operativo che desidera: Minix, infatti, non è rilasciato con una licenza libera e non è nemmeno tanto facile da trovare, almeno in Finlandia. Sa già che ci vorranno dei mesi per riuscire ad avere i dischi di installazione del sistema operativo, quindi per il momento dovrà accontentarsi del sistema DOS. Potrà però impiegare quei primi mesi studiando il funzionamento del calcolatore e giocando a Prince of Persia. Linus Torvalds, lo studente universitario, ha conosciuto Minix leggendo il libro “Operating Systems, Design and implementation” scritto dal professor Tanenbaum. Il libro descrive la costruzione di un sistema operativo, e per fare degli esempi pratici l’autore ha inventato un proprio sistema, che ha per l’appunto chiamato Minix. Il nome deriva dal fatto che si basa su un microkernel.
Il lavoro del professor Andrew Tanenbaum su Minix ha spinto Linus Torvalds a progettare un proprio kernel
Si tratta di un sistema operativo molto piccolo e semplice, con poche funzioni, ma proprio per questo utile per capire i principi di base. Il kernel, il gestore della memoria RAM, ed il filesystem per il disco rigido costituiscono un totale di circa 12000 righe di codice: davvero poche, considerando gli altri sistemi operativi. Certo, i limiti di Minix sono comunque notevoli. Torvalds se ne accorge alla fine di febbraio del 1991, quando riesce ad installare Minix sul suo nuovo computer. Innanzitutto la sua tastiera finlandese non viene riconosciuta correttamente, i tasti appaiono tutti sbagliati, e ci sono pochi programmi funzionanti. In particolare, c’è la Bourne Shell invece di bash (la shell che tutti noi conosciamo oggi). Torvalds comincia a compilare vari programmi tra quelli già pubblicati dal progetto GNU per migliorare il sistema, eseguendo modifiche nel loro codice per farli funzionare con il kernel di Minix. Tuttavia, si accorge man mano di una serie di pecche strutturali del sistema operativo di Tanenbaum, e comincia a modificarlo. Partendo da un semplice “Hello world” che appare sullo schermo utilizzando il kernel Minix, pian piano Torvalds decide di riscrivere da capo il kernel. Per semplificare il lavoro decide di tenere alcune delle porzioni di codice di Minix, in particolare quella relativa al filesystem: questo gli permette di procedere molto velocemente, perché non deve più preoccuparsi dell’accesso al disco rigido. Prende la decisione di non limitarsi a modificare il kernel ma di scriverne uno tutto suo non solo per fare pratica, ma anche perché non è convinto dalla struttura a microkernel di Minix. Torvalds ha infatti in mente una struttura diversa: quella monolitica modulare. Il futuro darà ragione a Linus Torvalds, ma alla fine degli anni ‘80 l’idea che i microkernel siano migliori, e che i monolitici debbano essere considerati obsoleti, è molto diffusa. La differenza tra i due modelli è che i kernel monolitici sono di fatto un unico (o quasi) programma, che si occupa di gestire tutte le attività principali del computer. I microkernel sono invece semplicemente dei gestori di memoria, che si occupano di far comunicare tra loro i vari programmi che poi gestiscono davvero le varie risorse (il filesystem, i driver, eccetera). Sulla carta, il problema dei kernel monolitici è che se c’è un intoppo nel programma, anche in una parte apparentemente irrilevante per il funzionamento del computer, è l’intero kernel a bloccarsi e dunque non c’è altra soluzione che riavviare il computer. Invece i microkernel, essendo costituiti da diversi programmi, non dovrebbero mai bloccarsi del tutto: se uno dei programmi ha un intoppo e va in crash, sarà sufficiente riavviare soltanto quel programma, mentre tutti gli altri continueranno a funzionare. Questo in teoria. Tuttavia, i microkernel hanno un difetto notevole che, in quel periodo, quasi nessuno aveva davvero tenuto in considerazione. Nessuno tranne Torvalds. Infatti, essendo costituiti da tanti piccoli programmi, i microkernel sono in realtà molto più difficili da scrivere, è facile che nascano incompatibilità varie tra le componenti del kernel e che si finisca in una sorta di ciclo continuo in cui qualcosa va in crash e si cerca di riattivarla solo per mandarla nuovamente in crash.
L’email con cui Torvalds annuncia, nel newsgroup comp.os.minix il suo lavoro su un nuovo kernel
Anche la comunicazione tra i vari componenti del kernel è macchinosa, perché il microkernel si comporta come una sorta di server al quale si connettono gli altri programmi in funzione di client, ma la comunicazione può essere difettosa per vari motivi spesso non prevedibili in fase di programmazione. Torvalds pensa ad una soluzione per salvare sia la capra che i cavoli: vuole realizzare un kernel monolitico, ma modulare: i vari aspetti della vita del computer sono gestiti da moduli del kernel, che possono essere caricati o dismessi anche durante l’esecuzione del sistema operativo. Questo permette di ridurre i danni, perché un eventuale modulo difettoso può essere rimosso dal kernel in qualsiasi momento senza che vi siano gravi conseguenze per gli altri componenti, ma è comunque molto più semplice da scrivere, perché nel complesso è comunque una struttura unica. Un paio di anni fa avevamo parlato con lo stesso Torvalds, in una intervista esclusiva, e ci aveva detto: “io penso che i microkernels siano fondamentalmente una idea sbagliata, perché pongono la complessità del progetto nel punto sbagliato (la comunicazione tra diverse entità) e ti limitano troppo dal punto di vista tecnico, mettendo da parte quel tipo di condivisione che è invece standard nei sistemi operativi tradizionali”.
Migliorare Minix, solo per hobby
Nell’agosto del 1991 una prima versione del sistema operativo scritto da Torvalds è in grado di fornire una shell ed il filesystem di Minix, ed è il momento di condividerlo col resto del mondo. Torvalds descrive il proprio progetto su un newsgroup dedicato a Minix: “Sto programmando un sistema operativo (gratuito e solo per hobby, non vuole essere grande e professionale come GNU) per cloni di AT 386(486). È in preparazione da aprile, e sta iniziando a funzionare”. Aggiunge, allo stesso messaggio, la domanda “mi piacerebbe sapere cosa vi piace e non vi piace in Minix” rivolta agli altri partecipanti al gruppo. Linus non ha infatti ancora pensato di costruire un completo sistema operativo a se stante, ma soltanto una versione di Minix migliore di quella ufficiale. Nel giro di un paio di mesi, diversi programmatori sembrano interessati al progetto, in particolare Ari Lemmke offre a Torvalds il proprio spazio su un server FTP per pubblicare il codice, inserendolo in una cartella col nome “linux”, come contrazione di Linus e Unix. Questo gli fornisce uno stimolo a continuare il progetto e all’inizio di ottobre la versione 0.02 di Linux è pronta. Conteneva già una serie di programmi del progetto GNU abbastanza funzionanti: GCC, per esempio, non poteva compilare file molto grandi, ma poteva comunque essere usato per compilare piccoli programmi. A questo punto Torvalds non ha ancora deciso cosa dovrà essere di questo progetto, se portarlo avanti ancora o se lasciare tutto dopo qualche mese di altri esperimenti, ma prende una decisione che si rivelerà fondamentale: per non correre il rischio di fare qualche errore di cui pentirsi in futuro, nel caso volesse utilizzare seriamente Linux, decide di seguire gli standard POSIX. Questi standard non sono facili da reperire: il consorzio vende le specifiche, e Torvalds non si può permettere di comprarle.
La prima versione di Linux, la numero 0.01, era molto piccola e poco adattabile ai diversi hardware: funzionava praticamente soltanto sul computer di Torvalds
Tuttavia, all’interno del progetto GNU trova la libreria glibc, una implementazione delle librerie standard C per il sistema GNU. In quel momento la libreria glibc è ancora in una versione instabile, però è stata progettata seguendo gli standard POSIX, ed è corredata da una buona documentazione: Torvalds decide di utilizzarla come punto di riferimento per il suo kernel. Lavorando praticamente da solo, escluse un paio di patch suggerite da utenti che si erano interessati al progetto tramite l’annuncio in newsgroup, continua ad aggiungere nuove funzionalità al kernel rilasciando nuove versioni del codice sorgente. Esattamente un anno dopo avere acquistato il suo computer, il 5 gennaio del 1992 Torvalds pubblica la versione 0.12. Questo è il momento della svolta: finalmente, il sistema costituito dal kernel Linux ed il set di programmi GNU non deve più rincorrere Minix. Anzi: ora è una valida alternativa allo stesso Minix, e l’interesse degli altri programmatori cresce esponenzialmente. È a questo punto che le gente comincia davvero ad utilizzare il progetto e a diffonderlo. Fino a qualche mese prima, le giornate di Linus trascorrevano tra un riavvio e l’altro, spegnendo e riaccendendo il computer per provare le nuove modifiche che aveva apportato al kernel. Ora la fase in cui procedeva per tentativi ed errori nella speranza di ottenere qualcosa di funzionante si è conclusa, e passa buona parte del proprio tempo a progettare con attenzione le nuove funzioni da aggiungere, per assicurarsi che il codice sia quanto più efficiente possibile senza precludere alcuna altra modifica anche radicale in futuro. È anche a questo punto che Torvalds decide di rilasciare Linux con la licenza GNU GPL: le versioni precedenti erano rilasciate con una licenza che aveva scritto lui stesso e che era molto simile alla GPL, anche se specificava chiaramente che la redistribuzione di Linux avrebbe sempre dovuto essere non solo libera ma anche gratuita, e vista la popolarità del progetto e le continue richieste di chiarimenti sulla licenza ha deciso di adottare direttamente la licenza del progetto GNU perché era scritta meglio e tutti la apprezzavano.
Comunque, probabilmente proprio a causa del fatto di non essere madrelingua inglese, a Torvalds non è mai piaciuto parlare di “free software”. Nell’intervista che ci aveva rilasciato ammetteva, pur continuando ad utilizzare le licenze del progetto GNU e della Free Software Foundation, di non usare nemmeno più il termine “free software” perché, spiegava, “penso che sia un punto di partenza sbagliato”. Sbagliato non soltanto per l’ambiguità lessicale inglese del termine, cui abbiamo già accennato (free significa sia libero che gratuito), ma anche “perchè la parola “free” è talmente piena di carico emotivo (soprattutto negli Stati Uniti, “Land of the Free, rah, rah, USA USA USA!”) che chiunque la fa significare qualsiasi cosa voglia”. Torvalds preferirebbe anche mantenere il dibattito tra software libero e proprietario nell’ambito pratico, ovvero ragionando su quale dei due funzioni meglio alla fine dei conti, tralasciando il discorso sulla morale (cioè sul fatto che sia moralmente sbagliato impedire l’accesso al codice sorgente per gli utenti).
La potenza di GNU/Linux sta anche nella dimensione della sua comunità di utenti: i LUG italiani sono sempre disponibili ad aiutare chi ha un problema da risolvere.
“Io penso che la morale sia qualcosa di privato”, ci diceva “e chiunque la utilizzi per fare una discussione qualunque stia sbagliando. Io posso avere le mie personali ragioni per preferire l’open source, ma sono le mie motivazioni personali, e non hanno nulla a che vedere con i motivi per i quali suggerisco agli altri di adottare l’open source. Quindi io (ed anche altre persone) uso il termine open source software, e non mi disturbo a fare alcun ragionamento moralistico. L’open source tende ad essere semplicemente migliore dal punto vista tecnico, ed è molto più divertente partecipare al processo creativo quando questo è open e tutti possono collaborare”.
Dal terminale alla grafica
Poco dopo la pubblicazione della versione 0.12 di Linux, il sistema fece un enorme passo avanti: il supporto al server grafico X. Nell’entusiasmo dovuto alla possibilità di realizzare applicazioni con interfaccia grafica, Torvalds decise di saltare direttamente al numero di versione 0.95. Il problema è che nonostante il sistema avesse ora molte funzioni utili al grande pubblico, non era affatto stabile. Il risultato è che prima di arrivare alla versione 1.0, cioè quella stabile, era necessario ancora del tempo e nel giro di poco i numeri a disposizione per le versioni finirono: è per questo motivo che, guardando i nomi delle vecchie versioni di Linux, si nota che sono state aggiunte delle lettere. Per esempio, la prima versione con un supporto stabile ad X era chiamata 0.96a. Pur non essendo ancora stabile, è subito chiaro a tutti che Linux è il kernel più adatto per il progetto GNU, e viene adottato dalla maggioranza dei programmatori. Grazie alle patch ed ai suggerimenti degli appassionati, Torvalds riesce a correggere i principali bug ed a realizzare una versione del sistema operativo GNU/Linux sufficientemente stabile nel 1994, pubblicando Linux 1.0. Da quel momento, sempre più persone hanno contribuito allo sviluppo del sistema, e diverse aziende hanno deciso di basare le loro attività sul binomio GNU/Linux e sono nati centinaia di progetti che sfruttano la portabilità del sistema in tutti gli ambiti in cui oggi possiamo immaginare un computer: da desktop e server ai telefonini e gli elettrodomestici. Nel frattempo, Linus Torvalds si è laureato con una tesi intitolata “Linux: a portable operating system” ed ora coordina lo sviluppo del suo kernel. Richard Stallman continua a lavorare su EMACS e segue gli sviluppi del progetto GNU, passando comunque la maggioranza del tempo viaggiando in tutto il mondo per spiegare a tutti l’importanza di vivere in una società libera. Il laboratorio di intelligenza artificiale dell’MIT è stato spostato in un altro edificio, e non hanno più il DEC-20. In compenso, hanno ancora, come tutti noi, delle stampanti che ogni tanto si inceppano.
La forza sta nella comunità: nascono i LUG
Essendo GNU/Linux un progetto collaborativo, che è nato e cresce grazie ai contributi di altri utenti (chi scrive codice, chi le traduzioni linguistiche, chi semplicemente segnala i bug, eccetera…), è ovvio che la comunità degli utenti sia il vero punto di forza. In Italia il sistema viene conosciuto abbastanza presto, e cominciano a nascere dei gruppi di utenti chiamati LUG. Non è chiaro dove e quando nasca il primo LUG, Linux User Group, italiano, visto che si tratta di gruppi spessi informali. Tuttavia, nel 1994 (lo stesso anno in cui viene pubblicata la prima versione stabile del kernel Linux) nasce la Italian Linux Society (http://www.ils.org/), fondata a Savona. Nel corso degli anni questa organizzazione si è impegnata per favorire la diffusione del software libero ed open source, anche con eventi molto noti al pubblico come i Linux Days. Se volete collaborare alla diffusione di GNU/Linux in Italia, non dovete far altro che cercare il LUG più vicino a voi sul sito web e mettervi in contatto con gli altri utenti.
Su Reddit è stato lanciato un contest per sviluppatori amatoriali da parte di Mozilla Italia, col supporto dell’Università di Torino, riguardante il progetto DeepSpeech. Il progetto mira a sviluppare un sistema di riconoscimento vocale open source, con dei corpora (testi e audio) inviati dagli utenti e dunque teoricamente molto più rappresentativi della lingua effettivamente parlata dalla popolazione, in particolare in un paese come il nostro, nel quale accenti e dialetti rendono molto differente il parlato anche a pochi chilometri di distanza.
Il gioco è abbastanza semplice: bisogna sviluppare una applicazione utilizzando il modello DeepSpeech della lingua italiana, senza particolari limitazioni. Vanno bene progetti di domotica basati sui RaspberryPi, oppure strumenti desktop per aiutare i disabili nell’utilizzo dei computer, o ottimizzazioni per il lavoro d’ufficio in questa fase di smartworking. Il progetto deve avere una documentazione scritta, essere rilasciato come Open Source, e possibilmente anche almeno un video che ne dimostri il funzionamento. Si può iscrivere il proprio progetto creando un ticket sul repository https://github.com/MozillaItalia/DeepSpeech-Contest. In palio vi sono una serie di magliette e adesivi brandizzati Mozilla, oltre ovviamente alla consapevolezza di avere aiutato un progetto FOSS a crescere e alla visibilità nella community.
Gli appassionati della tecnologia libera e della sicurezza dei propri dati conoscono già il PinePhone, smartphone basato sulla scheda di prototipazione Pine64 (una alternativa al RaspberryPi). La novità è che dal giorno 1 dicembre sarà però possibile preordinare una nuova versione, dotata di Plasma Mobile. Si tratta del primo sistema operativo progettato proprio in collaborazione con gli sviluppatori del PinePhone, che permette quindi di sfruttare le caratteristiche di questo dispositivo. Il PinePhone è infatti uno smartphone, ma essendo dotato di una vera e propria distribuzione GNU/Linux (basata su Ubuntu) è anche uno strumento perfetto per lavorare, vista la possibilità di installare software dai repository come su un qualsiasi PC. Naturalmente si possono anche installare le app Android, grazie a AnBox.
Il PinePhone è ovviamente adatto alla conservazione di dati sensibili e alla protezione della nostra privacy, visto che contiene degli interruttori hardware per disattivare l’antenna LTE, il WiFi, il microfono, le videocamere, e l’altoparlante.
Il vantaggio dell’ecosistema di app Plasma Mobile è la perfetta integrazione con gli altri dispositivi: traferire file e persino controllare il proprio smartphone dal PC (o viceversa) è facilissimo, grazie a KDE Connect. Le applicazioni tipiche di KDE, come l’editor di testi Kate e il visualizzatore di documenti Okular, sono tra le più avanzate in circolazione e rendono il PinePhone un dispositivo mobile potenzialmente adatto per lavorare. La versione con 3GB di RAM è fornita con una dock di ricarica che offre delle prese USB per collegare mouse e tastiera, oltre a una porta video HD, per utilizzare lo smartphone come un vero e proprio PC tascabile.
Per chi vuole approfondire il funzionamento di questo sistema, pubblichiamo il video dell’intervista che aveva realizzato l’anno scorso ad alcuni sviluppatori di Plasma Mobile:
A settembre abbiamo parlato con Leonardo Favario, componente del Team per la Trasformazione Digitale. Il “Team Digitale” è un gruppo di esperti formato nel 2016 per volere del Governo, il cui scopo è preparare il necessario alla digitalizzazione della pubblica amministrazione.
L’attuale epidemia ha mostrato quanto importante sia la digitalizzazione per il futuro, visto che l’unico modo per non diffondere il contagio è contattare gli uffici pubblici da casa propria, ma è una cosa a cui che il Team Digitale lavora da tempo. Il rapporto tra i cittadini e la pubblica amministrazione è farraginoso, comporta ancora dover fare la fila presso gli uffici per poter consegnare un modulo o anche semplicemente ottenere informazioni per capire cosa bisogna fare. E anche il funzionamento interno alla pubblica amministrazione stessa è complicato, a causa di inconsistenze tra uffici diversi per competenze e territorialità e anche a causa della necessità di fare continuamente copie cartacee di documenti che potrebbero rimanere esclusivamente digitali. Negli ultimi anni il Team Digitale ha costruito il “sistema operativo del paese”, un insieme di software e linee guida che permettono alla pubblica amministrazione di digitalizzare man mano sempre più parti della propria attività.
Con Leonardo abbiamo parlato di quanto è stato fatto, come la piattaforma Developers Italia, l’identità elettronica, e la fatturazione elettronica. Per il futuro, possiamo solo sperare che da questo lockdown dovuto all’epidemia si impari l’importanza della digitalizzazione.
Alcuni anni fa Linus Torvalds, principale autore del kernel Linux, aveva accettato una nostra intervista. I temi discussi sono tutt’ora rilevanti e sempre interessanti per gli appassionati del software libero e open source, quindi abbiamo deciso di ripubblicarla online.
Era il 25 agosto 1991 quando Linus Torvalds comunicò di aver cominciato a lavorare su un sistema operativo open source: il sistema era basato sui programmi del progetto GNU e su un kernel di sua concezione chiamato Linux (il nome originale doveva essere Freax, ma il suo amico Ari Lemmke chiamò “linux” la cartella che conteneva il codice sul server FTP). Finalmente, il progetto GNU aveva un kernel a disposizione, e quindi il primo sistema operativo FOSS era pronto (anche se ancora non stabile). Linux stesso era nato da un controversia di Torvalds con il professor Tanebaum, docente della sua università, che aveva realizzato il kernel Minix. Questo aveva, secondo il padre di Linux, due fondamentali pecche: la prima è di essere realizzato con una struttura a microkernel (molto più complicato di un kernel monolitico), e di non essere liberamente modificabile. Il tempo ha dato ragione a Linus Torvalds: infatti Minix non ha avuto successo, a differenza di Linux, perché non era veramente open source, ed anche perché non solo Minix ma anche Hurd (entrambe microkernel) sono risultati troppo complessi per poter essere realmente funzionali.
Oggi Linus Torvalds è uno dei personaggi più influenti del mondo del Free Open Source Software, assieme a Richard Stallman (l’ideatore del progetto GNU e padre della filosofia free software). A differenza di Stallman, però, il padre del pinguino ha sempre mantenuto un profilo di basso livello, cercando di farsi trascinare il meno possibile nelle varie dispute della comunità. In questa intervista Torvalds ci rivela il suo pensiero e scopriamo che, forse, il principale motivo per cui riesce a rimanere super partes è l’essere estremamente razionale, capace quindi di mettere da parte i moralismi in favore di ciò che, semplicemente, funziona. Possiamo dire che se Stallman è il pastore spirituale della comunità FOSS, sempre pronto a tirare le orecchie a chi non segue le tavole dei comandamenti, Torvalds è un regista che dirige il film che la comunità sta realizzando.
LM – Ciao Linus, tutti noi sappiamo che sei il creatore del kernel Linux e di Git. Però sappiamo poco della tua vita personale. Puoi dirci qualcosa al riguardo? Linus Torvalds – Non so da dove cominciare… ho avuto a che fare con i computer sin dall’inizio della mia adolescenza: mio nonno (da parte di mia madre) era professore di statistica all’università di Helsinki, ed aveva uno dei primi computer per uso domestico (un Commodore VIC-20) che portava a casa per fare dei calcoli, a volte, quando avevo 11 o 12 anni. Io lo aiutavo a scrivere alcuni dei programmi (senza capire nulla della matematica che c’era dietro), e poi sono finito a scrivere giochi ed altri programmi presi da riviste d’informatica e manuali dell’epoca. Ed in certi casi scrivendo i miei stessi programmi.
I computer sono ancora il mio hobby, oltre che il mio lavoro. Al di là di quello, io leggo molto (ma per la maggior parte cose che si possono dimenticare senza problemi, come fantascienza e fantasy) e faccio scuba diving (immersioni subacquee – n.d.r.) ogni volta che posso.
Vivo a Portland, Oregon, in questi giorni (sono nato e cresciuto a Helsinki, Finlandia), sono sposato ed ho tre figlie adolescenti. E… no, nessuna di loro è molto interessata ai computer, se non come utente.
LM – Tu hai detto “Il software è come il sesso: è meglio quando è libero e gratuito”. Quindi qual’è la tua idea di software libero ed open source, ed in che modo questa è differente dall’idea di Richard Stallman?
Eh. Io non uso nemmeno più il termine “free software”, perché penso che sia un punto di partenza sbagliato.
Sia per l’ambiguità presente in lingua inglese tra “free” inteso come “libero” e “free” come “gratuito”, sia perché anche quando capisci la differenza dei due significati (che poi non è così difficile da comprendere) la parola “free” è talmente piena di carico emotivo (soprattutto negli Stati Uniti, “Land of the Free, rah, rah, USA USA USA!”) che chiunque la fa significare qualsiasi cosa voglia. Richard Stallman, in particolare, vuole definirla in un modo molto specifico ed usarla per un discorso sulla morale.
Io penso che la morale sia qualcosa di privato, e chiunque la utilizzi per fare una discussione qualunque stia sbagliando. Io posso avere le mie personali ragioni per preferire l’open source, ma sono le mie motivazioni personali, e non hanno nulla a che vedere con i motivi per i quali suggerisco agli altri di adottare l’open source.
Quindi io (ed anche altre persone) uso il termine “open source software”, e non mi disturbo a fare alcun stupido ragionamento moralistico. L’open source tende a essere semplicemente migliore dal punto vista tecnico, ed è molto più divertente partecipare al processo creativo quando questo è “open” e tutti possono collaborare. Open source significa che non c’è una singola entità che controlla, e nessuno può nascondere quello che sta facendo. Significa anche che le persone e le aziende possono competere a livelli differenti oltre al semplice software. E mi sembra interessante notare come delle persone si siano messe insieme per rendere Linux stesso migliore, ma poi altre persone prendono il risultato e lo utilizzano per fare delle altre cose interessanti che non hanno nulla a che vedere con Linux di per se, se non il fatto che avevano bisogno di un sistema operativo.
Quindi l’open source è un’ottima strada per i tecnici, affinchè possano lavorare insieme senza dover essere legati a un particolare ambito o a una azienda. Questo lo rende molto più interessante. Ma fornisce la possibilità di fare comunque cose interessanti, anche se il tuo obiettivo primario non è il software open source stesso.
LM – Che cosa ne pensi del progetto GNU HURD? Bisogna dire che HURD viene sviluppato dal 1990 e non è ancora stabile. Forse questo dimostra che i microkernel sono troppo complessi e il gioco non vale la candela?
Io penso che i microkernels siano fondamentalmente una idea sbagliata, perché pongono la complessità del progetto nel punto sbagliato (la comunicazione tra diverse entità) e ti limitano troppo dal punto di vista tecnico, mettendo da parte quel tipo di condivisione che è invece standard nei sistemi operativi tradizionali. Poi ci sono stati altri problemi con Hurd, e mentre una volta era un progetto interessante penso che ormai non sia più di rilievo da un bel po’ di tempo.
Detto questo, una delle belle cose dell’open source è che non deve necessariamente essere di rilievo: per persone che si divertono semplicemente a giocare con le cose, penso che Hurd possa essere ancora interessante.
LM – Sembra che tu non sia soddisfatto degli ultimi contributi degli sviluppatori al codice di Linux (hai detto che potresti “tornare a imprecare”)…
Questa non è certo una discussione nuova, c’è sempre stata questa tensione tra “persone che pensano sia più bello scrivere nuovo codice” e “hei, dobbiamo sistemare le cose per rilasciare la nuova versione”. Penso che al momento abbiamo trovato il giusto bilanciamento tra i due, ed il nostro ciclo di rilascio di circa 3 mesi, con una finestra di due settimane per il merge di tutti i nuovi contributi, e con poi circa 6-8 settimane per darsi una calmata funzioni piuttosto bene.
Però io finisco ancora per dover ogni tanto ricordare alle persone di darsi una calmata: capita nella maggior parte dei rilasci di una nuova versione, non è una novità, e penso che sia quasi naturale. In alcune versioni di più rispetto a altre, ma è una normale fluttuazione statistica.
LM – Quindi cosa vorresti vedere in un prossimo rilascio del kernel?
Beh, c’è un gran numero di cose su cui le persone stanno lavorando, ma alla fin fine le funzionalità di base del kernel si sono stabilizzate.
Per me personalmente, le modifiche più interessanti stanno nei miglioramenti del core, ma sono spesso molto piccole e difficili da notare: in un progetto che è vecchio più di 20 anni, il codice del core è abbastanza stabile, ed i miglioramenti sono dettagli che non importano a nessuno al di fuori del progetto stesso (a parte il fatto che rendono il kernel più efficiente e rendono più facili altri miglioramenti del codice).
Per quanto riguarda le nuove caratteristiche, la maggior parte di esse riguarda supporto per nuovo hardware. La maggior parte del lavoro fatto nel kernel è per supportare nuovo hardware e nuove architetture. Finchè i “ragazzi dell’hardware” continueranno a produrre versioni nuove e migliorate del loro hardware, noi “ragazzi del sistema operativo” avremo del lavoro da fare. Quindi non avremo mai veramente “finito”.
A volte – ma non così spesso – introduciamo anche nuove interfacce, specialmente con nuovi modelli d’uso (per esempio quando l’hardware diventa talmente piccolo ed economico da poter essere usato in modi completamente nuovi).
LM – Parlando del mondo mobile, al momento Android è il sistema operativo mobile open source più famoso. Vorremmo sapere che cosa pensi del sistema di Google ed anche dei concorrenti (per esempio Mer o Ubuntu Phone).
Ehi, io ero abituato a odiare i telefonini, perché per me erano semplicemente un altro modo per essere infastidito in qualsiasi posto io fossi. Ma con la nascita di Android per me non è più un telefonino, è un dispositivo mobile per leggere le email, ed ora lo porto sempre con me. Quindi io amo Android. E quando altri concorrenti saranno pronti, sarò felice di provarli. Una delle belle cose nell’avere a che fare con Linux è vedere come persone diverse usino Linux in modi che non erano assolutamente nei miei piani originali. Amo vedere nuovi dispositivi come questi.
LM – Sappiamo che hai utilizzato diversi ambienti desktop,passando da KDE a GNOME e poi XFCE. Quindi la domanda è: che cosa cerchi in un DE?
Quello che io cerco, più che altro, è essere lasciato in pace, ed avere la possibilità di adattare il DE in modo che le poche cose di cui ho bisogno siano a posto. Ed io non voglio che questa personalizzazione sia qualcosa su cui devo pensare più di tanto, per questo mi lamento se le poche cose che mi servono sono difficili da fare.
Per esempio, io voglio dei font più piccoli di quanto la gente normalmente desidera, perché sono abituato a avere un sacco di linee di codice (ed email) sullo schermo. Quindi i grandi font (soprattutto in cose “secondarie” come icone e barre del titolo delle finestre) che stanno prendendosi troppo spazio inutilmente, sono qualcosa di cui mi voglio liberare. Voglio che il mio lavoro sia fatto, le mie poche finestre aperte, ed il DE non dovrebbe intralciarmi. “Veloce, pronto, e leggero” è spesso più importante per me di “carino”.
E voglio che quelle poche cose che faccio siano facili da realizzare. Se non posso aprire un nuovo terminale con un singolo click del mouse su una icona che sia sempre visibile, allora c’è qualcosa di strano. Il fatto che io, a volte, abbia addirittura dovuto discutere con qualcuno su questa cosa è un po’ triste.
LM – Tornando al kernel Linux, oggi la maggior parte dei server di internet e dei dispositivi di ridotte dimensioni (dai telefoni ai router e le stampanti…) funzionano grazie a questo kernel. Forse, senza Linux queste tecnologie non esisterebbero nemmeno. Come ci si sente sapendo che miliardi di persone nel mondo utilizzano tecnologie e strumenti basati su un progetto software che tu hai creato?
Non ci penso molto, in realtà, ma penso al fatto che quello che io costruisco è importante per le persone, ed è importante per me.
Perché, certo, a me piace semplicemente programmare e giocherellare con la tecnologia, ma allo stesso tempo non voglio giocare tanto per il piacere di farlo: voglio lavorare su qualcosa che abbia un impatto sul resto del mondo. E quindi il fatto che Linux sia riuscito a avere un grande impatto, è una gran bella sensazione.
La lampadina a incandescenza di un lampione illumina con la luce calda del tungsteno il marciapiede ancora umido per la pioggia che ha smesso da poco, in una fredda notte a Cambridge, nel Massachussets. Il marciapiede corre lungo Main Street, interrompendosi sullo scivolo d’ingresso del Tech Square. Immediatamente dentro l’edificio c’è un portiere che legge un ormai vecchio quotidiano guardando distrattamente l’orologio che ha sul polso: manca qualche minuto a mezzanotte. Nove piani più in alto, una stanza tra le altre spicca nel buio per la luce accesa che filtra da sotto la porta. Il rumore di molle arrugginite è un po’ attutito da quello delle ventole dei computer che si trovano nella stanza. Un uomo sulla trentina, dai capelli lunghi e la barba incolta, si sta svegliando: è seduto su di un letto pieghevole, ed ogni minimo movimento del suo corpo fa cigolare le molle che sostengono la rete su cui poggia il materasso. Allunga la mano verso una scrivania per prendere una lattina di Pepsi Cola, già aperta, e ne beve un sorso per facilitare il risveglio. Dopo essersi strofinato gli occhi, l’uomo può finalmente alzarsi in piedi e percorrere un paio di metri, per sedersi davanti alla postazione di un terminale sorseggiando la cola rimasta nella lattina. Il terminale non mostra altro che una riga di comando in attesa di istruzioni, preceduta dalla riga “JOB 7 on TTY43 16-Dec-1983 11:52 PM”. È il minimale messaggio di benvenuto di un sistema operativo TOPS-20, che sta girando su un mainframe modello DEC-20 presente in quello stesso edificio. Non sono molti i luoghi nel mondo che possono permettersi un calcolatore di questo tipo, nel 1983, ma quell’edificio è la sede del laboratorio di intelligenza artificiale del Massachussets Institute of Technology.
Come nasce il progetto GNU
Il progetto GNU è una delle collaborazioni di massa più grandi mai viste dall’umanità. Annunciato da Richard Stallman il 27 settembre del 1983, raccoglie immediatamente molti sostenitori. Come recita nel proprio annuncio lo stesso Stallman, “Ho trovato molti altri programmatori molto interessati a GNU che vogliono dare una mano. Molti programmatori sono scontenti della commercializzazione del software di sistema. Li può aiutare a far soldi, ma li costringe in generale a sentirsi in conflitto con gli altri programmatori, invece che solidali”. Nel manifesto GNU (https://www.gnu.org/gnu/manifesto.html) Stallman chiarisce anche il concetto di “free software”. In lingua inglese, infatti, la parola “free” è ambigua, perché può significare sia “gratuito” (come nella frase “birra gratis”) che “libero” (come nella parola “libertà”). Ha voluto specificare che il punto fondamentale del progetto GNU è di produrre del software libero, che garantisca le libertà di utilizzo, modifica, e redistribuzione dell’utente, ma non necessariamente gratuito. Oggi siamo in buona parte abituati ad associare le due cose: il software libero è anche gratuito. Tuttavia, non è scontato. Scrivere programmi richiede tempo e fatica, anche se fatto per passione si tratta di un lavoro. Ed un lavoro deve essere onestamente retribuito. Il motivo per cui oggi buona parte del software libero è gratuito è che in realtà i programmatori sono sovvenzionati da aziende e fondazioni. Tuttavia, nulla vieta ai programmatori di richiedere un pagamento in cambio del programma, l’importante è che assieme al codice binario forniscano agli utenti anche il sorgente con la libertà di poterlo modificare a proprio piacimento.
L’uomo non utilizza password, anzi: è anche riuscito a convincere un quinto degli altri utenti a non utilizzarla, in modo da permettere un libero accesso ai codici che scrivono. Il suo nickname da programmatore, invece, è “rms”. Un semplice acronimo del suo nome, Richard Matthew Stallman, ma anche un doppio senso: può indicare il root mean square, la radice della media dei quadrati, una operazione che si usa spesso in fisica. Stallman è infatti laureato in fisica ad Harvard, ma la sua passione è la programmazione ed è per questo che ormai vive dentro il laboratorio di intelligenza artificiale dell’MIT. Da alcuni anni si è fatto un nome creando un editor di testi molto evoluto, al quale ha dato il nome di EMACS: questo programma diventa in breve il più diffuso editor del mondo universitario statunitense, anche grazie alla licenza che Stallman decide di usare per pubblicarlo. Infatti EMACS è disponibile a tutti come codice sorgente, a condizione che chi vi apporta delle modifiche deve pubblicarle. Questo permette al programma di crescere molto velocemente, perché chiunque può migliorarlo e tutti beneficiano delle nuove caratteristiche. Negli ultimi due anni l’hacker, come egli stesso ama definirsi, ha compiuto del reverse engineering per creare una alternativa ad una macchina LISP prodotta dalla azienda Symbolics. Ha passato le notti a provare il programma della Symbolics e sviluppare un altro programma, che avrebbe poi ceduto all’azienda LMI, con le stesse funzioni ma scrivendo di proprio pugno tutto il codice. Perché? Per una sorta di vendetta: a suo avviso la Symbolics aveva danneggiato l’MIT, portando via dal laboratorio alcuni tra i migliori programmatori proprio per evitare che potessero condividere liberamente il proprio codice. Con questo reverse engineering, Stallman voleva colpire gli affari della Symbolics e contemporaneamente evitare che l’azienda potesse avere un monopolio assoluto della tecnologia. Mentre lavorava a questo progetto, tuttavia, aveva deciso di intraprendere anche un altro progetto, molto più grande: replicare un vero e proprio sistema Unix, pubblicando il codice in modo libero, come aveva fatto per EMACS. Un sistema operativo completamente libero dalle restrizioni d’uso dei vari sistemi dell’epoca avrebbe potuto far esplodere la vera potenzialità dei computer e permettere agli altri hacker, appassionati di programmazione, la creazione di programmi davvero innovativi.
In particolare, Stallman ha in mente un utilizzo quasi fantascientifico di questa libertà: modificare i driver della stampante del laboratorio per far si che, quando la carta si inceppa, l’utente venga avvisato. Il laboratorio dispone infatti di un prototipo della Xerox che è, fondamentalmente, una delle prime stampanti di rete mai prodotte. Tutti gli utenti possono inviare documenti in stampa dalla loro postazione, ed è una funzione particolarmente apprezzata visto che per studiare spesso è utile poter leggere da un foglio di carta. Il problema è che in questa stampante i fogli si incastrano molto spesso, e quando ciò avviene nessuno se ne accorge, col risultato che gli utenti danno per scontato che i loro documenti siano stati stampati, mentre in realtà non lo sono, e finiscano col perdere tutti i dati.
Richard Stallman vestito da Sant iGNUicius (che suona in inglese come “sant’ Ignazio”) parla al pubblico della libertà del software
Basterebbe un sistema di notifica che avvisi immediatamente l’utente che la propria stampa si è inceppata, e che deve rimuovere manualmente i fogli per evitare che tutti i prossimi documenti in stampa vengano persi. Tuttavia, Stallman ha un problema: i driver della stampante sono stati forniti all’MIT soltanto come codice binario, non come codice sorgente. Nonostante vari tentativi, Stallman non riesce a procurarsi il codice sorgente di questa stampante, ma solo una versione precedente, e scopre che l’azienda sta di fatto proibendo le modifiche al proprio software. Siccome il codice è chiuso, ed è di proprietà della Xerox, Stallman non può modificarlo per apportare la miglioria che desidera. A meno, naturalmente, di scrivere da capo un nuovo driver per la stampante, adatto per il sistema operativo TOPS-20 che fa funzionare il mainframe del laboratorio. Ma si rende anche conto che questo è un nuovo tipo di comportamento da parte delle aziende, che fino a prima non si facevano problemi a rilasciare il codice, e che inevitabilmente si diffonderà ad altri produttori. La prospettiva fa paura: nel giro di qualche anno potrebbe diventare impossibile modificare il software di un qualsiasi dispositivo, a meno di riscriverselo da capo. A quel punto, tanto vale scriversi un intero sistema operativo dal principio, rilasciandolo con una licenza libera, per risolvere il problema una volta per tutte.
Aveva anche già pensato ad un acronimo per il suo progetto: GNU, che significa GNU’s Not Unix. Insomma, un metodo ricorsivo per stabilire che GNU voleva assomigliare ad Unix, ma non era davvero Unix. In quel momento, alla fine del 1983, Stallman aveva deciso che il mondo aveva bisogno di libertà, il mondo aveva bisogno di GNU.
GNU è l’uomo di latta
Non serve molto tempo perché il progetto GNU guadagni una certa visibilità nel mondo della programmazione: in molti desiderano un sistema operativo che sia facilmente adattabile alle proprie esigenze, e sono ben contenti di dare una mano alla sua realizzazione. Stallman compila, assieme ad altri collaboratori, una lista di tutti i componenti necessari per il sistema operativo, per stabilire un piano di lavoro. Alcuni di questi, come la shell ed il compilatore per il linguaggio C vennero scritti con una certa facilità. Nel 1986 cominciò il lavoro sul kernel, letteralmente il cuore del sistema. Si tratta di quel componente che gestisce le varie interazioni con l’hardware e fa dialogare tra loro programmi diversi. È un componente difficile da scrivere, perché lavora a basso livello, quindi bisogna studiare il funzionamento dei processori, dei dischi rigidi, eccetera. Il kernel viene battezzato GNU Hurd, e per scriverlo ci si ispira a Mach, un esperimento della Carnegie Mellon University. Mach era stato rilasciato un anno prima ed è stato uno dei primi esempi del concetto di microkernel: in poche parole, si tratta di un kernel estremamente piccolo e leggero che demanda buona parte dei compiti ad altri programmi, in confronto ai kernel monolitici prodotti fino a quel momento che cercavano di racchiudere quante più funzioni possibili.
Un mainframe DEC-20 come quello con cui lavorava Stallman nel laboratorio di intelligenza artificiale dell’MIT
Il problema è che realizzare un kernel non è affatto facile, soprattutto non è facile realizzare un microkernel che sia davvero stabile. Il risultato è che al 1989, tre anni dopo l’inizio del lavoro, Hurd non è ancora pronto, e non si riesce nemmeno a stabilire quando lo sarà. Quasi tutto il resto del sistema operativo, invece, è pronto. Non solo: è pronta anche la licenza GPL, la General Public Licence: la prima licenza standard per rilasciare del software libero, che garantisce agli utenti la libertà di modificare e redistribuire il codice di ogni programma. Sembrerebbe tutto perfetto, tutto come deve stare, tranne per il fatto che manca un kernel funzionante ed ufficiale: vengono fatti alcuni tentativi per integrare in un sistema GNU vari kernel già esistenti, ma siccome non sono stati rilasciati dagli autori come software libero, non possono comunque essere redistribuiti ufficialmente. GNU diventa quindi l’uomo di latta alla ricerca di un cuore.
Un acquisto importante
Sono passati 7 anni dall’inizio di GNU, è la fine del 1990. Nel Vecchio Mondo, nell’europea Finlandia, un ragazzo ventunenne sta frequentando l’università di Helsinki. Nel giro di pochi giorni acquisterà un nuovo computer, con architettura 386, sperando di poterci installare il sistema operativo Minix. Sta infatti seguendo un corso su Unix ed il linguaggio C per il suo corso di laurea, e vorrebbe avere a casa un computer simile a quelli che usa all’università per potersi esercitare. È quasi un mese che la temperatura è stabilmente sotto lo zero, ed è pure nevicato da poco. Naturalmente, per i finlandesi questa patina di gelo che ricopre la città è normale, e nessuno ci fa particolarmente caso. Il ragazzo, in particolare, probabilmente non ci sta pensando anche perché è riscaldato da una emozione quasi febbrile appena pensa che tra qualche giorno otterrà il proprio computer 386, una grande novità per l’epoca, grazie ad un pagamento a rate. È pur sempre un universitario, non ha messo da parte molto denaro. Studiare informatica, però, gli piace: ha appena finito gli 11 mesi di servizio militare, ed è molto felice di avere ripreso gli studi. Tanto felice che, per l’appunto, nulla potrà raffreddare la sua impazienza. Nemmeno la consapevolezza che su questo nuovo computer non potrà installare il sistema operativo che desidera: Minix, infatti, non è rilasciato con una licenza libera e non è nemmeno tanto facile da trovare, almeno in Finlandia. Sa già che ci vorranno dei mesi per riuscire ad avere i dischi di installazione del sistema operativo, quindi per il momento dovrà accontentarsi del sistema DOS. Potrà però impiegare quei primi mesi studiando il funzionamento del calcolatore e giocando a Prince of Persia. Linus Torvalds, lo studente universitario, ha conosciuto Minix leggendo il libro “Operating Systems, Design and implementation” scritto dal professor Tanenbaum. Il libro descrive la costruzione di un sistema operativo, e per fare degli esempi pratici l’autore ha inventato un proprio sistema, che ha per l’appunto chiamato Minix. Il nome deriva dal fatto che si basa su un microkernel.
Il lavoro del professor Andrew Tanenbaum su Minix ha spinto Linus Torvalds a progettare un proprio kernel
Si tratta di un sistema operativo molto piccolo e semplice, con poche funzioni, ma proprio per questo utile per capire i principi di base. Il kernel, il gestore della memoria RAM, ed il filesystem per il disco rigido costituiscono un totale di circa 12000 righe di codice: davvero poche, considerando gli altri sistemi operativi. Certo, i limiti di Minix sono comunque notevoli. Torvalds se ne accorge alla fine di febbraio del 1991, quando riesce ad installare Minix sul suo nuovo computer. Innanzitutto la sua tastiera finlandese non viene riconosciuta correttamente, i tasti appaiono tutti sbagliati, e ci sono pochi programmi funzionanti. In particolare, c’è la Bourne Shell invece di bash (la shell che tutti noi conosciamo oggi). Torvalds comincia a compilare vari programmi tra quelli già pubblicati dal progetto GNU per migliorare il sistema, eseguendo modifiche nel loro codice per farli funzionare con il kernel di Minix. Tuttavia, si accorge man mano di una serie di pecche strutturali del sistema operativo di Tanenbaum, e comincia a modificarlo. Partendo da un semplice “Hello world” che appare sullo schermo utilizzando il kernel Minix, pian piano Torvalds decide di riscrivere da capo il kernel. Per semplificare il lavoro decide di tenere alcune delle porzioni di codice di Minix, in particolare quella relativa al filesystem: questo gli permette di procedere molto velocemente, perché non deve più preoccuparsi dell’accesso al disco rigido. Prende la decisione di non limitarsi a modificare il kernel ma di scriverne uno tutto suo non solo per fare pratica, ma anche perché non è convinto dalla struttura a microkernel di Minix. Torvalds ha infatti in mente una struttura diversa: quella monolitica modulare. Il futuro darà ragione a Linus Torvalds, ma alla fine degli anni ‘80 l’idea che i microkernel siano migliori, e che i monolitici debbano essere considerati obsoleti, è molto diffusa. La differenza tra i due modelli è che i kernel monolitici sono di fatto un unico (o quasi) programma, che si occupa di gestire tutte le attività principali del computer. I microkernel sono invece semplicemente dei gestori di memoria, che si occupano di far comunicare tra loro i vari programmi che poi gestiscono davvero le varie risorse (il filesystem, i driver, eccetera). Sulla carta, il problema dei kernel monolitici è che se c’è un intoppo nel programma, anche in una parte apparentemente irrilevante per il funzionamento del computer, è l’intero kernel a bloccarsi e dunque non c’è altra soluzione che riavviare il computer. Invece i microkernel, essendo costituiti da diversi programmi, non dovrebbero mai bloccarsi del tutto: se uno dei programmi ha un intoppo e va in crash, sarà sufficiente riavviare soltanto quel programma, mentre tutti gli altri continueranno a funzionare. Questo in teoria. Tuttavia, i microkernel hanno un difetto notevole che, in quel periodo, quasi nessuno aveva davvero tenuto in considerazione. Nessuno tranne Torvalds. Infatti, essendo costituiti da tanti piccoli programmi, i microkernel sono in realtà molto più difficili da scrivere, è facile che nascano incompatibilità varie tra le componenti del kernel e che si finisca in una sorta di ciclo continuo in cui qualcosa va in crash e si cerca di riattivarla solo per mandarla nuovamente in crash.
L’email con cui Torvalds annuncia, nel newsgroup comp.os.minix il suo lavoro su un nuovo kernel
Anche la comunicazione tra i vari componenti del kernel è macchinosa, perché il microkernel si comporta come una sorta di server al quale si connettono gli altri programmi in funzione di client, ma la comunicazione può essere difettosa per vari motivi spesso non prevedibili in fase di programmazione. Torvalds pensa ad una soluzione per salvare sia la capra che i cavoli: vuole realizzare un kernel monolitico, ma modulare: i vari aspetti della vita del computer sono gestiti da moduli del kernel, che possono essere caricati o dismessi anche durante l’esecuzione del sistema operativo. Questo permette di ridurre i danni, perché un eventuale modulo difettoso può essere rimosso dal kernel in qualsiasi momento senza che vi siano gravi conseguenze per gli altri componenti, ma è comunque molto più semplice da scrivere, perché nel complesso è comunque una struttura unica. Un paio di anni fa avevamo parlato con lo stesso Torvalds, in una intervista esclusiva, e ci aveva detto: “io penso che i microkernels siano fondamentalmente una idea sbagliata, perché pongono la complessità del progetto nel punto sbagliato (la comunicazione tra diverse entità) e ti limitano troppo dal punto di vista tecnico, mettendo da parte quel tipo di condivisione che è invece standard nei sistemi operativi tradizionali”.
Migliorare Minix, solo per hobby
Nell’agosto del 1991 una prima versione del sistema operativo scritto da Torvalds è in grado di fornire una shell ed il filesystem di Minix, ed è il momento di condividerlo col resto del mondo. Torvalds descrive il proprio progetto su un newsgroup dedicato a Minix: “Sto programmando un sistema operativo (gratuito e solo per hobby, non vuole essere grande e professionale come GNU) per cloni di AT 386(486). È in preparazione da aprile, e sta iniziando a funzionare”. Aggiunge, allo stesso messaggio, la domanda “mi piacerebbe sapere cosa vi piace e non vi piace in Minix” rivolta agli altri partecipanti al gruppo. Linus non ha infatti ancora pensato di costruire un completo sistema operativo a se stante, ma soltanto una versione di Minix migliore di quella ufficiale. Nel giro di un paio di mesi, diversi programmatori sembrano interessati al progetto, in particolare Ari Lemmke offre a Torvalds il proprio spazio su un server FTP per pubblicare il codice, inserendolo in una cartella col nome “linux”, come contrazione di Linus e Unix. Questo gli fornisce uno stimolo a continuare il progetto e all’inizio di ottobre la versione 0.02 di Linux è pronta. Conteneva già una serie di programmi del progetto GNU abbastanza funzionanti: GCC, per esempio, non poteva compilare file molto grandi, ma poteva comunque essere usato per compilare piccoli programmi. A questo punto Torvalds non ha ancora deciso cosa dovrà essere di questo progetto, se portarlo avanti ancora o se lasciare tutto dopo qualche mese di altri esperimenti, ma prende una decisione che si rivelerà fondamentale: per non correre il rischio di fare qualche errore di cui pentirsi in futuro, nel caso volesse utilizzare seriamente Linux, decide di seguire gli standard POSIX. Questi standard non sono facili da reperire: il consorzio vende le specifiche, e Torvalds non si può permettere di comprarle.
La prima versione di Linux, la numero 0.01, era molto piccola e poco adattabile ai diversi hardware: funzionava praticamente soltanto sul computer di Torvalds
Tuttavia, all’interno del progetto GNU trova la libreria glibc, una implementazione delle librerie standard C per il sistema GNU. In quel momento la libreria glibc è ancora in una versione instabile, però è stata progettata seguendo gli standard POSIX, ed è corredata da una buona documentazione: Torvalds decide di utilizzarla come punto di riferimento per il suo kernel. Lavorando praticamente da solo, escluse un paio di patch suggerite da utenti che si erano interessati al progetto tramite l’annuncio in newsgroup, continua ad aggiungere nuove funzionalità al kernel rilasciando nuove versioni del codice sorgente. Esattamente un anno dopo avere acquistato il suo computer, il 5 gennaio del 1992 Torvalds pubblica la versione 0.12. Questo è il momento della svolta: finalmente, il sistema costituito dal kernel Linux ed il set di programmi GNU non deve più rincorrere Minix. Anzi: ora è una valida alternativa allo stesso Minix, e l’interesse degli altri programmatori cresce esponenzialmente. È a questo punto che le gente comincia davvero ad utilizzare il progetto e a diffonderlo. Fino a qualche mese prima, le giornate di Linus trascorrevano tra un riavvio e l’altro, spegnendo e riaccendendo il computer per provare le nuove modifiche che aveva apportato al kernel. Ora la fase in cui procedeva per tentativi ed errori nella speranza di ottenere qualcosa di funzionante si è conclusa, e passa buona parte del proprio tempo a progettare con attenzione le nuove funzioni da aggiungere, per assicurarsi che il codice sia quanto più efficiente possibile senza precludere alcuna altra modifica anche radicale in futuro. È anche a questo punto che Torvalds decide di rilasciare Linux con la licenza GNU GPL: le versioni precedenti erano rilasciate con una licenza che aveva scritto lui stesso e che era molto simile alla GPL, anche se specificava chiaramente che la redistribuzione di Linux avrebbe sempre dovuto essere non solo libera ma anche gratuita, e vista la popolarità del progetto e le continue richieste di chiarimenti sulla licenza ha deciso di adottare direttamente la licenza del progetto GNU perché era scritta meglio e tutti la apprezzavano.
Comunque, probabilmente proprio a causa del fatto di non essere madrelingua inglese, a Torvalds non è mai piaciuto parlare di “free software”. Nell’intervista che ci aveva rilasciato ammetteva, pur continuando ad utilizzare le licenze del progetto GNU e della Free Software Foundation, di non usare nemmeno più il termine “free software” perché, spiegava, “penso che sia un punto di partenza sbagliato”. Sbagliato non soltanto per l’ambiguità lessicale inglese del termine, cui abbiamo già accennato (free significa sia libero che gratuito), ma anche “perchè la parola “free” è talmente piena di carico emotivo (soprattutto negli Stati Uniti, “Land of the Free, rah, rah, USA USA USA!”) che chiunque la fa significare qualsiasi cosa voglia”. Torvalds preferirebbe anche mantenere il dibattito tra software libero e proprietario nell’ambito pratico, ovvero ragionando su quale dei due funzioni meglio alla fine dei conti, tralasciando il discorso sulla morale (cioè sul fatto che sia moralmente sbagliato impedire l’accesso al codice sorgente per gli utenti).
La potenza di GNU/Linux sta anche nella dimensione della sua comunità di utenti: i LUG italiani sono sempre disponibili ad aiutare chi ha un problema da risolvere.
“Io penso che la morale sia qualcosa di privato”, ci diceva “e chiunque la utilizzi per fare una discussione qualunque stia sbagliando. Io posso avere le mie personali ragioni per preferire l’open source, ma sono le mie motivazioni personali, e non hanno nulla a che vedere con i motivi per i quali suggerisco agli altri di adottare l’open source. Quindi io (ed anche altre persone) uso il termine open source software, e non mi disturbo a fare alcun ragionamento moralistico. L’open source tende ad essere semplicemente migliore dal punto vista tecnico, ed è molto più divertente partecipare al processo creativo quando questo è open e tutti possono collaborare”.
Dal terminale alla grafica
Poco dopo la pubblicazione della versione 0.12 di Linux, il sistema fece un enorme passo avanti: il supporto al server grafico X. Nell’entusiasmo dovuto alla possibilità di realizzare applicazioni con interfaccia grafica, Torvalds decise di saltare direttamente al numero di versione 0.95. Il problema è che nonostante il sistema avesse ora molte funzioni utili al grande pubblico, non era affatto stabile. Il risultato è che prima di arrivare alla versione 1.0, cioè quella stabile, era necessario ancora del tempo e nel giro di poco i numeri a disposizione per le versioni finirono: è per questo motivo che, guardando i nomi delle vecchie versioni di Linux, si nota che sono state aggiunte delle lettere. Per esempio, la prima versione con un supporto stabile ad X era chiamata 0.96a. Pur non essendo ancora stabile, è subito chiaro a tutti che Linux è il kernel più adatto per il progetto GNU, e viene adottato dalla maggioranza dei programmatori. Grazie alle patch ed ai suggerimenti degli appassionati, Torvalds riesce a correggere i principali bug ed a realizzare una versione del sistema operativo GNU/Linux sufficientemente stabile nel 1994, pubblicando Linux 1.0. Da quel momento, sempre più persone hanno contribuito allo sviluppo del sistema, e diverse aziende hanno deciso di basare le loro attività sul binomio GNU/Linux e sono nati centinaia di progetti che sfruttano la portabilità del sistema in tutti gli ambiti in cui oggi possiamo immaginare un computer: da desktop e server ai telefonini e gli elettrodomestici. Nel frattempo, Linus Torvalds si è laureato con una tesi intitolata “Linux: a portable operating system” ed ora coordina lo sviluppo del suo kernel. Richard Stallman continua a lavorare su EMACS e segue gli sviluppi del progetto GNU, passando comunque la maggioranza del tempo viaggiando in tutto il mondo per spiegare a tutti l’importanza di vivere in una società libera. Il laboratorio di intelligenza artificiale dell’MIT è stato spostato in un altro edificio, e non hanno più il DEC-20. In compenso, hanno ancora, come tutti noi, delle stampanti che ogni tanto si inceppano.
La forza sta nella comunità: nascono i LUG
Essendo GNU/Linux un progetto collaborativo, che è nato e cresce grazie ai contributi di altri utenti (chi scrive codice, chi le traduzioni linguistiche, chi semplicemente segnala i bug, eccetera…), è ovvio che la comunità degli utenti sia il vero punto di forza. In Italia il sistema viene conosciuto abbastanza presto, e cominciano a nascere dei gruppi di utenti chiamati LUG. Non è chiaro dove e quando nasca il primo LUG, Linux User Group, italiano, visto che si tratta di gruppi spessi informali. Tuttavia, nel 1994 (lo stesso anno in cui viene pubblicata la prima versione stabile del kernel Linux) nasce la Italian Linux Society (http://www.ils.org/), fondata a Savona. Nel corso degli anni questa organizzazione si è impegnata per favorire la diffusione del software libero ed open source, anche con eventi molto noti al pubblico come i Linux Days. Se volete collaborare alla diffusione di GNU/Linux in Italia, non dovete far altro che cercare il LUG più vicino a voi sul sito web e mettervi in contatto con gli altri utenti.
Su Reddit è stato lanciato un contest per sviluppatori amatoriali da parte di Mozilla Italia, col supporto dell’Università di Torino, riguardante il progetto DeepSpeech. Il progetto mira a sviluppare un sistema di riconoscimento vocale open source, con dei corpora (testi e audio) inviati dagli utenti e dunque teoricamente molto più rappresentativi della lingua effettivamente parlata dalla popolazione, in particolare in un paese come il nostro, nel quale accenti e dialetti rendono molto differente il parlato anche a pochi chilometri di distanza.
Il gioco è abbastanza semplice: bisogna sviluppare una applicazione utilizzando il modello DeepSpeech della lingua italiana, senza particolari limitazioni. Vanno bene progetti di domotica basati sui RaspberryPi, oppure strumenti desktop per aiutare i disabili nell’utilizzo dei computer, o ottimizzazioni per il lavoro d’ufficio in questa fase di smartworking. Il progetto deve avere una documentazione scritta, essere rilasciato come Open Source, e possibilmente anche almeno un video che ne dimostri il funzionamento. Si può iscrivere il proprio progetto creando un ticket sul repository https://github.com/MozillaItalia/DeepSpeech-Contest. In palio vi sono una serie di magliette e adesivi brandizzati Mozilla, oltre ovviamente alla consapevolezza di avere aiutato un progetto FOSS a crescere e alla visibilità nella community.
Gli appassionati della tecnologia libera e della sicurezza dei propri dati conoscono già il PinePhone, smartphone basato sulla scheda di prototipazione Pine64 (una alternativa al RaspberryPi). La novità è che dal giorno 1 dicembre sarà però possibile preordinare una nuova versione, dotata di Plasma Mobile. Si tratta del primo sistema operativo progettato proprio in collaborazione con gli sviluppatori del PinePhone, che permette quindi di sfruttare le caratteristiche di questo dispositivo. Il PinePhone è infatti uno smartphone, ma essendo dotato di una vera e propria distribuzione GNU/Linux (basata su Ubuntu) è anche uno strumento perfetto per lavorare, vista la possibilità di installare software dai repository come su un qualsiasi PC. Naturalmente si possono anche installare le app Android, grazie a AnBox.
Il PinePhone è ovviamente adatto alla conservazione di dati sensibili e alla protezione della nostra privacy, visto che contiene degli interruttori hardware per disattivare l’antenna LTE, il WiFi, il microfono, le videocamere, e l’altoparlante.
Il vantaggio dell’ecosistema di app Plasma Mobile è la perfetta integrazione con gli altri dispositivi: traferire file e persino controllare il proprio smartphone dal PC (o viceversa) è facilissimo, grazie a KDE Connect. Le applicazioni tipiche di KDE, come l’editor di testi Kate e il visualizzatore di documenti Okular, sono tra le più avanzate in circolazione e rendono il PinePhone un dispositivo mobile potenzialmente adatto per lavorare. La versione con 3GB di RAM è fornita con una dock di ricarica che offre delle prese USB per collegare mouse e tastiera, oltre a una porta video HD, per utilizzare lo smartphone come un vero e proprio PC tascabile.
Per chi vuole approfondire il funzionamento di questo sistema, pubblichiamo il video dell’intervista che aveva realizzato l’anno scorso ad alcuni sviluppatori di Plasma Mobile: