La réponse de DougM et AER fait valoir un argument valable. MPLv2 et LGPLv3 avec exception statique sont les mêmes en ce qui concerne les événements qui déclencheraient le copyleft. Cependant, je pense qu'il nous manque une autre différence très importante entre LGPL et MPL. Lorsque le copyleft est déclenché, le copyleft s'applique à:
- pour MPL: aux mêmes fichiers très exacts de votre bibliothèque d'origine
- pour LGPL: au "travail basé sur la bibliothèque" par opposition au "travail qui utilise la bibliothèque". La LGPL peut donc potentiellement étendre son copyleft à de nouveaux fichiers.
Edge-case: L'utilisation de MPL permet aux utilisateurs de ne pas partager leurs améliorations
MPL est une licence de copyleft au niveau fichier. Cela signifie que si quelqu'un l'intègre dans un projet plus grand (de manière statique ou dynamique) et apporte une modification à votre fichier, il n'a qu'à libérer la modification apportée à ce fichier particulier.
Si vous souhaitez conserver l'intégrité de votre base de code ouverte, il existe des cas extrêmes dans lesquels cet effet copyleft de MPL peut ne pas être suffisant.
Par exemple, quelqu'un pourrait prendre l'un des fichiers principaux de votre projet, ajouter "importer my_private_new_file" et modifier votre méthode principale par exemple en ajoutant "my_private_new_file.newAwesomeFeature.run ()" .
Et de cette façon, il pourrait ajouter de nouvelles fonctionnalités à votre projet tout en ne libérant que le fichier principal modifié et en conservant la logique réelle de la nouvelle fonctionnalité fermée dans "my_private_new_file" .
Le fait de renvoyer le fichier principal à la communauté vous donne simplement l'information que "vous avez ajouté une nouvelle fonctionnalité" mais cela ne vous permet pas d'incorporer cette nouvelle fonctionnalité à l'air libre ... Cela peut être ennuyeux si la nouvelle fonctionnalité est étroitement -lié au problème que votre bibliothèque essaie de résoudre.
Évidemment, c'est un cas de bord et il est peu probable que quelqu'un veuille le faire, mais c'est un risque que vous devez savoir lorsque vous utilisez le MPLv2.
La LGPL est écrite pour interdire de tels comportements. Voir:
Je cite la licence LGPL originale:
Portez une attention particulière à la différence entre un «travail basé sur la bibliothèque» et un «travail utilisant la bibliothèque». Le premier contient du code dérivé de la bibliothèque, tandis que le second doit être combiné avec la bibliothèque pour fonctionner.
Le copyleft s'applique uniquement au "travail basé sur la bibliothèque". Qu'est-ce qu'un "travail basé sur la bibliothèque" en pratique? Elle laisse place à l'interprétation. Ce qui n'est pas seulement une bonne chose car cela signifie que se conformer à votre licence devient plus compliqué et donc effrayant. Cela pourrait conduire certaines personnes à ne pas utiliser votre bibliothèque.
En ce sens, LGPL est plus restrictive que MPL, mais aussi plus protectrice de l'intégrité du projet.
MPL permet aux utilisateurs du monde propriétaire de réparer et d'utiliser plus facilement votre bibliothèque, tout en devant partager le correctif
Un avantage pour MPL est que si un utilisateur trouve un bogue dans votre bibliothèque, il peut le corriger directement dans le fichier, sans avoir à donner tout son code mais seulement à le corriger. En pratique, lors de la distribution de son travail à un client, il peut simplement fournir un lien vers un fork de votre projet contenant le correctif, et il est bon.
En utilisant LGPL, les choses sont plus compliquées. Si quelqu'un bifurque votre projet, corrige un bogue et l'intègre statiquement dans son logiciel propriétaire, il doit distribuer à ses utilisateurs le "travail basé sur la bibliothèque" sous la LGPL. Ce qui est une notion assez obscure, surtout lorsque la bibliothèque est intégrée statiquement ... À cet égard, je pense que c'était la raison d'origine pour laquelle il n'y a pas d'exception "statique" dans la LGPL d'origine. Cela rend l'identification du "travail basé sur la bibliothèque" triviale: c'est la bibliothèque dynamique que vous appelez dans votre logiciel propriétaire.
Par conséquent, MPL permet aux fournisseurs propriétaires d'utiliser plus facilement ET d'envoyer des correctifs à votre bibliothèque que LGPL.
Dans le même temps, la plupart du temps, les fournisseurs propriétaires n'ont ni les ressources ni le temps de plonger dans votre bibliothèque compliquée, et ne le répareraient probablement pas d'eux-mêmes. Ils préfèrent ouvrir un problème sur votre dépôt GitHub, ou envoyer un e-mail dans la liste de diffusion et attendre votre correctif.
À cet égard, LGPL applique davantage ce type de comportement. Mais l'application est-elle vraiment nécessaire?
Conclusion
Choisir entre LGPL et MPL est une question délicate et, comme d'habitude avec une licence logicielle, dépend de votre objectif. Les deux licences sont très similaires mais en même temps extrêmement différentes. Ils ont été conçus pour des objectifs et une philosophie très différents.
LGPL a été créé par la Free Software Foundation pour permettre l'utilisation généralisée des bibliothèques de logiciels libres dans le monde propriétaire mais avec toujours en tête l'idée de promouvoir les logiciels libres et de lutter contre les logiciels propriétaires. Tout cela fait partie d'une stratégie envers leur idéologie. Voir:
https://www.gnu.org/licenses/why-not-lgpl.html
MPL est une licence pratique conçue par Mozilla pour appliquer une sorte de partage à la bibliothèque d'origine, tout en encourageant les gens à créer des logiciels et des modules complémentaires propriétaires (y compris Mozilla lui-même), ce qui est une pratique autorisée par la FSF via LGPL mais considère toujours dangereux.
Par essence, MPLv2 est considéré par beaucoup comme une licence permissive, tandis que LGPLv3 y compris avec exception statique est rarement appelé de cette façon.
MODIFIER
J'ai oublié de mentionner quelque chose d'important. LGPLv3 (avec ou sans exception statique) interdit la tivoisation . Vous pensez peut-être que c'est un «détail», mais ce n'est pas le cas, selon votre objectif. Vous vous souciez de la liberté des utilisateurs? Ce n'est donc pas un détail. Vous souciez-vous que votre bibliothèque puisse être utilisée sur l'appareil d'Apple? VLC se soucie plus d'être utilisé, ils ont donc décidé d'utiliser LGPLv2 qui ne contient pas une telle restriction. De même, c'est l'une des raisons pour lesquelles Linux continue d'utiliser la GPLv2 . MPLv2 n'a pas non plus de restriction de tiviation, car il s'agit évidemment d'une licence créée avec la philosophie Open Source plus "pratique" à l'esprit, pas l'idéologie FSF.
Il pourrait y avoir d'autres choses "mineures" comme celle-ci que j'ai ratées.