Évitez la violation de la GPL en déplaçant la bibliothèque hors du processus


21

Supposons qu'il existe une bibliothèque sous licence GPL. Je veux l'utiliser est un projet open source. Je fais ce qui suit:

  1. Créez une petite application wrapper autour de cette bibliothèque GPL qui écoute le socket, analyse les messages et appelle la bibliothèque GPL. Retourne ensuite les résultats.
  2. Libérer ses sources (pour se conformer à la GPL)
  3. Créez un client pour ce wrapper dans mon application principale et ne libérez pas de sources.

Je sais que cela ajoute une énorme surcharge par rapport à la liaison statique / dynamique, mais je m'intéresse à la manière théorique.


6
L'encapsuleur que vous écrivez serait sous licence GPL. Par conséquent, le programme utilisant le wrapper serait toujours soumis aux conditions de la GPL pour la liaison, etc.
TZHX

4
pourquoi ne pas contacter l'auteur d'abord et voir si vous pouvez le concéder sous LGPL ou similaire à la place.
jk.

8
@TZHX Je pense qu'il veut dire que le wrapper serait une application distincte qui agit comme un serveur - son code propriétaire serait dans le client
jk.

qui sera également distribuée? et quelle version de GPL est la licence
jk.

2
@jwenting la question indique clairement qu'il est à court de processus
jk.

Réponses:


32

Légalement , je dirais que ce serait OK (mais je ne suis pas avocat - consultez un avocat pour obtenir des conseils juridiques).

Moralement , c'est assez répréhensible. Si vous n'aimez pas la GPL, alors la solution "appropriée" n'est pas d'utiliser une bibliothèque GPL.

Edit : Pour clarifier, quel que soit le statut juridique de la GPL quant à savoir si la liaison dynamique est autorisée ou non, la LGPL a été spécifiquement créée dans le but de permettre la liaison dynamique dans le cas des bibliothèques. Il me semble donc clair qu'en choisissant la GPL plutôt que la LGPL, l'auteur de la bibliothèque le faisait explicitement pour interdire les liens dynamiques. À mon avis, utiliser un moyen technique pour contourner une restriction légale qui exprime l'intention explicite de l'auteur pour son code est ce qui est répréhensible.

Pour mémoire, je ne suis pas personnellement fan de la GPL (je préfère une licence plus permissive comme le MIT ou BSD). Cependant, je suis un grand fan du respect du travail des autres développeurs, et s'ils ne veulent pas que vous liez leur bibliothèque avec un logiciel open source, alors c'est une prérogative.


12
Je ne pense pas qu'il y ait un problème moral ici - la GPL semble autoriser explicitement son cas d'utilisation
jk.

3
@vartec est ici une citation de la FAQ officielle de la GPL: "La liaison statique ou dynamique avec d'autres modules fait un travail combiné basé sur. Ainsi, les termes et conditions de la Licence Publique Générale GNU couvrent toute la combinaison." Si Stallman a une vision différente de ce qu'est l'Open Source, cela ne signifie pas qu'il le déteste. Il est l'un des principaux idéologues de ce mouvement.
Andrey

8
@vartec: J'ai l'impression que vous ne comprenez pas que, lorsque vous utilisez le code de QUELQU'UN D'AUTRE dans VOTRE application, VOUS êtes tenu de respecter les conditions qu'IL a mises sur l'utilisation de SON code. Vous ne l'aimez pas? N'utilisez pas le code GPL de quelqu'un d'autre. C'est simple.
John R. Strohm

3
Voici ma suggestion: dérivez l'enfer de ce code GPL dont vous semblez dépendre et voyez comment le procès se déroule. La GPL3 a été créée pour boucher les trous légaux de la GPL2, alors peut-être que vous vous en sortirez. Je doute que les gens fassent des défilés en votre honneur parce que vous avez réussi une manœuvre légale et si vous êtes assez efficace, les gens vont autoriser leur code avec plus de conditions d'utilisation juste pour vous contrarier. En fin de compte, cela pourrait améliorer le monde en évitant les fils comme celui-ci.
Godeke

3
Je suis fermement en désaccord avec l'affirmation selon laquelle c'est moralement répréhensible. Ce qui est moralement répréhensible, c'est de dire aux gens qu'ils n'ont pas le droit de faire les choses que la GPL leur permet de faire. Lorsque je mets une œuvre sous GPL, je le fais parce que je veux que les règles de la GPL s'appliquent. Dire aux gens qu'ils ne devraient pas exercer les droits que leur accorde la GPL est répréhensible. C'est quelque chose que la GPL permet. Ceux qui placent des œuvres sous GPL le font parce qu'ils veulent le permettre.
David Schwartz

