Могу ли я коммерчески использовать лицензионное программное обеспечение GPL на своем сервере, если я только распространяю клиентское программное обеспечение?

15

Я понимаю правила GPL, согласно которым, если я распространяю какое-либо программное обеспечение с использованием кода GPL, этот код должен быть лицензирован в соответствии с GPL .

Однако мне интересно, каковы правила в этом случае: я создаю сервис, где я буду продавать и распространять программное обеспечение на стороне клиента .

Программное обеспечение на стороне клиента не имеет абсолютно никакого кода GPL. Это 100% мой собственный код.

Однако клиентское программное обеспечение будет подключаться к моему серверу, который внутренне использует код GPL.

Я не распространяю свое программное обеспечение на стороне сервера; программное обеспечение на стороне сервера будет жить на выделенном сервере, который я один контролирую, но программное обеспечение на стороне клиента не будет работать без подключения к указанному серверу.

Это считается одним программным обеспечением? Если бы мне пришлось это сделать, потребовалось бы мне лицензировать исходный код на стороне клиента как GPL? Или я могу продать программное обеспечение на стороне клиента без публикации исходного кода?

Стивен Джеффрис
источник

Ответы:

12

Это не четкая проблема. Рассмотрим два крайних конца спектра:

  1. Ваше проприетарное клиентское программное обеспечение является HTTP-клиентом и отображает HTML-ответы. Может работать с любым HTTP-сервером. Сервер HTTP, который вы используете для своей службы, использует компоненты GPL.

  2. У вас есть программа, которая использует компоненты, лицензированные по лицензии GPL. Вы выбираете произвольную точку в работе этой программы и разбиваете программу на две программы. Обе программы общаются через абсолютно лишний сетевой переход. Все компоненты, лицензированные по лицензии GPL, помещаются в первую программу и лицензию под лицензией GPL, а другая программа лицензируется по лицензии, несовместимой с лицензией GPL.

Первый случай явно в порядке. Второй случай явно не в порядке. Вы не предоставили много информации о вашем конкретном деле, и даже если бы вы сделали, только решение суда могло окончательно решить, имеете ли вы право.

В FAQ по GPL говорится о совместимых, отдельно лицензируемых программах :

Тем не менее, во многих случаях вы можете распространять программное обеспечение под GPL вместе с вашей проприетарной системой. Чтобы сделать это правильно, вы должны убедиться, что бесплатные и несвободные программы общаются на расстоянии вытянутой руки , чтобы они не были объединены таким образом, чтобы фактически сделать их единой программой.

Разница между этим и «включением» программного обеспечения, покрываемого GPL, является частично вопросом существа, а частично формой. Основная часть заключается в следующем: если две программы объединены так, что они фактически становятся двумя частями одной программы, вы не можете рассматривать их как две отдельные программы. Таким образом, GPL должна охватывать все это.

Вы должны решить, считаете ли вы, что ваш клиент является сервером, отвечающим стандарту «двух частей одной и той же программы» (и поэтому каждая из них должна быть лицензирована в соответствии с GPL) или нет. FAQ по GPL дает некоторые дополнительные пояснения по этой теме по другому вопросу :

Где грань между двумя отдельными программами и одной программой из двух частей? Это юридический вопрос, который в конечном итоге решат судьи. Мы считаем, что надлежащий критерий зависит как от механизма обмена данными (exec, pipe, rpc, вызовов функций в общем адресном пространстве и т. Д.), Так и от семантики обмена данными (какие виды информации обмениваются).

...

В отличие от этого, каналы, сокеты и аргументы командной строки являются механизмами связи, обычно используемыми между двумя отдельными программами. Поэтому, когда они используются для связи, модули обычно являются отдельными программами. Но если семантика коммуникации достаточно интимна, обмениваясь сложными внутренними структурами данных, это тоже может послужить основой для рассмотрения двух частей, объединенных в большую программу .

Таким образом, сетевое взаимодействие, безусловно, проходит тест «механизм коммуникации», но неясно, где ваша пара клиент / сервер попадает в тест «семантика коммуникации».

