Qual è la differenza tra open source e software libero?

Quando si parla di licenze software, i due termini sono in gran parte intercambiabili, in quanto (con alcune eccezioni) usano le stesse licenze software sottostanti.

Tuttavia... ci sono differenze nei valori sottostanti.

"Software libero" - come descritto da Richard Stallman significa software che ti dà (il destinatario/utente del software) libertà. Questo è espresso nella GNU General Public License che impedisce che il sorgente sia "bloccato", e quindi influisce sulla libertà degli utenti futuri.

L'attenzione è sulla libertà dell'utente, e sul permettere alla libertà di propagarsi. Il codice non è la cosa principale. Questo è espresso nelle libertà della GNU GPL: Non solo all'utente è permesso il pieno accesso al codice sorgente, (s)gli è permesso di modificarlo e ridistribuirlo - a patto che il destinatario riceva gli stessi diritti. La libertà può diffondersi!

Open Source è probabilmente una diluizione del concetto di Software Libero: Il movimento Open Source ha un atteggiamento (in gran parte) pragmatico nei confronti delle cose: La licenza del software incoraggia la cooperazione, permettendo a tutti di beneficiare, senza l'attenzione alla libertà dell'utente. Questi tendono a concentrarsi sul software.

Quindi è il software che è "aperto". Non l'utente che è "libero". Sottile differenza di enfasi.

Il progetto GNU lo descrive molto meglio di quanto potrei fare io.

La differenza tra Software Libero e Open Source è visibile anche nelle licenze: La licenza BSD a 3 clausole è considerata una licenza Open Source. Ma non c'è modo che sia considerata appropriata da quelli del Software Libero: Non c'è l'obbligo di "passare il codice sorgente": Gli utenti non stanno meglio che se usassero software proprietario.

Succede, questo è esattamente il tipo di Open Source che piace alle aziende - permette loro di incorporare software con licenza BSD nei loro prodotti (come avere roba gratis!) - ad esempio lo stack TCP di Windows è iniziato come una copia dello stack TCP di BSD Unix - che guarda caso era con licenza BSD.

Microsoft non avrebbe potuto farlo se lo stack TCP fosse stato sotto GNU GPL: Avrebbero dovuto obbedire a quella licenza - e pubblicare il codice sorgente di Windows sarebbe stato impensabile. Così hanno scelto invece la licenza BSD.

Disclaimer: potrei aver generalizzato un po' in quanto detto sopra, ma spero di aver colto il punto sulle sottili differenze.