web-dev-qa-db-fra.com

Appelez le logiciel GPL à partir d'un logiciel non GPL

Puis-je (légalement) utiliser un programme qui est publié sous GPL à partir d'un autre programme que j'écris et ne pas avoir à respecter la GPL (pour le programme que j'écris)?

Par exemple, j'ai une interface graphique qui utilise un programme (qui est sous GPL), puis-je cacher le code dans l'interface graphique et même le vendre?

31
Valmond

Vous pouvez utiliser un programme GPL à partir de votre propre programme sans que votre programme soit affecté par la GPL, mais vous ne pouvez pas lier le code GPL à votre propre programme sans que votre programme soit soumis aux termes de la GPL.

Dans l'exemple fourni dans la question, dans lequel vous avez écrit un wrapper GUI autour d'un programme de ligne de commande existant, votre interface graphique n'est pas liée par les termes de la GPL, à condition qu'il s'agisse d'un programme distinct qui exécute le programme GPL dans un processus séparé et communique avec lui uniquement via la ou les interfaces existantes - par exemple, via la ligne de commande et/ou via stdin/stdout.

Quelques bits pertinents de FAQ GPL :

Où est la frontière entre deux programmes distincts et un programme en deux parties? Il s'agit d'une question juridique que les juges décideront en dernier ressort. Nous pensons qu'un critère approprié dépend à la fois du mécanisme de communication (exec, pipes, rpc, appels de fonction au sein d'un espace d'adressage partagé, etc.) et de la sémantique de la communication (quels types d'informations sont échangées).

Si les modules sont inclus dans le même fichier exécutable, ils sont définitivement combinés dans un seul programme. Si les modules sont conçus pour s'exécuter liés ensemble dans un espace d'adressage partagé, cela signifie presque certainement les combiner en un seul programme.

En revanche, les canaux, les sockets et les arguments de ligne de commande sont des mécanismes de communication normalement utilisés entre deux programmes distincts. Ainsi, lorsqu'ils sont utilisés pour la communication, les modules sont normalement des programmes distincts. Mais si la sémantique de la communication est suffisamment intime, échangeant des structures de données internes complexes, cela pourrait aussi être une base pour considérer les deux parties comme combinées dans un programme plus vaste.


Puis-je publier un programme non libre conçu pour charger un plug-in couvert par la GPL?

Cela dépend de la façon dont le programme appelle ses plug-ins. Par exemple, si le programme utilise uniquement des fork et des exécutions simples pour appeler et communiquer avec des plug-ins, les plug-ins sont des programmes distincts, de sorte que la licence du plug-in ne fait aucune exigence concernant le programme principal.

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. Pour utiliser les plug-ins couverts par la GPL, le programme principal doit être publié sous la licence GPL ou une licence de logiciel libre compatible GPL, et que les termes de la GPL doivent être suivis lorsque le programme principal est distribué pour être utilisé avec ces plug-ins.

Si le programme relie dynamiquement des plug-ins, mais que la communication entre eux se limite à invoquer la fonction "principale" du plug-in avec quelques options et à attendre son retour, c'est un cas limite.

Notez que la GPL s'applique dans son intégralité au programme de ligne de commande sous-jacent dans tous les cas - si vous le distribuez (par opposition à ce que les utilisateurs l'obtiennent d'une autre source), vous êtes responsable de fournir une copie de la GPL aux utilisateurs, ce qui en fait clair pour eux que le programme de ligne de commande est sous la GPL (même si le wrapper GUI ne l'est pas), et en mettant à leur disposition le code source du programme de ligne de commande sur demande. Depuis la GPL FAQ encore:

Si les gens devaient distribuer des logiciels couverts par la GPL en les qualifiant de "partie" d'un système que les utilisateurs savent être en partie propriétaires, les utilisateurs pourraient être incertains de leurs droits concernant les logiciels couverts par la GPL. Mais s'ils savent que ce qu'ils ont reçu est un programme gratuit et un autre programme, côte à côte, leurs droits seront clairs.

Clause de non-responsabilité standard: je ne suis pas avocat et, même si j'étais avocat, je ne suis pas votre avocat. Si vous avez besoin d'une réponse définitive, consultez un professionnel du droit approprié autorisé à exercer dans votre juridiction.

31
Dave Sherohman

Cela dépend de ce que vous entendez par l'utiliser?

  • compilez-le dans votre code
  • utiliser une bibliothèque partagée
  • exécuter un exécutable

Cela dépend également de la version/variante de la GPL sous laquelle se trouve l'autre code.

  • GPL
  • LGPL
  • AGPL
  • Probablement d'autres

Mentions légales: je ne suis pas avocat.

0
Martin York