LGPL l' exige si un programme utilise la bibliothèque éditée par LGPL, les utilisateurs doivent être capables de reconnecter le programme avec une version différente de la bibliothèque:
...
d) Effectuez l'une des actions suivantes:
0) Transmettre la source minimale correspondante selon les termes de cette licence et le code d'application correspondant sous une forme adaptée à, et selon des conditions qui permettent à l'utilisateur de recombiner ou de relier l'application avec une version modifiée de la version liée pour produire un Travail combiné modifié, de la manière spécifiée par la section 6 de la GNU GPL pour le transport de la source correspondante.
1) Utilisez un mécanisme de bibliothèque partagée approprié pour établir un lien avec la bibliothèque. Un mécanisme approprié est celui qui (a) utilise au moment de l'exécution une copie de la bibliothèque déjà présente sur le système informatique de l'utilisateur, et (b) fonctionnera correctement avec une version modifiée de la bibliothèque qui est compatible avec l'interface avec la version liée.
...
Cependant, dans certains cas, cela peut poser des difficultés considérables. En particulier, les programmes Haskell sont presque toujours compilés statiquement. De plus, le compilateur fait des optimisations inter-modules, il n'est donc pas possible de retirer une partie du code et de le remplacer par une autre. Il est donc très difficile de satisfaire à cette condition. (Voir ce lien sur le wiki de Haskell.)
La liaison dynamique serait une solution, mais dans de nombreux cas, ce n'est pas possible. Par exemple:
- Certaines plates-formes peuvent ne pas avoir de lien dynamique du tout.
- Certaines langues n'ont pas la possibilité de liens dynamiques. Ou, il n'est pas possible de faire des modules multi-plateformes.
- Dans certains cas, la liaison dynamique empêcherait des optimisations importantes. Alors que je dirais que c'est rarement un problème grave, dans des langues comme Haskell, la perte de performances pourrait être considérable.
Par conséquent, je recherche une licence standard de type LGPL qui ne nécessiterait pas la possibilité de se reconnecter (et je comprends que cela supprime un peu de liberté accordée aux utilisateurs). Certains projets utilisent leur propre modification de LGPL, par exemple wxWidgets . Mais je préfère utiliser une licence standard qui est un peu plus officielle, peut-être vérifiée par certains experts juridiques, et compatible (L) GPL. Y en a-t-il comme ça?
(Je serais également intéressé de savoir s'il y a des conséquences imprévues d'une telle modification de la LGPL.)
la source
Réponses:
Je suis surpris que personne n'ait mentionné la licence publique de Mozilla. Il est similaire à la LGPL, sauf qu'il permet une liaison statique. MPL version 2 est compatible avec la GPL / LGPL.
Mozilla Public License (MPL 2.0) vs Lesser GNU General Public License (LGPL 3.0)
la source
wxwidgets est autorisé sous essentiellement = LGPL + liaison statique
la source
IANAL, mais j'ai été amené à croire qu'une solution consiste à fournir des fichiers objets pour les pièces non LGPL. De cette façon, l'utilisateur peut relier le programme et est donc libre de changer la partie LGPL, répondant aux exigences de LGPL.
En d'autres termes, vous devez avoir un package source, avec des sources LGPL et des fichiers objets compilés de code non-LGPL. Évidemment, vous devez ensuite fournir des fichiers objets pour chaque architecture différente pour laquelle vous publiez les binaires, mais je ne pense pas que ce soit vraiment un problème.
Du point de vue du développement, le plus simple pourrait être de faire en sorte que le système de construction construise également le paquet source en même temps, lors de la construction du binaire pour la distribution.
la source
J'en ai trouvé un avec la licence Google: OpenScales
Ce n'est pas standard cependant, et je ne sais pas s'il en existe un.
la source
Comment continueriez-vous à garantir la liberté des utilisateurs? Je crois que la "bonne" réponse est de lier statiquement un shim qui charge dynamiquement la bibliothèque.
la source