Comment la règle de liaison statique vs dynamique GPL s'applique-t-elle aux langues interprétées?

19

À ma connaissance, la GPL interdit la liaison statique du code non GPL au code GPL, mais autorise la liaison dynamique du code non GPL au code GPL. Alors, quel est-il lorsque le code en question n'est pas lié du tout parce que le code est écrit dans un langage interprété (par exemple Perl)?

Il semblerait trop facile d'exploiter la règle si elle était considérée comme une liaison dynamique, mais d'un autre côté, il semblerait également impossible de référencer légalement le code GPL à partir d'un code non GPL s'il était considéré comme statique! Les langages compilés ont au moins une distinction entre la liaison statique et la liaison dynamique, mais lorsque toute la "liaison" ne fait qu'exécuter des scripts, il est impossible de dire quelle est l'intention sans une licence explicite!

Ou ma compréhension de ce problème est-elle incorrecte, ce qui rend la question théorique? J'ai également entendu parler d'une "exception de chemin de classe" qui implique une liaison dynamique; cela ne fait-il pas partie de la GPL mais plutôt quelque chose qui peut y être ajouté, donc la liaison dynamique n'est autorisée que lorsque la licence inclut cette exception?

ekolis
la source
2
@delnan lgpl! = gpl
Johann
softwareengineering.stackexchange.com/questions/87446/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Réponses:

16

Quant à la question spécifique concernant les langues interprétées, la FAQ GPL est très claire :

Le programme interprété, pour l'interprète, n'est que des données; une licence de logiciel libre comme la GPL, basée sur le droit d'auteur, ne peut pas limiter les données sur lesquelles vous utilisez l'interpréteur. Vous pouvez l'exécuter sur toutes les données (programme interprété), comme vous le souhaitez, et il n'y a aucune exigence quant à la licence de ces données pour quiconque.

Quant à la question générique sur la liaison dynamique vs statique. Tout d'abord, la FSF et Stallman estiment que peu importe que la liaison soit statique ou dynamique, la GPL infecte dans les deux cas. De la FAQ FSF GPL:

Si le programme relie dynamiquement les plug-ins , qu'ils s'appellent entre eux et partagent des structures de données, nous pensons qu'ils forment un seul programme, qui doit être traité comme une extension à la fois du programme principal et des plug-ins. Cela signifie que la combinaison du plug-in couvert par la GPL avec le programme principal non libre violerait la GPL.

et

Lier statiquement ou dynamiquement [nom de votre programme] à d'autres modules fait un travail combiné basé sur [nom de votre programme]. Ainsi, les termes et conditions de la licence publique générale GNU couvrent l'ensemble de la combinaison

Cependant, cela est discutable du point de vue juridique. Dans le seul cas qui a été porté devant les tribunaux concernant les liens dynamiques - Galoob c. Nintendo - la Cour d'appel a statué que l'œuvre dérivée "doit incorporer une partie de l'œuvre protégée par le droit d'auteur sous une forme ou une autre" . Ce qui n'est pas le cas avec la liaison dynamique.

Quoi qu'il en soit, que la liaison dynamique infecte ou non, il y a du travail. Il est utilisé par exemple par Nvidia pour fournir des pilotes binaires pour Linux. Vous créez un wrapper (L) GPL, mais en tant qu'auteur, vous êtes autorisé à ajouter une exception spéciale pour le lien avec une source fermée spécifique. Vide FSF GPL FAQ .

