Ce n'est pas un problème clair. Considérez deux extrémités extrêmes du spectre:
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.
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".
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.
la source
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.
la source