Presque toutes les licences de logiciels open source exigent (ou du moins les avocats suggèrent généralement qu'elles exigent) que les utilisateurs incluent la licence complète à la racine du projet qu'ils protègent.
Un avocat à qui j'ai parlé suggère qu'il s'agit d'un héritage de l'ère du CD, où il était nécessaire qu'une licence complète soit incluse dans un écrin.
Mais aujourd'hui, nous vivons à l'ère du cloud. Pourquoi ne puis-je pas, par exemple, simplement héberger la licence complète sur mon site Web et inclure le titre + l'URL de cette licence dans l'en-tête de mes fichiers source?
Bonus: s'il est généralement admis que les licences établies doivent être conservées intactes à la racine, pourquoi l'OSI de la FSF n'a-t-il pas approuvé une licence à laquelle vous pouvez vous référer par URL, et qu'est-ce qui empêche quelqu'un de créer cette licence?
la source
Réponses:
De la FAQ GPL (mais les conseils s'appliquent à toutes les licences):
(c'est moi qui souligne)
Au moment où le site qui vous héberge tombe en panne ou modifie ses chemins URL, les personnes qui ont des copies de votre logiciel ne peuvent plus vérifier quels droits ils peuvent exercer en toute sécurité. Supposons même que vous puissiez en quelque sorte garantir que cette URL exacte sera toujours en ligne: la possibilité pour les utilisateurs de vérifier que leur utilisation de votre logiciel est légale dépend toujours de la capacité de se connecter à cette URL particulière. Bien que cette exigence puisse ne pas être onéreuse dans votre ville / pays / planète particulière, elle peut l'être aussi ailleurs. Vous ne devez pas imposer cette exigence, en particulier lorsque la solution de contournement (y compris le texte complet de la licence) est triviale.
Vous pouvez répondre à cette plainte en disant: "Et alors? Si l'URL descend ou n'est pas accessible, un descripteur sans ambiguïté comme 'GNU GPL v3' devrait suffire. Les copies en texte intégral de la GPL sont nombreuses; les utilisateurs peuvent rechercher la licence eux-mêmes. " Quelques problèmes viennent immédiatement à l'esprit:
Cela ne se généralise pas aux identifiants de licence qui sont moins clairs (l'expression "licence BSD" me vient à l'esprit).
Cela ne se généralise pas bien aux licences qui sont moins courantes ou qui ont été personnalisées ("GPL avec exceptions de liaison" vient à l'esprit: quelles exceptions de liaison?). Dans quelle mesure une licence doit-elle être courante avant qu'il soit raisonnable de s'attendre à ce qu'un utilisateur la trouve de manière fiable par son nom?
Cela nécessite toujours que les utilisateurs disposent d'une connexion Internet, ce qui peut ne pas être le cas, même s'ils avaient une connexion au moment où ils ont obtenu le logiciel. (Et ils n'avaient peut-être pas accès à Internet lorsqu'ils ont obtenu le logiciel: "l'ère du CD" n'est pas encore terminée dans de nombreuses régions du monde. Comme cas supplémentaire, considérons les populations nationales qui ont un accès Internet étendu mais en censurent une grande partie .) Une conséquence d'un logiciel librement redistribuable est qu'un destinataire peut ne pas recevoir une copie de votre logiciel directement de vous ou par le biais d'un canal de distribution que vous aviez prévu à l'origine.
Un dernier argument contre les liens de licence est noté par le commentaire de MichaelT ci-dessous: il pourrait vous permettre de modifier dynamiquement et rétroactivement la licence. Cela pourrait être fait intentionnellement, mais cela pourrait également être fait par accident, si vous modifiez la licence entre les versions du logiciel, mais que vous utilisez le même lien de licence pour les deux versions, détruisant ainsi votre ancienne licence. Un tel changement ajouterait de la difficulté aux personnes qui doivent prouver qu'elles ont obtenu leur ancienne copie sous une licence différente de la version actuelle.
Alors pourquoi dois-je conserver la licence à la racine du projet?
Je ne suis pas avocat, mais je ne l' ai jamais vu aucun argument convaincant que vous avez besoin de garder des licences dans la racine du projet. Même la GPL, qui précise que la licence doit accompagner chaque copie de l'œuvre, ne dit pas comment elle doit accompagner l'œuvre. (Cela peut être dû au fait que la GPL pourrait être appliquée dans des contextes non logiciels, où la notion de "répertoire racine" n'a pas de sens.)
Garder la licence dans le répertoire racine est probablement une bonne idée car elle maximise la probabilité que l'utilisateur la voie, et minimise ainsi à la fois la frustration de l'utilisateur et la probabilité de plaintes contre vous pour avoir tenté de cacher la licence dans un répertoire obscur. Si vous avez plusieurs licences, il peut être plus judicieux de les placer toutes dans leur propre dossier et d'inclure un fichier README de projet évident qui contient des chemins de fichier pour trouver la licence pour chaque composant.
Placer votre licence dans la racine du répertoire est également une pratique utile car cela peut lever l'ambiguïté des licences des modules dont la licence est différente de celle du travail dans son ensemble. Supposons que mon projet FooProj utilise le module autonome BarMod. FooProj peut être sous licence GPL, tandis que le module autonome peut être sous licence MIT. Lorsque j'ouvre FooProj pour la première fois, je vois une copie de la GPL à la racine et je comprends que le travail dans son ensemble est sous licence GPL. Lorsque je descends dans le dossier de BarMod, j'y vois un nouveau fichier de licence et je comprends que le contenu de ce dossier est sous licence MIT. Bien sûr, ce n'est qu'une aide utile; vous devez toujours indiquer la licence de vos modules de manière explicite dans un fichier README, NOTICE ou similaire.
En résumé, l'utilisation de la racine du fichier est une question de commodité et de clarté. Je n'ai vu aucun texte de licence open source juridiquement contraignant qui l'exige, et je ne connais aucune raison pour laquelle il serait légalement requis. Votre licence doit être raisonnablement facile à découvrir pour le destinataire; l'inclusion de la licence dans la racine du projet est suffisante, mais pas nécessaire, pour satisfaire ce critère.
la source
Il existe des licences qui le permettent. Apache 2.0, par exemple. Apache 2.0 nécessite uniquement que chaque fichier source contienne un petit en-tête qui pointe vers l'URL canonique de la licence Apache 2.0. Il n'est pas nécessaire de reproduire la licence complète dans l'arborescence source.
Depuis la licence Apache 2.0 elle-même:
la source
4.(a) You must give any other recipients of the Work or Derivative Works a copy of this License;
Il n'est pas nécessaire qu'il soit à la racine du projet. C'est simplement l'endroit le plus commun, et donc le premier endroit où les gens vont chercher pour trouver la licence. D'ailleurs, même si ce n'était pas courant, c'est probablement le premier endroit où les gens regarderont. Puisque la licence existe pour informer, cacher les informations n'a pas beaucoup de sens.
Si vous le cachez derrière une URL, il n'y a aucune garantie absolue que cette URL sera toujours disponible. S'il s'agit d'un fichier à la racine du projet, par définition, il sera toujours disponible.
En bref, c'est l'endroit le plus efficace et le plus convivial pour le mettre.
la source