6

IANAL mais je pense que vous êtes d'accord, la section pertinente de la GPL3 est à la fin de la section 5:

Une compilation d'une œuvre couverte avec d'autres œuvres distinctes et indépendantes, qui ne sont pas par nature des extensions de l'œuvre couverte, et qui ne sont pas combinées avec elle de manière à former un programme plus vaste, dans ou sur un volume de stockage ou de distribution moyen, est appelé un «agrégat» si la compilation et le droit d'auteur qui en résulte ne sont pas utilisés pour limiter l'accès ou les droits légaux des utilisateurs de la compilation au-delà de ce que les œuvres individuelles permettent. L'inclusion d'une œuvre couverte dans un agrégat ne fait pas que cette licence s'applique aux autres parties de l'agrégat.

Cela va probablement dépendre exactement de ce que fait votre «client», la réponse de mouviciel est probablement un bon guide sur la façon de le faire en toute sécurité

Si vous pensez que votre application est une extension de la bibliothèque plutôt que quelque chose d'agrégé avec elle, alors vous avez probablement raison (vous devriez être au bon endroit pour le savoir), auquel cas votre meilleur pari est de contacter l'auteur et d'essayer d'obtenir un licence différente

cela semblerait étayer ma position selon laquelle cela est explicitement autorisé par la GPL, en supposant qu'il soit fait correctement.


Je l'ai lu, mais le problème est que le texte GPL est écrit dans un langage juridique , pas en cours de développement . L'astuce avec le wrapper est de faire une application commerciale "agrégée", pas "dérivée". Mais je pense que cela relève des "extensions de la nature de l'œuvre couverte".
Andrey

bien pour l'aide sur le langage juridique, vous aurez besoin d'un avocat. Si vous pensez que votre application est une extension de la bibliothèque plutôt que quelque chose d'agrégé avec elle, alors vous avez probablement raison (vous devriez être au bon endroit pour le savoir), auquel cas votre meilleur pari est de contacter l'auteur et d'essayer d'obtenir un licence différente
jk.

1
@Andrey: Si la "nature" de votre programme est directement liée au code GPL, la section citée ci-dessus ne s'appliquerait pas. D'après votre question, il semble que ce soit le cas. Un contre-exemple pourrait être un programme d'analyse d'intrusion réseau qui se trouve utiliser la ligne de lecture GNU via le mécanisme que vous proposez. (Readline est un cas de test intéressant car il existe une alternative sous licence BSD.)
Fred Nurk

La clause "agrégat" vise à préciser que le fait d'être sur le même CD-Rom ou distribution Linux ne crée pas de dérivé.
Sean McMillan

6

Voir le J'aimerais incorporer un logiciel sous GPL dans mon système propriétaire. Puis-je faire ceci?

La question est: votre application wrapper est-elle utile à elle seule? Si vous avez créé une version de ligne de commande de votre programme qui était GPL, vous pouvez libérer l'interface graphique sous une licence différente. Par exemple, vous pouvez créer un IDE pour gcc qui était une source fermée ou un outil de diff visuel basé sur diff.

Cependant, si vous avez terminé la bibliothèque n'a pas d'autre utilité que d'être utilisé par votre programme, et que vous ne programmez pas sans cette bibliothèque, c'est un travail dérivé et devrait être publié sous la GPL.


Ma compréhension est que vous pouvez autoriser le wrapper sous MIT et toujours être OK.
Grille

2
Colin, absolument pas. L'encapsuleur est combiné sans ambiguïté avec la bibliothèque GPL en un seul binaire. Pour utiliser le code GPL dans un seul binaire, vous devez GPL votre propre code pour se conformer à la licence.
Fou de Bassan en béton

5

OMI, légalement c'est OK. (IANAL) Pour améliorer l'aspect moral du problème, ne l'appelez pas un "wrapper FooBar qui rend FooBar légalement disponible pour MyClosedApp", appelez-le un serveur. Faites-en un joli petit programme open source qui "permet de faire FooBar sur le net". Mettez-le sur SourceForge ou dédiez-lui un site Web, avec la page du projet et des instructions et d'autres choses. Ensuite, laissez "MyClosedApp" utiliser simplement le "serveur FooBar".


2

Autant que je sache, vous pouvez laisser votre logiciel en source fermée tant qu'il est capable de faire son travail sans bibliothèque GPL. Voyez la bibliothèque GPL comme un plugin dont l'absence ne rend pas votre logiciel inutile.


1
c'est définitivement faux. l'utiliser comme plugin (ou lien dynamique) rend l'application résultante "dérivée" et soumise à la GPL.
Andrey

