Mi "aggancio" al post di puzuma.
ZeroUno ha scritto:Il pubblicare il progetto "così com'è" più che permesso lo vedrei "incoraggiato"
visto che si tratta di uno slackware packages finder e quindi di pubblica utilità, anzi, se lo fanno su un server decente potrebbero dirmelo così chiudo il mio
.
A parte gli scherzi, dovrebbe essere possibile riutilizzare il codice, intero, in parte o modificato senza mio esplicito consenso cioè, se stai facendo un progetto e ti piace una mia determinata classe (anche se la vedo dura) la puoi usare tranquillamente senza dovermi contattare.
Non mi piacerebbe però trovare un file prelevato così com'è da github e trovarci l'etichetta "copyright <nome dell'autore del nuovo progetto>" e magari poi mi ci chiede pure i diritti (come si fa a stabilire chi dei due ha copiato?). Insomma.. io ci ho perso tempo per farlo; se un altro vuole fare una cosa analoga sfrutti il suo tempo per il resto del progetto e usi la mia parte per la parte che gli serviva (perchè inventare due volte l'acqua calda), ma non si prenda il merito di averci sudato lui su quel codice.
Come ha detto puzuma, il copyright è inalienabile. Anche se usassi la licenza BSD e qualcuno ne ricavasse una versione proprietaria, non potrebbe comunque eliminare il copyright su ciò che hai scritto tu.
Se ti prendi tutto il progetto e lo usi così com'è e ci cominci a fare modifiche, apponi la tua firma sulle modifiche come riconoscenza di paternità, ma lasciaci scritto la roba che stai modificando è farina del mio sacco.
A questo punto credo che la licenza BSD sia la più indicata.
La GPL è ottima, ma nel tuo caso è IMHO sprecata, in quanto se da un lato garantirebbe un futuro sicuramente aperto al tuo codice, ne minerebbe l'interoperabilità con delle modifiche non-GPL.
Se vuoi avere un po' più di controllo (in stile LGPL), ma non vuoi perdere l'interoperabilità, IMHO ci sarebbe da considerare anche la CDDL, che è un buon compromesso.
Inoltre, e soprattutto, c'è la possibilità che questo progetto diventi collaborativo (questo è un clone:
https://github.com/Yousha/slakfinder).
Se il collaboratore mi introduce modifiche al codice, farina del suo sacco, glielo voglio riconoscere (certo, se mi si mette a cambiare le virgole o la
formattazione no) e non appropriarmene.
IMHO allora la CDDL e la BSD sono le scelte migliori, poichè permetterebbero una maggore flessibilità in termini di mix di codice sotto differente licenza.
GPL 1/2/3 ?
Sostanzialmente la differenza tra GPL v2 e GPL v3 (la v1 lasciala perdere...ormai quasi tutti i progetti GPL sono v2 o superiori) consiste nel non permettere operazioni come la tivoization (ovvero, creare del codice GPL che funzioni su una macchina proprietaria SOLO nel caso in cui non venga modificato.
TiVO, infatti, produce un driver libero che funziona a dovere sulle sue macchine. Tuttavia, se tu lo modifichi, la macchina non riconoscerà più il driver e di conseguenza non potrai usufruire delle modifiche fatte. In sostanza, è un raggiro LEGALE alla GPL v2).
BSD: Ci sono diversi tipi di licenza BSD. Comunque la filosofia base è quella di permetterti di prendere il codice e di poterlo riutilizzare in qualunque maniera tu voglia (closed source e non). L'unica cosa da rispettare, ovviamente, è il copyright.
CDDL: Permette di creare codice che obblighi a rilasciare le modifiche sotto tale licenza (in stile GPL), ma non lo rende virale nei confronti di opere derivate (in stile BSD).
Ovvero, se tu crei un programma che sfrutta una libreria, non sei obbligato a rilasciare tale programma sotto CDDL, in quanto non è parte della libreria.
Diversamente, se tu modifichi la libreria, sei obbligato a rilasciare la modifica sotto CDDL. È molto simile alla LGPL (e questo è una delle cause della diversità di pensiero sulla mancata integrazione di ZFS su Linux), tuttavia ha un copyleft molto più debole poichè permette anche mix di codice sotto differente licenza (ovvero, puoi creare un modulo sotto licenza BSD ed integrarlo nel tuo sorgente CDDL, senza che queste vadano in conflitto. Con la LGPL non puoi, in quanto il codice mixato deve essere obbligatoriamente (L)GPL-compatibile).