vartec
la source
L'une des natures d'une œuvre dérivée est qu'il n'est pas possible de séparer proprement l'œuvre originale du titulaire du droit d'auteur. Si Bob's Foo()est statiquement lié à l'appel de Joe's Bar(), à quel titulaire du droit d'auteur doit- CALLon attribuer l' instruction entre eux? Une telle interaction serait suffisante pour constituer une "œuvre dérivée". Si, cependant, le travail de Joe reste entièrement dans un fichier et celui de Bob reste entièrement dans un autre, la simple apparition de ces fichiers dans différents répertoires sur le même disque constitue une agrégation, pas une dérivation.
supercat
2
@thepaul: il existe déjà un précédent juridique qui stipule qu'au moins une partie d'une œuvre protégée par le droit d'auteur doit être incluse dans une œuvre pour constituer une œuvre dérivée. Les croyances de Stallman ont souvent très peu de fondement dans le droit réel réel.
vartec
1
@thepaul: d'un côté, vous avez une pratique juridique utilisée par une entreprise de 9 milliards de dollars, sur d'autres revendications d'un gars qui aime porter un chapeau en papier d'aluminium. Vous prétendez que ce dernier est plus fiable et vous avez tout à fait le droit de le croire.
vartec
1
Vous citez la mauvaise partie de la FAQ GPL qui est très claire . La partie que vous citez concerne Si un interpréteur de langage de programmation est publié sous GPL, cela signifie-t-il que les programmes écrits pour être interprétés par lui doivent être sous des licences compatibles GPL? ! D'où l' interprète [sous licence GPL] . La partie pertinente est les 2 derniers paragraphes: [...] Un autre cas similaire et très courant est de fournir aux bibliothèques l'interprète qui est lui-même interprété. Par exemple, Perl est livré avec de nombreux modules Perl [...]
Chris Wesseling
1
«Le programme interprété, pour l'interprète, n'est que des données; une licence de logiciel libre comme la GPL, basée sur le droit d'auteur, ne peut pas limiter les données sur lesquelles vous utilisez l'interpréteur. Vous pouvez l'exécuter sur n'importe quelle donnée (programme interprété), comme vous le souhaitez, et il n'y a aucune exigence concernant l'octroi de licence à quiconque. »Il s'agit d'exécuter des programmes dans n'importe quelle licence même d'un interpréteur GPL, n'est-ce pas? Ce qui ne couvre pas le sujet de l'utilisation d'un plugin non libre dans un programme GPL dans un langage interprété.
tuxayo
4

Remarque: il s'agit d'une question juridique. Programmers.SE n'est pas un forum juridique, c'est un forum de programmation. Bien que les gens ici connaissent un peu la programmation, ils ne connaissent rien à la loi. Si vous voulez poser une question juridique, vous devriez le demander dans un forum juridique, où il y a des gens qui savent réellement quelque chose sur le sujet.


La GPL ne dit rien sur la liaison statique ou dynamique. Il ne dit même pas quoi que ce soit sur la liaison du tout . Chaque avocat ou juge à qui j'ai parlé dit que la question des liens statiques et dynamiques est complètement hors de propos.

Le droit d'auteur concerne la créativité. La liaison statique vs dynamique est un détail d'implémentation technique. Que quelque chose soit lié statiquement ou dynamiquement ou non n'est pas un acte créatif, il ne peut en aucun cas changer le statut de copyright d'une œuvre.

Dans votre question, vous parlez de «langues interprétées». Mais ce terme n'a pas de sens: il n'y a pas de langage interprété. Un langage est un ensemble abstrait de règles et de restrictions mathématiques. Un langage n'est ni interprété ni compilé. Une langue est juste . Le terme «langage interprété» n'est pas seulement faux , il n'est pas sensible . Si l'anglais était une langue tapée, ce serait une erreur de frappe.

L'interprétation et la compilation sont des traits de l'interprète ou du compilateur (duh!), Pas la langue. Chaque langue peut être implémentée avec un interpréteur, et chaque langue peut être implémentée avec un compilateur. La plupart des langues ont les deux. La plupart des implémentations de langage modernes combinent même les deux dans un seul moteur d'exécution.

L'implémentation Rubinius Ruby, par exemple, contient un compilateur statique à l'avance qui compile le code Ruby en code octet Rubinius, un interpréteur qui interprète le code octet Rubinius et un compilateur dynamique juste à temps qui compile le code octet Rubinius en LLVM IR, que l'infrastructure LLVM compile à son tour en code machine natif. L'implémentation MacRuby Ruby ne contient aucun interprète, elle compile le code Ruby directement en LLVM IR, puis en code machine natif.