Je ne suis pas sûr que le plugin soit toujours synonyme de lien dynamique. Et certainement dans ce cas l'OP ne propose pas de lier dynamiquement quoi que ce soit donc je pense que le conseil de mouviciel tient
jk.

@jk bien, si vous créez un seul plugin et qu'il est basé sur une licence GPL, cela sent la violation.
Andrey

4
L'AGPL n'interdirait pas cela à moins que le socket ne soit sur un réseau. C'est assez précis. En outre, ce n'est pas un test d'utilité, mais de la proximité des logiciels propriétaires et GPL. La liaison statique est définitivement trop proche, les sockets (à l'exception du cas AGPL spécifique) sont définitivement OK, la liaison dynamique peut ou peut ne pas l'être (j'ai entendu des arguments à consonance légale de chaque côté, et il n'y a pas encore de jurisprudence américaine).
David Thornley

1
@Andrey: vous dites donc que tant qu'un logiciel de source fermée comme Photoshop est capable de faire son travail sans composant GPL, on peut le distribuer sans le rendre GPL. C'est exactement ce que dit cette réponse.
Doc Brown

1
  1. essayez de trouver une alternative Open Source, s'il n'y en a pas, optez pour la GPL;
  2. vérifier si c'est GPLv3 avec la clause Affero si c'est le cas, il n'y a rien à faire;
  3. s'il s'agit de GPLv2, vous pouvez faire exactement ce que vous suggérez;

Il existe également une option quelque peu controversée. Dans la plupart des législatures, le lien dynamique devrait être la limite du "travail dérivé". La logique derrière cela est que, tout en liant dynamiquement, vous incluez simplement des fichiers d'en-tête dans votre programme. Dans de nombreuses législations, les fichiers d'en-tête sont considérés comme des définitions d'API et explicitement exclus du droit d'auteur. D'un autre côté, avec la liaison dynamique, la liaison réelle avec la bibliothèque GPL se fait sur le système de l'utilisateur final. Mais comme je l'ai dit, il y a beaucoup de controverse, Stallman est fortement FUD contre cela.


quelle est la différence entre GPL v2 et v3 qui rend mon hack impossible? Ce que je fais ce n'est pas du lien dynamique, je les découplent le plus possible.
Andrey

L'un des objectifs de la GPLv3 était d'empêcher cette méthode de «contournement».
vartec

4
Premièrement, les variantes GPL sont des licences Open Source officielles approuvées par OSI (tout comme la licence BSD sans clause publicitaire est une licence de logiciel libre approuvée par Stallman). Deuxièmement, aucune version GPL (y compris Affero) ne restreint votre capacité à faire communiquer des logiciels propriétaires et GPL avec des méthodes de communication inter-processus standard, comme les sockets.
David Thornley

IMO GPLv3 autorisant par exemple une clause DRM viole le point 6. de la définition Open Source opensource.org/docs/osd
vartec

1
@vartec: DRM n'est pas un "champ d'efforts". Voir le "Par exemple, il ne peut pas empêcher le programme d'être utilisé dans une [entreprise commerciale], ou d'être utilisé pour la recherche génétique." OSI croit apparemment que la GPL3 est Open Source et répond à tous les points de leur définition, car ils l'ont approuvée.
Thomas Edleson

0

Serait-il légal pour Adam Brown d'écrire un programme qui utilise une bibliothèque GPL et agissait comme un "serveur", s'il libérait tout le code source pour tout ce qui lui est associé, mais le seul code client qu'il a publié était assez faible parce que c'est tout il avait écrit côté client? Je ne vois aucune raison de penser que ce ne serait pas le cas.

Si Charles Dover trouvait le "serveur" d'Adam Brown et décidait d'écrire un programme à code source fermé pour communiquer avec lui, la GPL limiterait-elle ses actions de quelque façon que ce soit? Pas que je puisse voir, puisque sa seule utilisation des logiciels sous GPL serait comme les binaires qu'il a reçus d'Adam Brown. S'il distribuait les binaires d'Adam, il devrait également inclure un lien vers la source, mais rien d'autre dans la GPL n'affecterait le code de Charles.

En ce qui concerne une personne écrivant un serveur sous licence GPL, puis utilisant le serveur à ses propres fins de source fermée, je ne pense pas qu'il devrait y avoir de problème juridique si, en écrivant le serveur, il a fait un effort de bonne foi pour le faire utile à ceux qui souhaiteraient utiliser le code GPL fourni de la même manière. En particulier, la documentation publique de l'interface devrait être suffisante pour permettre à un programmeur compétent d'écrire du code pour un serveur qui serait accepté par le programme client exactement comme l'original, et d'écrire des programmes clients qui utiliseraient le serveur de la même manière que l'application de l'auteur.

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.