Puis-je utiliser commercialement un logiciel sous licence GPL sur mon serveur si je distribue uniquement le logiciel client?


15

Je comprends les règles de la GPL stipulant que si je distribue un logiciel en utilisant le code GPL, alors ce code doit être sous licence GPL .

Cependant, je me demande quelles sont les règles dans ce cas: je crée un service où je vais vendre et distribuer des logiciels côté client .

Le logiciel côté client ne contient absolument aucun code GPL. C'est 100% mon propre code.

Cependant, le logiciel client se connectera à mon serveur, qui utilise en interne le code GPL.

Je ne distribue pas mon logiciel côté serveur; le logiciel côté serveur vivra sur un serveur dédié que je contrôle seul, mais le logiciel côté client ne fonctionnera pas sans connexion audit serveur.

Est-ce que cela compte comme un seul logiciel? Si je devais faire cela, serais-je obligé de concéder sous licence mon code source côté client en tant que GPL? Ou, puis-je vendre le logiciel côté client sans publier son code source?

Réponses:


12

Ce n'est pas un problème clair. Considérez deux extrémités extrêmes du spectre:

  1. Votre logiciel client propriétaire est un client HTTP et il affiche des réponses HTML. Il peut fonctionner avec n'importe quel serveur HTTP. Le serveur HTTP que vous utilisez pour votre service utilise des composants GPL.

  2. Vous disposez d'un programme qui utilise des composants sous licence GPL. Vous choisissez un point arbitraire dans le fonctionnement de ce programme et divisez le programme en deux programmes. Les deux programmes communiquent sur un tronçon de réseau totalement superflu. Vous placez tous les composants sous licence GPL dans le premier programme et la première licence sous la GPL, et vous accordez la licence à l'autre programme sous une licence incompatible avec la GPL.

Le premier cas est clairement correct. Le deuxième cas n'est clairement pas correct. Vous n'avez pas donné beaucoup d'informations sur votre cas particulier, et même si vous l'avez fait, seule une décision de justice pourrait décider définitivement si vous avez raison.

La FAQ GPL a ceci à dire sur les programmes interopérables, sous licence séparée :

Cependant, dans de nombreux cas, vous pouvez distribuer le logiciel couvert par la GPL aux côtés de votre système propriétaire. Pour le faire valablement, vous devez vous assurer que les programmes gratuits et non libres communiquent sans lien de dépendance , qu'ils ne sont pas combinés d'une manière qui ferait d'eux un programme unique.

La différence entre cela et «l'intégration» du logiciel couvert par la GPL est en partie une question de fond et en partie de forme. La partie substantielle est la suivante: si les deux programmes sont combinés de manière à devenir effectivement deux parties d'un programme, vous ne pouvez pas les traiter comme deux programmes distincts. La GPL doit donc couvrir le tout.

Vous devez décider si vous pensez que vos clients sont des serveurs conformes à la norme des "deux parties du même programme" (et doivent donc chacun être sous licence GPL) ou non. La FAQ GPL donne quelques explications supplémentaires sur ce sujet sur une autre question :

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).

...

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 .

Ainsi, la communication réseau passe certainement le test du "mécanisme de communication" mais il n'est pas clair où votre paire client / serveur tombe dans le test de "sémantique de la communication".


Serait-il raisonnable de fonder la distinction sur la mesure dans laquelle l'interfaçage entre les programmes était public? Si, par exemple, j'implémente un système de jeu d'échecs qui utilise un programme d'interface utilisateur GPL qui communique avec un moteur d'échecs propriétaire, et je documente comment quiconque souhaitant écrire son propre moteur d'échecs pourrait le faire utiliser le même front-end d'interface utilisateur, je le ferais pense que cela devrait satisfaire l'esprit (et, espérons-le, la lettre) de la GPL même si, à moins que quelqu'un n'écrive un autre moteur, l'interface utilisateur de l'interface utilisateur n'aurait d'autre but que de parler au programme propriétaire.
supercat

