Это не четкая проблема. Рассмотрим два крайних конца спектра:
Ваше проприетарное клиентское программное обеспечение является HTTP-клиентом и отображает HTML-ответы. Может работать с любым HTTP-сервером. Сервер HTTP, который вы используете для своей службы, использует компоненты GPL.
У вас есть программа, которая использует компоненты, лицензированные по лицензии GPL. Вы выбираете произвольную точку в работе этой программы и разбиваете программу на две программы. Обе программы общаются через абсолютно лишний сетевой переход. Все компоненты, лицензированные по лицензии GPL, помещаются в первую программу и лицензию под лицензией GPL, а другая программа лицензируется по лицензии, несовместимой с лицензией GPL.
Первый случай явно в порядке. Второй случай явно не в порядке. Вы не предоставили много информации о вашем конкретном деле, и даже если бы вы сделали, только решение суда могло окончательно решить, имеете ли вы право.
В FAQ по GPL говорится о совместимых, отдельно лицензируемых программах :
Тем не менее, во многих случаях вы можете распространять программное обеспечение под GPL вместе с вашей проприетарной системой. Чтобы сделать это правильно, вы должны убедиться, что бесплатные и несвободные программы общаются на расстоянии вытянутой руки , чтобы они не были объединены таким образом, чтобы фактически сделать их единой программой.
Разница между этим и «включением» программного обеспечения, покрываемого GPL, является частично вопросом существа, а частично формой. Основная часть заключается в следующем: если две программы объединены так, что они фактически становятся двумя частями одной программы, вы не можете рассматривать их как две отдельные программы. Таким образом, GPL должна охватывать все это.
Вы должны решить, считаете ли вы, что ваш клиент является сервером, отвечающим стандарту «двух частей одной и той же программы» (и поэтому каждая из них должна быть лицензирована в соответствии с GPL) или нет. FAQ по GPL дает некоторые дополнительные пояснения по этой теме по другому вопросу :
Где грань между двумя отдельными программами и одной программой из двух частей? Это юридический вопрос, который в конечном итоге решат судьи. Мы считаем, что надлежащий критерий зависит как от механизма обмена данными (exec, pipe, rpc, вызовов функций в общем адресном пространстве и т. Д.), Так и от семантики обмена данными (какие виды информации обмениваются).
...
В отличие от этого, каналы, сокеты и аргументы командной строки являются механизмами связи, обычно используемыми между двумя отдельными программами. Поэтому, когда они используются для связи, модули обычно являются отдельными программами. Но если семантика коммуникации достаточно интимна, обмениваясь сложными внутренними структурами данных, это тоже может послужить основой для рассмотрения двух частей, объединенных в большую программу .
Таким образом, сетевое взаимодействие, безусловно, проходит тест «механизм коммуникации», но неясно, где ваша пара клиент / сервер попадает в тест «семантика коммуникации».
Два процесса, взаимодействующих по сети, не влекут за собой создание производной работы, как это делает связь исполняемого файла с библиотекой. Таким образом, код GPL на сервере не распространяется на код клиента.
Согласно GPL, вы должны распространять измененный исходный код при распространении двоичных файлов. Поскольку вы не распространяете двоичные файлы сервера, вам не нужно распространять исходный код сервера.
GNU Affero GPL - это лицензия, аналогичная GPL, с дополнительной версией, разработанной для того, чтобы закрыть эту самую дыру в петле, которой вы хотите воспользоваться (см .: http://www.gnu.org/licenses/why-affero-gpl.html и http://en.wikipedia.org/wiki/Affero_General_Public_License#Examples_of_web_applications_under_GNU_AGPL ).
Отказ от ответственности: я разработчик, а не юрист.
источник
Зависит ли клиентское программное обеспечение от серверного программного обеспечения для его надлежащего функционирования? Другими словами, будет ли клиентское программное обеспечение работать без подключения к серверу?
Если ответ «да» и сервер просто предоставляет дополнительную функцию, а не поддержку ядра, вашему клиентскому программному обеспечению, то вы, вероятно, в курсе. Если серверное программное обеспечение является неотъемлемой частью клиентского программного обеспечения и предоставляет основные функциональные возможности клиентскому программному обеспечению (т. Е. Клиентское программное обеспечение не будет работать без сервера), то комбинация является производной работой, подпадающей под действие GPL.
источник