Una delle caratteristiche che ha sempre contraddistinto Delphi è l'ampia disponibilità di componenti e librerie di terze parti, sia gratuite che a pagamento. Molti di questi hanno da sempre dato la possibilità di ottenere i sorgenti. Al giorno d'oggi è possibile trovare molto materiale interessante sui principali siti di condivisione di codice tra i quali ricordiamo: GitHub, SourceForge, Bitbucket e l'ormai pensionato Google code. Questi siti ospitano codice open source, che ricordo non è sinonimo di gratis, ma significa che è possibile ottenere e modificare il sorgente a patto di rispettare le varie clausole imposte dalla licenza.
Visto che molti di noi usano, e qualche volta contribuiscono alla sviluppo di questo tipo di codice, mi sembrava giusto scrivere un breve vademecum sulle licenze più usate.
Innanzitutto volevo ribadire il fatto che open source non significa gratis. Dipende ovviamente dalla licenza specifica, ma per esempio potete tranquillamente vendere un software con licenza GPL a patto di rilasciare i sorgenti a chiunque abbia una copia del vostro software. Certo, per come funziona la GPL, il licenziatario del vostro software può tranquillamente a sua volta modificare o rivendere il vostro software, di conseguenza alcuni modelli di business non sono praticabili.
In effetti la maggior parte di chi sviluppa in questo ambito guadagna tramite sponsorizzazioni o supporto tecnico a pagamento.
GPL e LGPL
«Le licenze per la maggioranza dei programmi hanno lo scopo di togliere all'utente la libertà di condividerlo e di modificarlo. Al contrario, la GPL è intesa a garantire la libertà di condividere e modificare il free software, al fine di assicurare che i programmi siano "liberi" per tutti i loro utenti.»
Queste sono le prime righe riportate nel preambolo della licenza. È abbastanza evidente il forte messaggio che Richard Stallman voleva dare. Fondamentalmente la licenza impone di rendere disponibili sempre i sorgenti insieme ai file binari di un software. I sorgenti poi possono essere modificati senza particolari limiti se non che versioni derivate dal software originale devono rimanere con la medesima licenza.
La licenza di solito viene considerata piuttosto restrittiva perché per "codice derivato" si intende anche software completamente separato (come un'altro eseguibile) che usa il software licenziato sotto GPL. Questo di fatto impedisce ad un software commerciale closed source di usare una libreria GPL.
La licenza di solito viene considerata piuttosto restrittiva perché per "codice derivato" si intende anche software completamente separato (come un'altro eseguibile) che usa il software licenziato sotto GPL. Questo di fatto impedisce ad un software commerciale closed source di usare una libreria GPL.
Proprio per questo esiste anche una versione della GPL più "debole", la LGPL, che non richiede che software linkato al programma sia rilasciato con la stessa licenza. Questo tipo di licenza infatti viene di solito usata dalle librerie. Con questa licenza modifiche alla libreria devono essere rilasciate con la stessa licenza, ma applicazioni separate che usano la libreria non hanno questo vincolo.
Riferimenti: Testo originale delle licenza, Traduzione non ufficiale in italiano, FAQ
Riferimenti: Testo originale delle licenza, Traduzione non ufficiale in italiano, FAQ
Apache license
Per quanto riguarda l'uso di librerie sotto licenza apache da parte di applicazioni proprietarie l'unico vincolo è includere nella distribuzione due file: uno in cui si dà credito agli autori della libreria e l'altro con una copia della licenza stessa.
Riferimenti: Testo originale della licenza
BSD license
La licenza BSD è molto simile alla Apache License, di conseguenza è anch'essa estremamente permissiva. Tanto che il software con cui è nata la licenza, il sistema operativo Unix Berkeley Software Distribution (BSD), è stato incorporato da Apple in Darwin che è a tutti gli affetti un OS closed source.
La licenza consta di soli quattro punti che riporto testuali dalla traduzione italiana:
Di conseguenza le uniche accortezze per chi usa librerie con questa licenza sono contenute negli ultimi due punti: la necessita di citare gli sviluppatori originari ma senza che questo faccia intendere che questi ultimi promuovono il prodotto finale.
Riferimenti: Testo originale della licenza
La licenza consta di soli quattro punti che riporto testuali dalla traduzione italiana:
- Le ridistribuzioni del codice sorgente devono conservare la nota di copyright sopra riportata, questa lista di condizioni e la seguente limitazione di responsabilità.
- Le ridistribuzioni in forma binarie devono riprodurre la nota di copyright sopra riportata, questa lista di condizioni e la seguente limitazione di responsabilità nella documentazione e/o altri materiali forniti con la distribuzione.
- Ogni materiale pubblicitario che riporti caratteristiche o uso di questo software deve mostrare la seguente attestazione: Questo prodotto include software sviluppati dalla <organizzazione>.
- Né il nome della <organizzazione>, né i nomi dei suoi collaboratori possono essere utilizzati per avallare o promuovere prodotti derivati da questo software senza uno specifico permesso scritto.
Di conseguenza le uniche accortezze per chi usa librerie con questa licenza sono contenute negli ultimi due punti: la necessita di citare gli sviluppatori originari ma senza che questo faccia intendere che questi ultimi promuovono il prodotto finale.
Riferimenti: Testo originale della licenza
MIT license
La licenza MIT è stata creata dal Massachusetts Institute of Technology (MIT) ed è addirittura più permissiva della BSD. Chi licenzia software sotto MIT license deve solo includere il file di licenza, mentre chi lo usa a tutti gli effetti non ha nessun limite particolare. In pratica la licenza contiene solo una generica clausola di esclusione di responsabilità.
Riferimenti: Testo originale delle licenza
Riferimenti: Testo originale delle licenza
MPL
La licenza MPL (Mozilla Public License) è stata creata da Netscape Communications Corporation durante lo sviluppo del browser open source Mozilla. La licenza nasce come un ibrido tra le licenze molto permissive come MIT/BSD e più restrittive come GPL.
In pratica è permessa la modifica dei file sorgenti originali del prodotto solo a condizione che siano resi disponibili a chiunque abbia la versione binaria del codice con lo stesso tipo di licenza. È invece possibile aggiungere nuovi file al prodotto con licenze diverse e senza la necessità di ridistribuirli.
Riferimenti: Testo originale della licenza, FAQ
In pratica è permessa la modifica dei file sorgenti originali del prodotto solo a condizione che siano resi disponibili a chiunque abbia la versione binaria del codice con lo stesso tipo di licenza. È invece possibile aggiungere nuovi file al prodotto con licenze diverse e senza la necessità di ridistribuirli.
Riferimenti: Testo originale della licenza, FAQ