Il prossimo 27 settembre la Free Software Foundation (FSF) festeggerà il 40esimo anniversario del sistema operativo GNU e l’avvio del movimento del software libero. Si tratta di un traguardo importante perché se da un lato il software è diventato parte integrante delle nostre vite, la stragrande maggioranza degli utenti non ne ha il pieno controllo.
Quarant’anni fa, nel 1983, un informatico di nome Richard Stallman annunciò l’intenzione di sviluppare un sistema operativo Unix-like chiamato GNU, acronimo di “GNU’s Not Unix“. GNU è un sistema operativo sviluppato per porre l’accento sulle libertà fondamentali degli utenti e ancora oggi è rimasto fedele ai suoi ideali fondanti.
Zoë Kooyman, direttore esecutivo della FSF, commenta che quando ci si volta all’indietro per guardare alla storia del movimento del software libero o all’idea che gli utenti dovrebbero avere il controllo del proprio computer, si apprende che tutto è cominciato proprio con GNU.
Il cuore di GNU: le quattro libertà
Il progetto GNU è fondato su quattro libertà fondamentali che mirano a porre l’utente al centro del processo e contrastano il modello di software proprietario in cui l’utente, invece, è fortemente limitato ed è tenuto a rispettare licenze restrittive:
- Libertà di eseguire: Gli utenti hanno il diritto di eseguire il software come preferiscono, per qualsiasi scopo.
- Libertà di studiare: Gli utenti possono esaminare il codice sorgente del software per capire come funziona.
- Libertà di modificare: Gli utenti possono apportare modifiche al software per adattarlo alle loro esigenze.
- Libertà di condividere: Gli utenti possono distribuire copie del software a chiunque, contribuendo così alla comunità.
Uno degli aspetti più significativi del progetto GNU è, inoltre, l’introduzione del concetto di copyleft. Esso garantisce che il software e le sue versioni modificate rimangano sempre liberi e open source. Il concetto è meglio rappresentato dalla GNU General Public License (GPL), una delle licenze più utilizzate nell’ambito del software libero.
Nel 1992, i componenti essenziali di GNU erano completi, tranne uno, il kernel. Quando nel 1991 Linus Torvalds presentò la primissima versione del kernel Linux, pubblicato proprio sotto licenza GNU GPL, quindi come software libero, si arrivò a un traguardo storico. Per la prima volta l’accoppiata GNU/Linux formò un sistema operativo completamente libero, che rese possibile utilizzare un PC completamente sprovvisto di programmi di tipo proprietario.
I programmi sviluppati sotto l’ala GNU
Il progetto GNU ha sviluppato una vasta gamma di software risultati fondamentali per la creazione di un sistema operativo Unix-like completamente libero. La pagina software GNU raccoglie tutti i programmi via via rilasciati: alcuni di essi sono essenziali in molteplici attività.
Giusto per fare qualche nome, ecco alcuni tra i programmi GNU più noti e utilizzati in assoluto:
GNU Compiler Collection (GCC): Un compilatore versatile che supporta numerosi linguaggi di programmazione ed è ampiamente utilizzato per lo sviluppo software.
GNU Bash: La shell GNU Bash è uno degli interpreti di comandi più utilizzati nei sistemi Unix e Linux ed è un componente fondamentale per l’interazione con il sistema operativo.
GNU Core Utilities: Pacchetto che include una serie di comandi di base utilizzati per la gestione dei file e delle directory, la navigazione del sistema e altre attività.
Emacs: Editor di testo altamente personalizzabile utilizzato da sviluppatori e programmatori per la scrittura di codice.
GIMP (Image Manipulation Program): Software di fotoritocco e grafica raster, utilizzato per la modifica e il ritocco delle immagini.
GDB (Debugger): Debugger ampiamente utilizzato per l’analisi e il debug dei programmi.
GNU Privacy Guard (GPG): Applicazione utilizzata per crittografare, decodificare e firmare digitalmente messaggi e file.
Octave: Ambiente di calcolo numerico e matematica computazionale, spesso utilizzato come alternativa a MATLAB.
grep: Uno strumento per la ricerca di testo all’interno dei file, ampiamente utilizzato su Linux per le operazioni di ricerca e filtraggio.
Sed (stream editor): Linguaggio per la manipolazione del testo usato per applicare modifiche con un approccio automatizzato.
Gnuplot: Programma per la creazione di grafici. Utilizzato per visualizzare dati scientifici e tecnici in una varietà di formati.
GNU Parallel: Strumento che permette di eseguire operazioni in parallelo sfruttando core e thread disponibili sulla CPU.
Differenza tra GNU e Linux
Come abbiamo detto, il kernel Linux è la spina dorsale del progetto ma GNU è arrivato anni prima. Prima che Torvalds sviluppasse il “nocciolo” del sistema operativo.
Se il kernel Linux costituisce una parte fondamentale del sistema operativo, da solo non è sufficiente per creare una piattaforma completa. Quindi il kernel Linux è di solito abbinato ad altre componenti software e, in particolare, al software GNU per creare sistemi operativi noti come “distribuzioni Linux“. Queste distribuzioni includono il kernel Linux, i tool GNU e molte altre applicazioni e servizi.
Come evidenziato nelle FAQ su GNU, il sistema operativo nella sua interezza dovrebbe essere chiamato GNU/Linux mentre il termine “Linux” dovrebbe essere utilizzato soltanto per riferirsi al kernel. Che poi, nella vita di tutti i giorni, questo non succeda è un altro discorso ma gli ideatori di GNU hanno sempre rivendicato un ruolo centrale ed essenziale.
Le differenze tra software libero e open source
Come abbiamo visto, il software libero si focalizza sulla libertà dell’utente di eseguire, studiare, modificare e condividere i programmi. È basato su principi etici e sulla convinzione che gli utenti dovrebbero avere il controllo totale del software che utilizzano. Le licenze copyleft, d’altra parte, sono associate al software libero e assicurano che il programma rimanga tale anche quando ne vengono sviluppate versioni derivate.
Il movimento open source è qualcosa di molto diverso: sviluppato alla fine degli anni ’90 con l’obiettivo di promuovere la qualità del software attraverso la collaborazione aperta e il rilascio del codice sorgente, punta principalmente sull’efficienza, la sicurezza e il miglioramento del software.
L’approccio, però, è molto diverso perché nel caso dell’open source non ci si concentra sulle libertà dell’utente o sul controllo etico del software. Ciò trova conferma nella tipologia di licenze che sono utilizzate per la distribuzione dei software open source: ci sono licenze molto permissive e licenze più restrittive. Alcune licenze open source non richiedono che le opere derivate siano anch’esse rilasciate come open source.
Nell’elaborare la sua presa di posizione “Why Open Source Misses the Point of Free Software“, Stallman si è proprio concentrato su queste differenze.
Credit immagine in apertura: iStock.com/PeopleImages