Que signifie «GPL avec exception classpath» dans la pratique?

70

Oracle semble attribuer une licence à tout son code source ouvert lié à Java sous la licence GPL avec une exception de chemin d' accès aux classes . D'après ce que j'ai compris, cela semble permettre de combiner ces bibliothèques avec votre propre code dans des produits qui ne doivent pas nécessairement être couverts par la GPL.

  1. Comment cela marche-t-il?
  2. Quels sont des exemples de la façon dont je peux et ne peux pas utiliser ces classes?
  3. Pourquoi cette nouvelle licence a-t-elle été utilisée contrairement à la LGPL, qui semble permettre à peu près les mêmes choses, mais qui est mieux établie et comprise?
  4. Quelles sont les différences avec la LGPL?
Thilo
la source
1
J'ai trouvé ceci sur wikipedia: en.wikipedia.org/wiki/ qui clarifie un peu les choses, mais je ne comprends toujours pas pourquoi quelqu'un l'utiliserait sur LGPL. Bonne question!
1
Que les pages Wikipedia ne mentionnent pas des choses telles que "l'utilisateur doit pouvoir échanger la bibliothèque avec sa propre version", qui sont des dispositions de la LGPL. Alors peut-être que GPL + Exception n’exige pas cela?
Thilo
1
En lecture, cela semble être le cas: "LGPL formule davantage d'exigences à l'exception de lien: vous devez autoriser la modification des parties de la bibliothèque que vous utilisez et le reverse engineering (de votre programme et de la bibliothèque) pour déboguer de telles modifications"
Thilo
Dans ce cas, que ne suis-je pas autorisé à faire en vertu de cette licence? Je peux copier du code sous licence (choisir + choisir des classes) dans ma propre base de code (non modifiée, bien sûr)? Puis-je utiliser des outils de construction automatisés pour modifier le binaire résultant? Obfuscateurs, minimiseurs, décapants à code mort?
Thilo
Vous pouvez copier du code à partir de cela et l’utiliser dans votre propre code UNIQUEMENT si votre propre code est également publié sous la licence "GPL avec exception de chemin de classe" . Si votre code est propriétaire ou sous la plupart des licences open source telles que MIT, vous n'êtes pas autorisé à l'utiliser.
Abhi Beckert

Réponses:

69

Tout d'abord, je ne suis pas un avocat. Mais j'ai étudié de nombreuses licences et je comprends les problèmes qui les concernent.

Deuxièmement, je sais que c’est une vieille question, mais je pense que c’est toujours un point de confusion et d’inquiétude. Si ce n'est pas un sujet de préoccupation, cela devrait l'être. Le choix d'une licence est un gros problème que vous ne pouvez pas modifier de manière triviale, surtout si plusieurs contributeurs sont impliqués.

(L) GPL a été écrit avec C / C ++ à l’esprit, malheureusement. Il parle de "code source", "code objet", "liaison dynamique", "liaison statique", "compilateurs" et "interpréteur de code objet". Donc, traduire cela pour d'autres langages qui ne suivent pas les mêmes techniques de compilation (comme le bytecode de Java, la compilation juste-à-temps de Python ou la nature interprétée par Javascript) nécessite quelques devinettes et suppositions. Lorsque vous parlez de droit - par exemple en pensant à des procès ultérieurs où deux parties se disputent - ne pas avoir de distinction nette est un MAUVAIS OBJET.

Un morceau de code sous licence GPL standard est assez simple d’intention. Quiconque utilise ce code est censé publier son code à tous les utilisateurs lorsqu'ils le distribuent ou le vendent. C'est le virus sous GPL que Richard Stallman voulait créer et a fait clairement et proprement.

