web-dev-qa-db-fra.com

Puis-je utiliser des logiciels sous licence GPL sur mon serveur si je ne distribue que le logiciel client?

I comprenez les règles de la GPL indiquant que si je distribue un logiciel à l'aide de code GPL, ce code doit licencié sous la GPL .

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

Le logiciel côté client n'a 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 suis pas Distribuant mon logiciel côté serveur; Le logiciel latéral du serveur vivra sur un serveur dédié que je seul contrôle, mais le logiciel côté client ne fonctionnera pas sans se connecter audit serveur.

Est-ce que cela compte comme un logiciel? Si je devais faire cela, serais-je tenu de licencier le code source côté client comme GPL? Ou, puis-je vendre le logiciel côté client sans libérer son code source?

15
Steven Jeffries

Ce n'est pas un problème de coupe claire. Considérons deux extrémités extrêmes du spectre:

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

  2. Vous avez un programme utilisant des composants sous licence GPL. Vous choisissez un point arbitraire dans le fonctionnement de ce programme et enfreignez le programme en deux programmes. Les deux programmes communiquent sur un jeu de réseau totalement superflu. Vous mettez tous les composants sous licence GPL dans le premier programme et une licence sous la GPL, et vous autorisez l'autre programme sous une licence GPL-incompatible.

Le premier cas est clairement correct. Le deuxième cas ne va clairement pas bien. 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 êtes dans la droite.

Le GPL FAQ a-t-il ceci à dire sur des programmes interopérables à licence séparément :

Cependant, dans de nombreux cas, vous pouvez distribuer le logiciel GPL-couvert à côté de votre système propriétaire. Pour ce faire valoir, Vous devez vous assurer que les programmes gratuits et non libres communiquent à la longueur des armes, qu'elles ne sont pas combinées de manière à les rendre efficace d'un seul programme.

La différence entre cela et "incorporer" le logiciel couvert GPL est en partie une question de substance et en partie de forme. La partie substantielle est la suivante: Si les deux programmes sont combinés de manière à devenir efficacement deux parties d'un programme, vous ne pouvez pas les traiter comme deux programmes distincts. Donc, le GPL doit donc couvrir le tout.

Vous devez décider si vous pensez que votre client est serveur répond à la norme de "deux parties du même programme" (et doit donc être sous licence sous la GPL) ou non. Le GPL FAQ donne une autre explication supplémentaire sur ce sujet sur une autre question :

Où est la ligne entre deux programmes distincts et un programme avec deux parties? C'est une question juridique, qui finit par les juges décidera. Nous croyons qu'un critère approprié dépend à la fois sur le mécanisme de communication (EXEC, Tipes, RPC, Appels de fonction dans un espace d'adressage partagé, etc.) et le Sémantique de la communication (quels types d'informations sont interchangés).

...

En revanche, les tuyaux, les sockets et les arguments de ligne de commande sont des mécanismes de communication normalement utilisés entre deux programmes distincts. Donc, quand 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, échanger des structures de données internes complexes, qui pourrait également être une base pour considérer les deux parties comme combinées dans un programme plus vaste.

Ainsi, la communication réseau transmet certainement le test "Mécanisme de la communication", mais il n'est pas clair où votre paire de client/serveur tombe sur le test "Sémantique de la communication".

12
apsillers

Deux processus communiquant sur un réseau n'entraînent pas la création d'un travail dérivé de la manière dont le lien d'exécutable avec une bibliothèque fait. Donc, le code GPL sur le serveur ne s'applique pas au code du client.

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

Le GNU AFFERO GPL est une licence similaire à la GPL avec un verbage supplémentaire conçu pour fermer ce trou même en boucle que vous souhaitez profiter (voir: http: //www.gnu .org/licences/pourquoi-affèrement-gpl.html et http://fr.wikipedia.org/wiki/affero_general_public_license#examples_of_web_applications_under_gnu_agpl ).

Disclaimer: Je suis un développeur, pas un avocat.

4
J. Lenthe

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 à celle-ci est "oui" et que le serveur fournit simplement une fonctionnalité supplémentaire, et non un support de base, à votre logiciel client, alors vous êtes probablement clair. Si le logiciel serveur fait partie intégrante du logiciel client et fournit des fonctionnalités de base sur le logiciel client (c'est-à-dire que le logiciel client ne fonctionnera pas sans le serveur), la combinaison est un travail dérivé, couvert sous le gpl.

2
Robert Harvey