Pur lavorando da tanti anni nel mondo open-source, mi sono recentemente scoperto ignorante riguardo ad un tema che ho sempre dato per scontato: i concetti di free ed open-source. Ho sempre dato per scontato il principio base secondo cui il codice sorgente modificato per i propri scopi ha l’obbligo di rimanere aperto. Questo significa che in fase di distribuzione, questa dovrebbe avvenire nella stessa forma da cui si è partiti, e tale vincolo rimarrà per sempre valido. È il principio del così detto copyleft che la Free Software Foundation, ed in particolare Richard Stallman autore della famosa licenza GPL (GNU General Public License), ha adottato pionieristicamente in tutti i software da essa sviluppati e promossi.
Tutto chiaro? Semplice? Mica tanto, perché c’è molto, molto altro. In questa puntata di Saturday’s Talks cerchiamo di rispondere alle domande che qualcuno potrebbe porsi nel momento in cui decide di aprire il vaso di Pandora relativo a questo argomento. Pronti? Via.
Che differenza c’è tra un software free ed uno open-source?
Ci sono quattro libertà essenziali che il software deve possedere per essere ritenuto free:
- 0: la libertà di poter eseguire il programma, per qualsiasi scopo;
- 1: la libertà di studiare come funziona il programma e di cambiarlo per fare in modo che si comporti secondo le proprie esigenze;
- 2: la libertà di ridistribuire copie del programma in modo che possa essere utile a chiunque;
- 3: la libertà di ridistribuire copie delle proprie versioni modificate ad altri rendendo disponibile l’accesso al codice;
L’introduzione del termine open-source è avvenuta (molto) dopo quella del free software, nel 1998, con l’intenzione di conciliare l’utilizzo di software di tipo free nell’ambito enterprise, promuovendo il modello collaborativo open-source come più virtuoso rispetto alla controparte closed.
Nella sostanza, un software open-source prevede che il codice sorgente del programma, pubblicamente disponibile, possa essere studiato, modificato e distribuito a piacimento. Tutto uguale quindi? Come Richard Stallman sottolinea in questo lungo scritto, no. Esiste una sostanziale differenza tra software free ed open-source ed il fatto che i termini vengano sovente sovrapposti spazientisce non poco il fondatore della FSF che scrive:
Open source is a development methodology; free software is a social movement.
Open source è una metodologia di sviluppo, free software è un movimento sociale.
In un caso ci si preoccupa della libertà degli utenti (free) nell’altro della qualità del software (open-source).
Quindi, per rispondere alla domanda iniziale: il software open-source può essere distribuito liberamente, ma non esistono obblighi in questo senso, il software free ne prevede uno morale.
Come si esce da queste questioni filosofiche badando al sodo? Semplice, con le licenze.
Quante licenze software di tipo free e open-source esistono?
Tantissime. Forse è per questo che l’argomento viene dato in molti casi per scontato, più che altro perché a leggere la pagina di Wikipedia che le descrive ci si perde un po’. Le differenze, a volte sottili, a volte sostanziali, sono moltissime ed orientarsi è veramente complicato.
Quale licenza scegliere per il proprio software?
Ciò che differenzia una licenza da un’altra sono le sue proprietà, e la già citata pagina di Wikipedia le riassume in questo modo:
- Linking: è il caso delle librerie. Come mi comporto se il mio codice utilizza del codice open-source? È possibile effettuare un link?
- Distribution: la modalità con cui il codice può essere distribuito a terze parti;
- Modification: la modalità con cui il codice può essere modificato da chi lo utilizza (e ne è quindi il licenziatario);
- Patent grant: la protezione nei confronti dei contributori che volessero brevettare il software;
- Private use: l’obbligo o meno di condividere il codice con la community o la possibilità di usarlo privatamente;
- Sublicensing: se per il codice modificato è prevista la possibilità di modifica della licenza originale o al contrario la licenza originale va mantenuta;
- Trademark grant: utilizzo del marchio associato al codice o ai contributori da parte di chi utilizza il prodotto.
Ed è presto detto come, a fronte di tutti questi aspetti, le variazioni sul tema siano moltissime. Nella scelta quindi della licenza è bene misurare le proprie aspettative con le proprietà descritte, per capire se già esiste una licenza adatta allo scopo (molto probabile, visto l’enorme numero disponibile) o se ne andrà scritta una nuova. Un notevole aiuto in questo senso lo offre il sito choosealicense.com in cui, partendo dalle esigenze, viene fornita una lista delle licenze che rispondono a determinati requisiti.
Quali sono le licenze free ed open-source più utilizzate?
Un’ottima panoramica delle licenze più utilizzate è offerta dal sito choosealicense.com che descrive, specificando i permessi, le condizioni e le limitazioni le licenze più utilizzate e guida nella scelta sulla base delle esigenze. Volendo fare una scelta basata sulle statistiche di Black Duck relative alle licenze open-source più utilizzate, ecco le prime tre che, per composizione, offrono uno spettro sufficientemente variegato delle variazioni che possono intercorrere tra una licenza e l’altra:
MIT
La licenza MIT è in assoluto la più semplice ed intuitiva, nella sua brevità rende chiaro come sia necessario preservare unicamente il copyright e le note di licenza. Il proprio lavoro potrà essere quindi distribuito in termini differenti ed eventualmente senza codice sorgente.
GNU GPL
La GNU General Public License è una licenza copyleft che obbliga a rendere disponibile la totalità del codice sorgente, unitariamente alle modifiche effettuate e, soprattutto, impone che tutti i lavori derivati dal codice di partenza vengano distribuiti con la stessa licenza. Chi collabora ai progetti concede esplicitamente i diritti di brevetto.
Esistono tre versioni di questa licenza. La maggioranza dei software open-source attualmente in circolazione utilizzano la versione 2 o la versione 3, quest’ultima estende la precedente con regole che ne permettono una migliore integrazione con altre licenze (come quella Apache, vedi più avanti) e con un’esplicito riferimento alla concessione dei diritti d’autore e brevetti.
Apache
La licenza Apache, attualmente alla versione 2.0, è molto chiara nell’affermare come si debbano preservare copyright e note di licenza e nel non fare nessun riferimento esplicito in merito alla ridistribuzione del codice sorgente. Tutto questo la rende simile alla licenza MIT dalla quale però si differenzia nel momento in cui ai contributori viene richiesto di concedere i diritti di brevetto.
I tre esempi posti permettono quindi di osservare gli estremi (GNU GPL e MIT) e la via di mezzo, Apache. È forse per questo che da diverso tempo si è visto crescere l’adozione di quest’ultima più vicina agli sviluppatori, alla produttività, ai ritmi odierni di sviluppo. Da notare peraltro come la licenza Apache 2.0 sia compatibile con la GPLv3 nella misura in cui il software che ne risulta venga distribuito come GPLv3.
In conclusione…
È un terreno minato quello delle licenze software, all’interno del quale come visto ci si trova obbligati a bilanciarsi tra questioni etico/filosofiche e questioni tecnico/pratiche. Le community relative ai progetti open-source hanno una propria politica, una propria licenza ed un codice etico al quale, se si decide di collaborare, è necessario aderire. Per tutti i nuovi progetti è necessario ricordare come le scelte effettuate in termini di licenza ne determinano il futuro ed accompagneranno il progetto per tutta la sua esistenza.
Ecco in conclusione alcune domande per alimentare la discussione:
- C’è una licenza che preferite? Perché?
- Cosa ne pensate della questione filosofico/etica comparata all’approccio tecnico/pratico?
- Free ed open-source possono sempre coesistere? Se sì, come giustificate Android, un progetto open-source in cui parte delle quattro libertà fondamentali stabilite dalla Free Software Foundation mancano?
La parola voi!
Leggi il contenuto originale su Mia mamma usa Linux!