Hmm. J'ai posé cette question si vaguement parce que j'étais simplement curieux de connaître la GPL en général. Cependant, je pense que je comprends maintenant la différence. Si mon serveur possède des informations de compte utilisateur que mon logiciel client doit exécuter, cela viole clairement la GPL. Si mon serveur est quelque chose comme un serveur de relais de paquets qui permet simplement à deux versions de mon logiciel client de communiquer entre elles, alors ce serait bien. Ai-je raison dans ces hypothèses?
Steven Jeffries

4

Deux processus communiquant sur un réseau n'entraînent pas la création d'un travail dérivé comme le fait la liaison d'un exécutable avec une bibliothèque. Le code GPL sur le serveur ne s'applique donc pas au code client.

Sous la GPL, vous devez distribuer le code source modifié lorsque vous distribuez des binaires. Comme vous ne distribuez pas les fichiers binaires du serveur, vous n'êtes pas obligé de distribuer le code source du serveur.

La GNU Affero GPL est une licence similaire à la GPL avec un verbage supplémentaire conçu pour fermer ce trou de boucle dont vous souhaitez profiter (voir: http://www.gnu.org/licenses/why-affero-gpl.html et http://en.wikipedia.org/wiki/Affero_General_Public_License#Examples_of_web_applications_under_GNU_AGPL ).

Avertissement: je suis développeur, pas avocat.


3
Juste un petit mot d'avertissement: Si le client est conçu pour communiquer spécifiquement avec ce logiciel serveur, il est tout à fait possible que la FSF ne serveur examiner et logiciel client comme un produit. Voir aussi ici dans la FAQ GPL
Bart van Ingen Schenau

D'un autre côté, si un tiers écrit un logiciel client pour communiquer avec votre serveur, sans jamais avoir vu le logiciel serveur ou une licence, cet argument semble ridicule. Et cela signifierait que Microsoft pourrait poursuivre toute personne écrivant un logiciel se connectant aux serveurs Outlook, par exemple.
gnasher729

2

Le logiciel client dépend-il du logiciel serveur pour son bon fonctionnement? En d'autres termes, le logiciel client fonctionnera-t-il sans être connecté au serveur?

Si la réponse à cette question est «oui» et que le serveur fournit simplement une fonctionnalité supplémentaire, et non une prise en charge principale, à votre logiciel client, alors vous êtes probablement en clair. Si le logiciel serveur fait partie intégrante du logiciel client et fournit des fonctionnalités de base au logiciel client (c'est-à-dire que le logiciel client ne fonctionnera pas sans le serveur), alors la combinaison est un travail dérivé, couvert par la GPL.


Je me méfierai de la prudence et ne pas utiliser de code GPL sur mon serveur alors.
Steven Jeffries

2
@StevenJeffries Cette réponse va à la fois contre la pratique actuelle et les exigences de la GPL. Tant que je ne distribue pas un logiciel ou un travail dérivé, je suis libre d'utiliser des logiciels sous GPL sur un serveur, par exemple Linux ou GCC ou WordPress. Le simple fait d'utiliser un logiciel ne crée pas une œuvre dérivée. Dans le cas de la GPL, son considéré comme correct quand au moins la séparation au niveau du processus est impliquée (pas de mémoire partagée, pas de structures de données partagées). Voir la réponse de J. Lenthe pour une solution correcte et des références.
amon

@amon: Si vous ne partagez même pas les structures de données entre le serveur et le client, alors vous avez raison. Je doute que ce soit le cas, cependant. La distinction que je fais (le logiciel client dépend-il du logiciel serveur pour sa bonne exécution) n'est pas arbitraire; c'est l'une des deux exigences essentielles pour ce que la FSF considère comme un «travail dérivé»; l'autre est la «communication sans lien de dépendance». Ne me croyez pas sur parole; lisez-le par vous-même sur le site de la FSF.
Robert Harvey

@amon: Vous pouvez en savoir plus à ce sujet ici .
Robert Harvey

@amon Un autre élément très pertinent de la FAQ GPL (qui sert de suivi après avoir lu le lien de Robert) est celui-ci, en particulier les trois derniers paragraphes: gnu.org/licenses/gpl-faq.html#MereAggregation
apsillers
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.