D'un autre côté, il existe des interprètes pour C ou C ++.

Tout cela n'est que des détails techniques. Cela n'a aucun rapport avec le droit d'auteur.

Cela n'a tout simplement pas de sens que le fait que quelqu'un viole ou non le droit d'auteur de quelqu'un d'autre dépend de la décision ou non d'une tierce personne d'exécuter le programme avec un interprète ou de le compiler en premier.

La question est de savoir si une œuvre dérive d'une autre œuvre ou non. Il peut être lié dynamiquement et toujours dérivé, et il peut être lié statiquement et pas dérivé du tout.

Jörg W Mittag
la source
Qu'en est-il des langages interprétés de "code intermédiaire"? L'un des principes de la GPL est que quiconque devrait pouvoir adapter le programme à n'importe quelle machine raisonnable disposant des mêmes outils de langage que l'original. Si quelqu'un publie du code source pour un interpréteur de code intermédiaire, ainsi qu'un tas de code de forme intermédiaire qu'il peut exécuter, quelles seraient les règles de publication des informations liées à cet objet blob de code intermédiaire? Contrairement aux exécutables compilés, qui sont spécifiques à la machine, le blob de code intermédiaire serait entièrement portable.
supercat
Pardon; J'allais demander sur stackoverflow.com, et il m'a suggéré de demander ici à la place quand j'ai utilisé le tag "gpl"! Ce genre de discussion est-il également interdit ici? exec ("avocat killall -9"); : D
ekolis
Et oui, je suis d'accord que cela n'a aucun sens qu'un détail de mise en œuvre ne devrait pas avoir d'effet sur le statut juridique de la réutilisation; Je pensais juste qu'il y avait une telle distinction et demandais des éclaircissements!
ekolis
2
@ekolis: ce n'est pas interdit en soi. Il est juste que ce n'est pas une bonne idée de poser des questions juridiques des personnes qui ne connaissent rien au sujet des questions juridiques (comme les programmeurs, par exemple), quand il y a des gens qui ne connaissance des questions juridiques (aka avocats) , vous pouvez demander à la place. Je n'ai rien contre les avocats, bien au contraire. Mais je ne demanderais pas conseil à un algorithme et je ne demanderais pas non plus à un programmeur des conseils juridiques.
Jörg W Mittag
IANAL: C'est peut-être un détail technique, mais cela fait quand même une grande différence, car il change ce qui est distribué d'une manière juridiquement significative. Avec la liaison statique, vous créez un travail combiné qui, selon les règles de la GPL, ne peut pas être distribué en dehors de la GPL. Avec la liaison dynamique, vous pouvez également le faire, par exemple si vous empaquetez les bibliothèques avec votre logiciel dans un fichier ZIP. Mais avec la liaison dynamique, vous pouvez le distribuer sans les bibliothèques, et c'est 100% votre travail, même s'il ne fonctionne pas seul. Et vous pouvez toujours, bien sûr, proposer les bibliothèques sous GPL.
flarn2006
0

Aucune idée de combien de vérité il y a là-dedans, et IANAL, etc .; mais dans mon interprétation, ce qui est important est de savoir si la bibliothèque que vous liez est sous une forme quelconque incluse dans le "binaire" (où "binaire", dans le cas des langages de programmation dynamiques, est juste le code source tel que distribué; c'est ce que je fais de la définition de la FSF de "binaire" dans ce contexte).

Donc, si vous référencez des bibliothèques à partir de votre code sans les inclure dans votre distribution, je considérerais cela comme l'équivalent d'une "liaison dynamique", alors que si vous regroupez les bibliothèques avec votre produit ou copiez-collez des parties de la bibliothèque dans votre propre code, le scénario de "liaison statique" s'appliquerait. Ceci, au moins, est dans l'esprit de la GPL: vous pouvez librement utiliser (run, inspecter, référence) le logiciel sous licence GPL sans restrictions, mais dès que vous dérivez de celui - ci (en liant ou la copie des parties de celui - ci dans votre propre produit distribuable), il devient viral et votre logiciel doit également être sous GPL.

tdammers
la source