### Il software è facile da diffondere
Al contrario di un'automobile, **riprodurre** il software non
costa nulla; se sviluppo un software utile:
* *Chiunque* ne può beneficiare;
* Altri possono *migliorarlo*, e io ne guadagnerò.
**Domanda**: è davvero un modello sostenibile?
### GNU e Free Software Foundation
RMS decide di risolvere il problema alla base:
* Crea il **progetto GNU** nel 1983 (GNU is Not Unix);
* Obiettivo: creare un'alternativa libera a **Unix**;
* Fonda la **Free Software Foundation** (FSF) nel 1985.
 
I sistemi operativi nel 1980: Unix
### ... ha funzionato?
* La FSF è **attiva** ancora oggi;
* Ha creato le **licenze** più usate per il software libero;
* Ha cambiato la cultura del software.
**Pubblicità**: Parleremo di licenze anche nel prossimo incontro,
con Alessandro e Giuseppe.
### ... e il sistema operativo GNU?
Vengono sviluppati molti software per GNU:
* Compilatori: **GCC** (GNU Compiler Collection);
* Editor di testo: **Emacs**;
* Shell: **Bash**;
Nel 1990, il progetto GNU è quasi completo:
mancano solo il **kernel** e il **file system**.
### GNU Hurd
* Il kernel sviluppato per GNU si chiama **Hurd**;
* È un progetto tecnicamente molto raffinato e avanzato (**microkernel**);
* Viene sviluppato a partire dal 1990, ma è ancora **incompleto**;
* Non è **mai stato completato**, o usato in produzione.
### \#2: Linux
Nel 1991, **Linus Torvalds** è un giovane studente finlandese di informatica;
* Il corso di sistemi operativi usa **Minix**:
una versione di Unix pensata a scopo **didattico**;
* Minix è **proprietario**: codice sorgente disponibile,
ma non modificabile o ridistribuibile;
### Un post su Usenet

### Nasce Linux
* Nei mesi seguenti il kernel viene sviluppato;
* Altri si uniscono al progetto, suggeriscono idee,
e contribuiscono codice;
* È il pezzo mancante per GNU: nasce **GNU/Linux**.
### Le distribuzioni Linux
* Nascono le **distribuzioni**: Linux viene combinato con GNU e altri software
per creare sistemi operativi completi.
* Linux è usato da milioni di persone; è alla base di **Android**,
il sistema operativo più usato al mondo;
* È usato in **supercomputer**, **server**, **TV**, **infotainment**, e sistemi
**domotici**.
### GNU/Linux
* Linux non sarebbe stato possibile senza GNU;
* GNU non sarebbe utile senza Linux.
È un esempio di come il software libero possa essere un **bene comune**: ognuno
aggiunge qualcosa, e tutti ne beneficiano.
### Licenze libere
* Linux è rilasciato sotto la **GPL** (GNU General Public License);
* La GPL è una licenza **copyleft**: chiunque può
ridistribuire il software, ma deve farlo con la stessa licenza.
* Altre licenze libere: **MIT**, **BSD**, **Apache**, ...
**Reminder**: Per essere libera, una licenza deve garantire le libertà di
**usare**, **modificare**, e **ridistribuire** il software.
Non è sufficiente che il codice sorgente sia disponibile.
### Lo sviluppo di Linux
* Dal 1991, Linus Torvalds guida lo sviluppo di Linux;
* Oggi è sviluppato da migliaia di persone;
* Grandi aziende partecipano: Google, Facebook (Meta), AMD, Intel, Oracle, NVIDIA, ...
L'uso di una licenza GPL ha **forzato molte aziende** a pubblicare
i loro driver
(vedi AMD, Intel, in qualche forma anche NVIDIA).
### \#3: Wikipedia
* Nel 2001, **Jimmy Wales** e **Larry Sanger** creano Wikipedia:
un'**enciclopedia online**, scritta da volontari;
* È rilasciata sotto la licenza **Creative Commons Attribution-ShareAlike** (CC BY-SA);
* Oggi è uno dei siti più visitati al mondo.
### \#4: Arduino
Il progetto nasce nel 2003, da una necessità dell'**Interaction Design Institute Ivrea** in Italia:
* Serviva un modo **facile** per realizzare prototipi di dispositivi interattivi;
* I microcontrollori esistenti erano **costosi**, **difficili da usare**,
o **poco flessibili**.
### Programmazione di microcontrollori
* Anche la **programmazione non è banale**: serve conoscere
bene l'hardware.
* La domanda di Banzi & Co.:
> Possiamo creare un sistema più **semplice**, che **nasconda
> i dettagli tecnici**, e permetta a chiunque di realizzare i propri
> progetti?
### Wiring e Arduino
* Nel 2003, in una tesi di laurea uno studente di **Massimo Banzi**
sviluppa **Wiring**: una piattaforma hardware e software per prototipazione rapida;
* Nel 2005, lanciano **Arduino**: una versione semplificata di
Wiring, pensata per essere più **accessibile e facile da usare**.
### Self-replicating printers
* Nel 2005, **Adrian Bowyer** lancia il progetto **RepRap**:
creare una stampante 3D che possa stampare i propri componenti;
* Il progetto è rilasciato sotto la licenza **GPL**.
L'idea: se creiamo una prima stampante che si possa replicare,
potremo diffonderla come il software.
### Una scelta etica o tecnica?
In tutti i casi che vi ho raccontato, la scelta di usare
software libero si è rivelata superiore dal punto di vista:
* **Tecnico**: ha permesso di creare software migliore, più usato, e più diffuso;
* **Etico**: ha permesso a chiunque di accedere a strumenti e conoscenza,
e di partecipare alla loro creazione.
* **Di affidabilità e disponibilità**: non è condizionato dal
fallimento dell'azienda che lo sviluppa, o da scelte commerciali che ne limitano l'uso.