À 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?
Réponses:
Quant à la question spécifique concernant les langues interprétées, la FAQ GPL est très claire :
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:
et
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 .
la source
Foo()
est statiquement lié à l'appel de Joe'sBar()
, à quel titulaire du droit d'auteur doit-CALL
on 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.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.
la source
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.
la source