apsillers
источник
Разумно ли обосновывать различие в той степени, в которой взаимодействие между программами было публичным? Если, например, я реализую систему игры в шахматы, которая использует программу интерфейса пользователя GPL, которая взаимодействует с проприетарным шахматным движком, и я документирую, как кто-то еще, желающий написать свой собственный шахматный движок, мог бы использовать тот же интерфейс пользовательского интерфейса, я бы думаю, что это должно соответствовать духу (и, мы надеемся, букве) GPL, хотя, если кто-то не напишет альтернативный движок, интерфейс пользовательского интерфейса не будет иметь никакой другой цели, кроме как разговаривать с проприетарной программой.
суперкат
Хм. Я задал этот вопрос так смутно, потому что мне было просто интересно узнать о GPL в целом. Тем не менее, я думаю, что я понимаю разницу сейчас. Если на моем сервере есть информация об учетной записи пользователя, необходимая для запуска моего клиентского программного обеспечения, это явно нарушает GPL. Если мой сервер представляет собой что-то вроде сервера ретрансляции пакетов, который просто позволяет двум версиям моего клиентского программного обеспечения взаимодействовать друг с другом, то это будет нормально. Я прав в этих предположениях?
Стивен Джеффрис
4

Два процесса, взаимодействующих по сети, не влекут за собой создание производной работы, как это делает связь исполняемого файла с библиотекой. Таким образом, код 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 ).

Отказ от ответственности: я разработчик, а не юрист.

Дж. Лент
источник
3
Просто к сведению предупреждения: Если клиент разработан специально для общения с этим программным обеспечением сервера, то вполне возможно , что FSF делает рассмотреть сервер и клиентское программное обеспечение в качестве одного продукта. Смотрите также здесь в FAQ по GPL
Барт ван Инген Шенау
С другой стороны, если третье лицо пишет клиентское программное обеспечение для связи с вашим сервером, даже не видя серверного программного обеспечения или лицензии, этот аргумент выглядит нелепым. И это будет означать, что Microsoft может подать в суд на любого, кто пишет программное обеспечение, например, для подключения к серверам Outlook.
gnasher729
2

Зависит ли клиентское программное обеспечение от серверного программного обеспечения для его надлежащего функционирования? Другими словами, будет ли клиентское программное обеспечение работать без подключения к серверу?

Если ответ «да» и сервер просто предоставляет дополнительную функцию, а не поддержку ядра, вашему клиентскому программному обеспечению, то вы, вероятно, в курсе. Если серверное программное обеспечение является неотъемлемой частью клиентского программного обеспечения и предоставляет основные функциональные возможности клиентскому программному обеспечению (т. Е. Клиентское программное обеспечение не будет работать без сервера), то комбинация является производной работой, подпадающей под действие GPL.

Роберт Харви
источник
Я буду ошибаться с осторожностью и не буду использовать код GPL на своем сервере.
Стивен Джеффрис
2
@StevenJeffries Этот ответ противоречит как текущей практике, так и требованиям GPL. Пока я не распространяю программное обеспечение или производную работу, я могу свободно использовать программное обеспечение под GPL на сервере, например, Linux или GCC или WordPress. Простое использование программного обеспечения не создает производную работу. В случае GPL считается нормальным, когда используется хотя бы разделение на уровне процесса (нет общей памяти, нет общих структур данных). См. Ответ Дж. Лента для правильного решения и для ссылок.
Амон
@amon: Если вы даже не разделяете структуры данных между сервером и клиентом, то вы правы. Я сомневаюсь, что это так, хотя. Различие, которое я рисую (клиентское программное обеспечение зависит от серверного программного обеспечения для его надлежащего выполнения), не является произвольным; это одно из двух основных требований, которые ФСФ считает не «производной работой»; другой - «общение на расстоянии вытянутой руки». Не верь мне на слово; Прочтите это для себя на сайте ФФС.
Роберт Харви
@amon: Вы можете узнать больше об этом здесь .
Роберт Харви
@amon Другим очень соответствующий GPL FAQ пункта (хорошо как ссылка последующих после чтения Роберта) это одна, в частности , последние три пункта: gnu.org/licenses/gpl-faq.html#MereAggregation
apsillers