Это не четкая проблема. Рассмотрим два крайних конца спектра:
Ваше проприетарное клиентское программное обеспечение является HTTP-клиентом и отображает HTML-ответы. Может работать с любым HTTP-сервером. Сервер HTTP, который вы используете для своей службы, использует компоненты GPL.
У вас есть программа, которая использует компоненты, лицензированные по лицензии GPL. Вы выбираете произвольную точку в работе этой программы и разбиваете программу на две программы. Обе программы общаются через абсолютно лишний сетевой переход. Все компоненты, лицензированные по лицензии GPL, помещаются в первую программу и лицензию под лицензией GPL, а другая программа лицензируется по лицензии, несовместимой с лицензией GPL.
Первый случай явно в порядке. Второй случай явно не в порядке. Вы не предоставили много информации о вашем конкретном деле, и даже если бы вы сделали, только решение суда могло окончательно решить, имеете ли вы право.
В FAQ по GPL говорится о совместимых, отдельно лицензируемых программах :
Тем не менее, во многих случаях вы можете распространять программное обеспечение под GPL вместе с вашей проприетарной системой. Чтобы сделать это правильно, вы должны убедиться, что бесплатные и несвободные программы общаются на расстоянии вытянутой руки , чтобы они не были объединены таким образом, чтобы фактически сделать их единой программой.
Разница между этим и «включением» программного обеспечения, покрываемого GPL, является частично вопросом существа, а частично формой. Основная часть заключается в следующем: если две программы объединены так, что они фактически становятся двумя частями одной программы, вы не можете рассматривать их как две отдельные программы. Таким образом, GPL должна охватывать все это.
Вы должны решить, считаете ли вы, что ваш клиент является сервером, отвечающим стандарту «двух частей одной и той же программы» (и поэтому каждая из них должна быть лицензирована в соответствии с GPL) или нет. FAQ по GPL дает некоторые дополнительные пояснения по этой теме по другому вопросу :
Где грань между двумя отдельными программами и одной программой из двух частей? Это юридический вопрос, который в конечном итоге решат судьи. Мы считаем, что надлежащий критерий зависит как от механизма обмена данными (exec, pipe, rpc, вызовов функций в общем адресном пространстве и т. Д.), Так и от семантики обмена данными (какие виды информации обмениваются).
...
В отличие от этого, каналы, сокеты и аргументы командной строки являются механизмами связи, обычно используемыми между двумя отдельными программами. Поэтому, когда они используются для связи, модули обычно являются отдельными программами. Но если семантика коммуникации достаточно интимна, обмениваясь сложными внутренними структурами данных, это тоже может послужить основой для рассмотрения двух частей, объединенных в большую программу .
Таким образом, сетевое взаимодействие, безусловно, проходит тест «механизм коммуникации», но неясно, где ваша пара клиент / сервер попадает в тест «семантика коммуникации».