Existe-t-il une licence LGPL modifiée qui permet la liaison statique?


21

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.)


Vous ne pouvez pas lier dynamiquement des bibliothèques externes dans Haskell? Cela doit être sacrément gênant.
Robert Harvey

2
Si l'ensemble de votre projet est FOSS, cela peut ne pas être un problème. Dirigez-les vers les sources et laissez- les régler! :-)
Peter Rowell

2
Qu'est-ce qui distinguerait cette licence des licences non copyleft?

2
@delnan Il y a beaucoup d'autres choses dans LGPL qui sont souvent souhaitables. Par exemple, il requiert que toute modification soit (L) GPL, ou interdit la tivoisation .
Petr Pudlák

La licence wxWindows est à peu près aussi officielle que possible, étant donné qu'elle est approuvée par l'OSI .
Joachim Sauer

Réponses:



12

wxwidgets est autorisé sous essentiellement = LGPL + liaison statique

... essentiellement la L-GPL (Library General Public License), avec une exception stipulant que les œuvres dérivées sous forme binaire peuvent être distribuées selon les propres conditions de l'utilisateur. C'est une solution qui satisfait ceux qui souhaitent produire des logiciels sous GPL en utilisant wxWidgets, ainsi que ceux qui produisent des logiciels propriétaires.

wxWidgets est un logiciel Open Source Certifié Les participants à la discussion qui a conduit à cette décision incluent les gens d' Abisource , Robert Roebling, Julian Smart, Markus Fleck, Karsten Ballueder et quelques conseils de Richard Stallman. Richard a confirmé que la nouvelle licence est compatible avec les applications sous GPL. Cependant, il n'y a pas de restrictions importantes sur les applications propriétaires.

La licence wxWindows a été approuvée par l' Open Source Initiative , et vous pouvez trouver la licence sur leur site ici ...


0mq est également sous licence LGPL avec une exception de lien statique explicite.
Trevor Powell

4

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.


avez-vous un scénario réel dans lequel cela a été fait?
knocte

3

J'en ai trouvé un avec la licence Google: OpenScales

OpenScales est publié sous la version 3 de la licence publique moindre GNU (LGPL, disponible ici ), avec une exception liée à l'exception de liaison statique (voir ci-dessous) ...

En plus du texte de la licence LGPL, l'exception aux conditions LGPL s'applique à OpenScales:

En tant qu'exception spéciale à la licence GNU Lesser General Public License version 3, vous pouvez transmettre à un tiers un fichier exécutable à partir d'une œuvre combinée qui relie, statiquement ou dynamiquement, des parties de cette bibliothèque dans le fichier exécutable, véhiculant la source correspondante minimale mais sans avoir à transmettre le code d'application correspondant en vertu de la section 4d0 de la licence publique générale limitée GNU, tant que vous utilisez une version non modifiée distribuée publiquement de la bibliothèque. Cette exception n'invalide aucune autre raison pour laquelle le fichier exécutable peut être couvert par la licence publique générale limitée GNU ou la licence publique générale GNU.

Ce n'est pas standard cependant, et je ne sais pas s'il en existe un.


1

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.


Oui, c'est la meilleure solution. Mais dans certains cas, la liaison dynamique n'est pas possible. Certaines langues n'ont pas cette possibilité. Ou certaines plateformes n'ont pas cette possibilité.
Petr Pudlák

En fait, les éditeurs de liens font exactement cela, lorsque vous créez un lien dynamique vers la bibliothèque.
Calmarius
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.