Dalle domande frequenti sulla GPL (ma il consiglio è applicabile a tutte le licenze):
Why does the GPL require including a copy of the GPL with every copy of the program?
Including a copy of the license with the work is vital so that everyone who gets a copy of the program can know what his rights are.
It might be tempting to include a URL that refers to the license, instead of the license itself. But you cannot be sure that the URL will still be valid, five years or ten years from now. Twenty years from now, URLs as we know them today may no longer exist.
The only way to make sure that people who have copies of the program will continue to be able to see the license, despite all the changes that will happen in the network, is to include a copy of the license in the program.
(sottolineatura mia)
Nel momento in cui il sito che ospita la licenza scende o modifica i percorsi degli URL, le persone che dispongono di copie del software non possono più verificare quali diritti possono esercitare in modo sicuro. Supponiamo anche che tu possa in qualche modo garantire che quell'URL esatto sarà online per sempre: la possibilità per gli utenti di verificare che il loro uso del software sia legale dipende comunque dalla capacità di connettersi a quel particolare URL. Anche se questo requisito potrebbe non essere oneroso nella tua particolare città / paese / pianeta, potrebbe essere oneroso altrove. Non dovresti imporre questo requisito, specialmente quando la soluzione alternativa (incluso il testo completo della licenza) è banale.
Potresti rispondere a questo reclamo dicendo: "Quindi, se l'URL non funziona o non è accessibile, un descrittore non ambiguo come" GNU GPL v3 "dovrebbe essere sufficiente: le copie full-text della GPL sono abbondanti; può cercare la licenza da soli. " Mi vengono subito in mente alcuni problemi:
-
Questo non generalizza agli identificatori di licenza che sono meno chiari (viene in mente la frase "licenza BSD").
-
Questo non è generalizzato alle licenze che sono meno comuni o sono state personalizzate (viene in mente "GPL con eccezioni di collegamento": quali eccezioni di collegamento?). Quanto deve essere normale una licenza prima che sia ragionevole aspettarsi che un utente la trovi in modo affidabile per nome?
-
Questo richiede ancora agli utenti di avere una connessione a Internet, che potrebbe non essere il caso, anche se avevano una connessione al momento in cui hanno ricevuto il software. (E potrebbero non aver avuto accesso a Internet quando hanno ottenuto il software: "l'era dei CD" non è ancora finita in molte parti del mondo.Per un ulteriore caso, considera le popolazioni nazionali che hanno un accesso diffuso a Internet ma censurano grandi parti di esso .) Una conseguenza del software liberamente ridistribuibile è che un destinatario potrebbe non ricevere una copia del software direttamente da te o attraverso un canale di distribuzione che avevi inizialmente previsto.
Un ultimo argomento contro i collegamenti delle licenze è indicato nel commento di MichaelT seguente: potrebbe consentire di modificare la licenza in modo dinamico e retroattivo. Questo potrebbe essere fatto intenzionalmente, ma potrebbe anche essere fatto per caso, se si è cambiata la licenza tra le versioni del software, ma si è utilizzato lo stesso link di licenza per entrambe le versioni, con conseguente scomposizione della vecchia licenza. Tale passaggio aggiungerebbe difficoltà per le persone che hanno bisogno di dimostrare di aver ottenuto la loro copia precedente con una licenza diversa dalla versione corrente.
Allora, perché devo mantenere la licenza nella root del progetto?
Non sono un avvocato, ma non ho mai visto argomenti convincenti che tu faccia abbia bisogno di mantenere le licenze nella radice del progetto. Anche la GPL, che specifica che la licenza deve accompagnare ogni copia dell'opera, tace su come deve accompagnare il lavoro. (Ciò potrebbe essere dovuto al fatto che la GPL potrebbe essere applicata in contesti non software, in cui la nozione di "root directory" non è significativa.)
Mantenere la licenza nella directory root è probabilmente una buona idea perché massimizza la probabilità che l'utente la vedrà, e quindi minimizza sia la frustrazione dell'utente sia la probabilità di reclami contro di te per aver cercato di nasconderlo la licenza in qualche directory oscura. Se disponi di molte licenze, potrebbe essere più sensato collocarle tutte nella propria cartella e includere un evidente README di progetto che contiene percorsi di file per trovare la licenza per ciascun componente.
L'inserimento della licenza nella directory root è una pratica utile anche perché può disambiguare le licenze dei moduli che sono concessi in licenza in modo diverso rispetto al lavoro nel suo insieme. Supponiamo che il mio progetto FooProj utilizzi il modulo autonomo BarMod. FooProj potrebbe avere una licenza GPL, mentre il modulo standalone potrebbe essere autorizzato dal MIT. Quando apro per la prima volta FooProj, vedo una copia della GPL nella root e capisco che il lavoro nel suo complesso è concesso in licenza GPL. Quando scendo nella cartella di BarMod, vedo un nuovo file di licenza lì, e capisco che il contenuto di questa cartella è concesso in licenza MIT. Naturalmente, questo è solo un aiuto utile; dovresti sempre indicare esplicitamente la licenza dei tuoi moduli in un file README, NOTICE o simile.
In breve, usare la radice del file è una questione di convenienza e chiarezza. Non ho visto alcun testo di licenza open source legalmente vincolante che lo richieda, né so di alcun motivo per cui sarebbe richiesto per legge. La tua licenza dovrebbe essere ragionevolmente facile da scoprire per il destinatario; includere la licenza nella radice del progetto è sufficiente, ma non necessario, per soddisfare questo criterio.