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