# GNU

GNU (AFI: /ɡnuː/ ascolta, acronimo ricorsivo di "GNU's Not Unix") è un sistema operativo Unix-like, ideato nel 1984 da Richard Stallman e promosso dalla Free Software Foundation, allo scopo di ottenere un sistema operativo completo utilizzando esclusivamente software libero: l'obiettivo era rifare un sistema operativo libero ma che non fosse più quello di prima, che rispondesse alle idee originarie, che avesse le stesse proprietà del sistema Unix, ma che fosse allo stesso tempo diverso.
Dato che GNU Hurd, il kernel ufficiale del progetto, non è considerato pronto per la distribuzione, GNU viene in genere utilizzato congiuntamente ad altri kernel tra cui Linux, Linux-libre, XNU o quello utilizzato da FreeBSD. La parola GNU si pronuncia /gnu:/ (gh-nù) e non /ɲu:/ per non confonderlo con l'omonima specie animale o con l'aggettivo inglese new.

## Storia

L'ideatore di GNU è Richard Stallman, che cominciò la sua carriera al MIT nel 1971, lavorando in un laboratorio di intelligenza artificiale, i cui membri erano già abituati a scambiare liberamente codice e programmi in un periodo in cui il software, usato in modo molto simile all'attuale software libero (senza però nessuna regola scritta che ne sancisse le modalità d'uso, cioè senza nessuna licenza), veniva utilizzato da molte compagnie private e i programmatori non erano quasi mai soggetti ad un accordo di non divulgazione.
Il laboratorio di intelligenza artificiale usava un sistema operativo a partizione di tempo (timesharing) chiamato Incompatible Timesharing System (ITS) che il gruppo di esperti informatici del laboratorio, chiamati semplicemente "hacker", aveva progettato e scritto in linguaggio assembly per il PDP-10, uno dei grossi elaboratori di quel periodo. Il termine “hacker” con cui erano conosciuti gli esperti informatici non si riferisce al significato attuale di “pirata”, ma a quello di persone “che amano programmare, e a cui piace essere bravi a farlo”.
A partire dall'inizio degli anni ’80 si verificarono alcuni eventi che portarono ad un repentino cambiamento della situazione. In primis, la quasi totalità del software in circolazione era stata sostituita dal software proprietario. Inoltre, la Digital smise di produrre la serie PDP-10 poiché la sua architettura non poteva essere aggiornata in modo da permetterle di rimanere al passo con le novità del momento. Questo fece sì che la maggior parte dei programmi che formavano ITS divenisse obsoleta. Infine in quegli anni la comunità originale del laboratorio di Intelligenza Artificiale si dissolse perché molti degli hacker vennero assunti da altre società quali la Symbolics, nata da una costola del laboratorio stesso.
La scelta facile che avrebbe potuto fare Stallman sarebbe stata quella di unirsi al mondo del software proprietario, firmando accordi di non-diffusione e promettendo di non aiutare i suoi compagni hacker. In questo modo avrebbe potuto guadagnare, ma sapeva che al termine della sua carriera si sarebbe voltato a guardare indietro e avrebbe compreso di aver contribuito a rendere il mondo peggiore, impedendo ai programmatori di collaborare tra di loro. Verso la fine del 1983 Richard Stallman lasciò il suo lavoro al MIT, pur continuando ad utilizzare le attrezzature del laboratorio, e cominciò a sviluppare, nei primi mesi del 1984, un nuovo sistema operativo compatibile con Unix, che permettesse a chiunque di vedere il codice, di modificarlo, di eseguirlo, di condividerlo con gli altri liberamente e di passare facilmente ad esso (da qui appunto l'acronimo ricorsivo "GNU's Not Unix"). L'annuncio originale (27 settembre 1983) fu seguito dal rilascio della prima versione del Manifesto GNU. Lo sviluppo del sistema iniziò nel 1984.
«Il mio lavoro sul software libero è motivato da un obiettivo idealistico: diffondere libertà e cooperazione. Voglio incoraggiare la diffusione del software libero, rimpiazzando i programmi proprietari che proibiscono la cooperazione, e quindi rendere la nostra società migliore. Questa è la ragione fondamentale per cui la GNU General Public License è stata scritta così com'è - come copyleft»
(Richard M. Stallman)
Nel settembre 1984 Stallman iniziò a lavorare su GNU Emacs che cominciò ad essere utilizzabile all'inizio del 1985. Si trattava del primo programma sviluppato all'interno del progetto GNU. Per quanto concerne la sua distribuzione, Stallman lo mise sul server ftp anonimo del computer che utilizzava al MIT. Questo non era però sufficiente poiché in quel periodo ancora poche persone avevano accesso ad Internet. Così iniziò a farsi spedire dagli interessati una busta affrancata contenente un nastro che rimandava al mittente dopo avervi caricato Emacs, per un costo di 150 dollari. Questo fu il primo passo per la creazione di un’impresa di distribuzione di software libero.
Nel 1985, spinti dalla necessità di nuovi finanziamenti, Stallman e soci crearono la Free Software Foundation (Fondazione per il Software Libero), una organizzazione senza fini di lucro per lo sviluppo di software libero. La FSF si prese anche carico della distribuzione dei nastri di Emacs ed in seguito estese l’attività aggiungendo sul nastro altro software libero, anche non GNU. I dipendenti della Free Software Foundation hanno scritto e curato la manutenzione di diversi pacchetti GNU. Fra questi spiccano la libreria C e la Bash. La libreria C di GNU è utilizzata da ogni programma che gira su sistemi GNU/Linux per comunicare con il kernel Linux. Lo sviluppo di questi programmi venne finanziato perché il progetto GNU non riguardava solo strumenti di lavoro o un ambiente di sviluppo: l’obiettivo era un sistema operativo completo, e questi programmi sono stati necessari per raggiungere quell'obiettivo.
L'obiettivo principale di GNU era essere software libero. Anche se GNU non avesse avuto alcun vantaggio tecnico su Unix, avrebbe avuto sia un vantaggio sociale, permettendo agli utenti di cooperare, sia un vantaggio etico, rispettando la loro libertà. Nel 1989 quindi Stallman creò la GNU General Public License per il software libero, che vincola gli utenti a ridistribuire un software, e le sue eventuali modifiche, come software libero. Questo non è sempre vero e nemmeno scontato, come per il caso "X Window System". Sviluppato al MIT, esso venne presto adottato da molte società informatiche e ridistribuito insieme ai sistemi Unix con lo stesso accordo di non-diffusione, trasformandosi rapidamente da sistema libero a sistema proprietario.
Nel 1992 il Sistema GNU ebbe al suo interno un editor di testi estensibile (Emacs), un compilatore (GCC), con funzioni di ottimizzazione e la maggior parte delle librerie e delle utility di un sistema Unix standard. Era praticamente un sistema completo, ma non era ancora pronto il kernel chiamato GNU Hurd (originariamente battezzato "Alix"), il cui sviluppo era cominciato nel 1986, prima sulla base di TRIX (un kernel Unix realizzato al MIT) e successivamente (1988) sulla base di Mach (sviluppato all'Università Carnegie Mellon).
Si decise allora di abbinare il software GNU al kernel Linux, un kernel compatibile con Unix sviluppato nel 1991 da Linus Torvalds come software proprietario, ma reso software libero nel 1992, per creare un unico sistema chiamandolo GNU/Linux.
Uno delle sfide del progetto fu quella delle librerie non libere. Tra il 1996 e il 1996 veniva utilizzato l'ambiente grafico KDE, libreria non libera e dunque non compatibile con i sistemi GNU/Linux, tuttavia, aggiunta ai sistemi da alcuni distributori. Questo rappresentava un problema di libertà, così la Free Software Foundation decise di risolvere il problema ideando GNOME e Harmony.
Lo sviluppo di GNU Hurd, software libero creato nel 1990 per sostituire il kernel di Unix, viene ancora oggi portato avanti dal progetto GNU, ma non ha ancora raggiunto una maturità ed una stabilità che ne permetta l'uso in un ambiente di produzione. Il Progetto GNU continua ad usare il termine "software libero" per esprimere l'idea che la libertà sia importante, non solo la tecnologia.

## Descrizione

GNU è un sistema operativo di tipo Unix, questo significa che è costituito da diversi programmi quali: applicazioni, librerie, giochi e strumenti di sviluppo.

### Kernel

Il sistema GNU è stato abbinato a diversi kernel, tra i quali:
* il kernel GNU Hurd (il sistema operativo prende il nome di GNU/Hurd);
* il kernel XNU utilizzando Darwin (il sistema operativo prende il nome di GNU/Darwin);
* il kernel Linux (il sistema operativo prende il nome di GNU/Linux);
* il kernel NetBSD (il sistema operativo prende il nome di GNU/NetBSD);
* il kernel FreeBSD (il sistema operativo prende il nome di Debian GNU/kFreeBSD);
* il kernel di Solaris (il sistema operativo prende il nome di NexentaOS).

### Principali software del sistema GNU

* Bash (bourne again shell): shell del sistema GNU. Il suo scopo è consentire l'esecuzione di programmi da interfaccia a riga di comando.
* GCC (GNU Compiler Collection): suite di compilatori. Supporta numerosi linguaggi di programmazione tra cui C, C++, Objective-C, Fortran, Java e Ada.
* gdb (GNU debugger): debugger.
* GNU Emacs: editor di testo estendibile tramite macro in Emacs Lisp
* Core Utilities: collezione di software per effettuare operazioni basilari su file e testi.
* glibc (GNU C Library): implementazione GNU della libreria standard del C
* GNOME (GNU Network Object Model Environment): desktop environment
* GIMP (GNU Image Manipulation Program): manipolazione di immagini digitali e ritocco fotografico.

### Distribuzioni per PC datati

* Puppy Linux
* Tiny Core Linux
* SliTaz
* Debian LXDE
* Lubuntu
* LXLE Linux
* Parabola GNU/Linux-libre