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 la 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 dans 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 gratuit 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 les plug-ins, mais que la communication entre eux se limite à invoquer la fonction «principale» du plug-in avec certaines 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. De la FAQ GPL à nouveau:
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.
Cela dépend de ce que vous entendez par l'utiliser?
Cela dépend également de la version / variante de la GPL sous laquelle se trouve l'autre code.
Mentions légales: je ne suis pas avocat.
la source
Cela dépend de la façon dont votre programme "utilise" le programme GPL. La FAQ GPL a une explication assez longue , mais elle laisse encore beaucoup de place à l'interprétation:
Je pense que dans votre exemple d'une interface graphique qui existe principalement pour appeler un programme GPL en ligne de commande, les deux forment clairement un seul programme, vous devrez donc publier votre code sous la GPL.
la source
Non.
Le code GPL ne peut être utilisé que par un autre code GPL.
Citant la première ligne de l' article GPL de wikipedia :
En plus de cela, la GPL fait plusieurs pages et existe en plusieurs versions.
Attention, coup de gueule personnel à venir!
Personnellement, je n'aime pas beaucoup la licence GPL en raison de sa nature très restrictive et virulente. Ils l'appellent "gratuit" mais c'est en fait tout le contraire, le code GPL ne peut être utilisé par rien d'autre qu'un autre code GPL. Forcer ainsi d'autres projets dans GPL ou être obligé de réécrire des bibliothèques entières, que votre projet actuel soit open source ou non. Il y avait d'énormes projets open source, comme freeBSD par exemple qui ont été obligés de réécrire des centaines de milliers de lignes de code linux parce que leur licence était incompatible, elle était trop "gratuite" dans le sens "faites ce que vous voulez", ce qui est évidemment non compatible avec GPL.
Si vous voulez une licence vraiment "gratuite" dans le sens "faites ce que vous voulez", je recommande la licence BSD ou MIT ... en fait, la plupart des autres licences sont OK. Ce n'est que la GPL qui est vraiment problématique parce qu'elle est restrictive et qu'elle y force les autres. Enfin, c'est trop compliqué.
Ah, oui, c'est aussi un aller simple. La GPL peut utiliser du code / des bibliothèques sous licence de la plupart des licences, mais ces bibliothèques / code ne peuvent pas utiliser le code GPL à leur tour.
la source