In diverse occasioni ho accennato a questo prodotto, promettendo prima o poi di parlarne più estesamente. La pazienza di molti viene ora premiata. Facciamo subito la conoscenza con questo sistema operativo e con il mondo Open Source, spesso nominato a casaccio se non proprio a sproposito ed in modo errato dalla stampa tradizionale, di cui figli e nipoti parlano ostentando aria da saputelli e di cui si vocifera da qualche collega ?esperto di computer? nei corridoi dell?ufficio, ma che nessuno ha mai visto bene da vicino. Linux è un sistema operativo il cui cuore fu inventato da uno studente finlandese nei primissimi anni ?90, tal Linus Torvalds, con un unico scopo dichiarato: per divertimento. Il nome deriva dall?amalgama del nome di questo ragazzo, tutt?ora attivo nello sviluppo della sua creatura più famosa e il nome Unix ossia il più stabile, famoso, longevo e sicuro sistema operativo, su cui fra l?altro si è basato lo sviluppo di Internet.
Torvalds pensò fin da subito di non commercializzare il parto della sua mente, ma di chiedere anzi l?aiuto ed il contributo di altri programmatori in giro per il mondo (che risposero entusiasti). Non pose quindi nessun vincolo di carattere legale e volendo portare avanti questo aspetto di condivisione si incontrò presto con un?altra figura quasi mitica del mondo Open Source, ossia Richard Stallman, promotore della libertà di programmazione grazie alla sua Free Software Foundation.
Il concetto alla base di tutto il lavoro di Stallman prima e di Torvalds poi è l?Open Source (termine coniato nel 1998 come evoluzione del concetto di Free Software, di cui Richard Stallman può essere considerato il padre), letteralmente ?sorgente (codice) aperta?, ossia tutti i programmi resi disponibili al pubblico rientrano in una tipologia di licenza secondo la quale le righe di codice che descrivono ogni singolo comportamento del software sono distribuite liberamente per eventuali sviluppi successivi. Nei primi anni ?80 la tendenza era quella di cercare una standardizzazione ed allo stesso tempo uno scambio di informazioni, ma nel volgere di poco tempo si è passati ad una logica restrittiva, per cui chi sviluppava software ne diventava proprietario e non permetteva a nessun altro di modificarlo.
Mi permetto a questo punto una piccola digressione, spero non troppo tecnica, per chiarire meglio alcuni termini ed i relativi significati.
Quando un programmatore vuole creare un software, scrive le cosiddette ?righe di codice?, ossia tutta una serie di istruzioni che dicono al programma fai questo, fai quello, a seconda di quali input o variabili vengono recepiti dal programma stesso e che permettono all?applicazione di integrarsi con il sistema operativo. Questi comandi sono scritti in un linguaggio che non è direttamente e facilmente comprensibile all?utilizzatore di un computer e ancor meno dal computer stesso, che capisce solo una sequela di zeri ed uno. La trasformazione quindi di questi comandi in codice binario (0 e 1 appunto) porta alla formazione di un ?codice eseguibile? e rappresenta, alla fine, il programma stesso, pronto per essere installato. Ovviamente l?utente del programma non sa nulla dei passaggi precedenti e interagisce solo con l?eseguibile ultimato. Ora, che fine ha fatto il codice sorgente iniziale? Nel modello del software proprietario esso resta ben custodito nei computer del programmatore e l?utente non sa esattamente cosa faccia il programma fino in fondo e non lo può personalizzare secondo le proprie esigenze, se non entro i confini stabiliti ed imposti dal programmatore. Nel modello aperto invece, la documentazione ed il codice sorgente sono liberamente distribuiti assieme all?eseguibile, di modo che qualsiasi altro programmatore possa leggere tutte le istruzioni, intervenire e modificarle a proprio piacimento, realizzare un altro eseguibile e rimettere in circolazione il suo operato. Questa seconda metodologia garantisce innanzitutto la sicurezza, perché è possibile conoscere riga per riga tutto il comportamento del programma, evitando per esempio che un semplice orologio per il desktop sia in realtà un programma che memorizza password e numeri personali e li invia a chissà chi. Inoltre è più facile risolvere eventuali problemi, perché ci sono più persone che possono lavorarci nello stesso momento ed in ultimo è possibile migliorare ed arricchire il programma con nuovi desiderata. Purtroppo una volta ottenuto l?eseguibile non è possibile risalire completamente all?intero codice sorgente, come se al completamento di un bel dolce si volesse risalire ai singoli ingredienti, alle loro quantità, ai tempi di cottura, ecc. La creazione di un programma quindi è un procedimento a senso unico e a meno di non avere i sorgenti, non è possibile fare il percorso inverso.
Nel prossimo intervento concluderemo il discorso su questa nuova realtà informatica con notevoli risvolti sociali.