La LGPL était à l'origine une tentative d'autoriser une "bibliothèque" qui ne serait pas virale. Mais ils souhaitaient toujours que l’utilisateur final puisse remplacer la bibliothèque elle-même, d’où la distinction entre les liens «statiques» et «dynamiques»: l’utilisateur pouvait basculer vers une autre bibliothèque liée dynamiquement, de sorte qu’il n’aurait pas à le faire. être sous licence GPL. Et un lien statique exigeait que l'utilisateur soit sous licence GPL. La licence parle en réalité de "fichiers d'en-tête", qui sont clairs en C / C ++ mais qui ne sont évidemment pas clairs lorsque vous êtes dans les mondes Java, Python, Javascript, etc. Donc, la L ("bibliothèque") de documents LGPL est boueuse, au mieux.

Cela touche au cœur de la question. Tout ce qui manque de clarté est MAUVAIS dans le monde des lois. Si je cherche à construire quelque chose en utilisant les composants GPL ou LGPL, je veux être certain de mon statut juridique à l’avenir si je parviens devant un tribunal. Mais à ce jour, je n'en suis pas certain, car il n'y a pas vraiment eu de bonnes affaires judiciaires créant un précédent juridique, il n'y a que des arguments intellectuels sur des forums comme celui-ci.

Voici où l'exception Classpath est inestimable. Il est clairement indiqué que le code sous la licence est (L) GPL, mais tout utilisateur utilisant ce code peut suivre la licence de son choix. Pas de si, de et, ou de mais. Si vous modifiez le code principal (par exemple, en corrigeant des bugs), vous devez toujours publier ces modifications dans le cadre de la licence GPL. Mais l'utilisation ne vous infecte pas.

D'un point de vue commercial, je comprends pourquoi certains ne veulent pas toucher au code GPL avec un pôle de 10 '. La situation juridique n'est pas claire et l'entreprise risque d'être lancée dans une décennie quand un précédent juridique sera enfin créé. Ou bien ils pourraient être bloqués devant un tribunal pendant des années pour se battre pour établir un précédent juridique. Peu importe, ils ne veulent simplement pas risquer le coût de cette bataille. L'ajout de la clause d'exception Classpath élimine les problèmes juridiques et évite tout litige (grave) potentiel.

Donc, pour moi, l’exception Classpath est très différente de LGPL. C'est un moyen juridiquement propre de tracer une ligne claire permettant l'utilisation du code source ou des bibliothèques GPL ou LGPL sans utiliser la GPL.

Steve
la source
21
IANAL, mais je suis l’un des créateurs de l’exception Classpath, et c’est la bonne réponse. L'exception a été créée pour prendre en charge les cas d'utilisation intégrés compilés par AOT dans lesquels les développeurs lieraient statiquement des fichiers binaires (avec gcj dans notre cas). Nous avions besoin de quelque chose comme la licence libgcc, alors j'ai écrit la première version de l'exception Classpath basée sur cela. Il a depuis mûri, mais l’esprit est le même.
Anthony Green
6

La GPL avec exception classpath se comporte comme LGPL pour la plupart des utilisations.

Cela signifie que vous devez être en mesure d'expédier le code source de la bibliothèque à la demande. Cela ne signifie pas que vous devez être en mesure d'expédier votre propre source. Cela signifie que vous n'avez pas besoin de fournir un moyen de remplacer la bibliothèque si vous établissez un lien statique avec celle-ci, mais vous ne pouvez pas utiliser de clé publique pour empêcher le remplacement.

Josué
la source
-3

Il semble que les licences de style "GPL avec exception de chemin de classe" puissent être plus anciennes que LGPL.

Peut-être que la seule raison pour laquelle on l'utilise encore est que le code GPL ne peut pas être migré vers le code LGPL sans l'autorisation écrite de tous ceux qui ont déjà fourni du code.

Abhi Beckert
la source
7
La première version de la LGPL est sortie en 1991, donc antérieure à Java. en.wikipedia.org/wiki/LGPL
Thilo
Il est antérieur à Java, mais est-il antérieur à tout le code en Java? Peut-être que la première version de Java contenait du code provenant d'un projet plus ancien "GPL with classpath".