Вызов программного обеспечения GPL из не-GPL программного обеспечения


30

Могу ли я (законно) использовать программу, выпущенную под лицензией GPL, из другой программы, которую я пишу, и не должен соблюдать GPL (для программы, которую я пишу)?

Например, у меня есть графический интерфейс, который использует программу (которая находится под лицензией GPL), могу ли я скрыть код в графическом интерфейсе и даже продать его?

Ответы:


30

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

В примере, приведенном в вопросе, в котором вы написали оболочку GUI вокруг существующей программы командной строки, ваш GUI не связан условиями GPL, при условии, что это отдельная программа, которая запускает программу GPL в отделить процесс и взаимодействовать с ним только через существующий интерфейс (ы) - например, через командную строку и / или через stdin / stdout.

Некоторые важные биты из GPL FAQ :

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

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

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


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

Это зависит от того, как программа вызывает свои плагины. Например, если программа использует только простой fork и exec для вызова и взаимодействия с плагинами, тогда плагины являются отдельными программами, поэтому лицензия на плагин не предъявляет никаких требований к основной программе.

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

Если программа динамически связывает плагины, но связь между ними ограничивается вызовом «основной» функции плагина с некоторыми опциями и ожиданием его возврата, это пограничный случай.

Обратите внимание, что GPL применяется в полной мере к базовой программе командной строки в любом случае - если вы распространяете ее (в отличие от того, чтобы пользователи получали ее из другого источника), вы несете ответственность за предоставление копии GPL пользователям, делая ее объясните им, что программа командной строки находится под лицензией GPL (даже если оболочка графического интерфейса отсутствует), и предоставив им исходный код программы командной строки по запросу. Из GPL FAQ снова:

Если бы люди распространяли программное обеспечение под GPL, называя его «частью» системы, которую пользователи знают как частную собственность, пользователи могут быть не уверены в своих правах в отношении программного обеспечения под лицензией GPL. Но если они знают, что то, что они получили, это бесплатная программа плюс другая программа, бок о бок, их права будут ясны.

Стандартный отказ от ответственности: я не юрист и, даже если бы я был юристом, я не ваш адвокат. Если вам нужен точный ответ, проконсультируйтесь с соответствующим юристом, который имеет лицензию на практику в вашей юрисдикции.


1
Следует отметить, что позиция ФСФ по связыванию является позицией меньшинства. (И, IMO, это не имеет никакого смысла. Автоматизированный процесс не может создать новую работу.)
Дэвид Шварц

1
Однако ФФС действительно написал GPL. Это делает их мнение гораздо более актуальным. «Когда мы говорим X, мы имеем в виду {...}», как правило, принимаются в суде. «Когда вы сказали X, вы имели в виду {...}», не так.
MSalters

Что означает «использует только простую форк и exec для вызова» - кто-то может прояснить это?
Крунал

Итак, тогда GPL можно легко обойти, просто написав конвейерную оболочку для запуска кода GPL в отдельном процессе? Казалось бы, это делает GPL неактуальным и невозможным для применения. Что если я напишу свою собственную библиотеку и сошлюсь на нее вместе с библиотекой GPLed. Моя отдельная библиотека тоже становится лицензией GPL? Что, если я использую ссылку на чужую библиотеку при использовании кода под GPL? Их библиотека становится GPLed? Если вы ответите «нет» на любой из этих вопросов, это откроет огромную лазейку, позволяющую легко обойти GPL. Если вы ответите «да», значит вы нарушаете закон об авторском праве.
15:00

@Cerin - GPL действительно относится только к коду, который вы распространяете. Таким образом, хотя вы можете написать программу, которая ссылается как на лицензии GPL, так и на лицензии, не совместимые с GPL, вы не можете затем распространять эту программу среди третьих сторон, поскольку она будет выполнять код GPL и код, не совместимый с GPL, в одном и том же процессе. («Использование без перераспределения» многими рассматривается как лазейка в GPL, поскольку это означает, что веб-сервисы и т.п. могут полностью обойти GPL, поскольку они сами запускают программное обеспечение, а не дают его пользователям. GNU AGPL является попытка решить эту проблему.)
Дейв Шерохман

0

Зависит от того, что вы подразумеваете под этим?

  • скомпилируйте его в свой код
  • использовать общую библиотеку
  • запустить исполняемый файл

Это также зависит от того, под какой версией / вариантом GPL находится другой код.

  • GPL
  • LGPL
  • AGPL
  • Вероятно, другие

Правовая оговорка: я не юрист.


-2

Это зависит от того, как именно ваша программа «использует» программу GPL. Часто задаваемые вопросы по GPL имеют довольно длинное объяснение , но все же многое остается открытым для интерпретации:

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

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


Нет, они не «четко формируют единую программу». Пока базовая программа командной строки остается способной функционировать в отсутствие наложения графического интерфейса, они объединяются «простым объединением» и не являются «фактически единой программой». Обратите внимание на примеры в тексте, который вы процитировали - компилятор находится над ядром и не будет работать без него, но ядро ​​будет успешно работать в отсутствие компилятора.
Дейв Шерохман

1
@Dave: может ли основная программа командной строки функционировать при отсутствии оверлея GUI, может иметь значение, если бы вопрос о статусе лицензии программы командной строки был под вопросом - но вопрос о GUI, который совершенно бесполезен без программа командной строки, и поэтому верно, без тени сомнения, что они образуют одну программу.
Майкл Боргвардт

Давайте заменим один из примеров из приведенного вами раздела и посмотрим, как это работает. «... но вопрос касается компилятора, который совершенно бесполезен без ядра, и поэтому верно, без тени сомнения, что они образуют одну программу». За исключением, конечно, того, что в тексте, который вы цитировали, прямо говорится, что «вы можете рассматривать их как две отдельные программы». Если бы это был просто вопрос зависимости, то вы никогда не могли бы запускать закрытое программное обеспечение в Linux, потому что это программное обеспечение было бы «совершенно бесполезным» без (GPLed) ядра.
Дейв Шерохман

@Dave: Разумеется, за исключением того, что компиляторы и все виды закрытого программного обеспечения НЕ бесполезны без ядра Linux, поскольку они могут работать и работают на всем, что реализует стандарты библиотек POSIX и / или C, и предоставляют значительную собственную функциональность. , Совершенно иное дело, чем оболочка с графическим интерфейсом, которая существует исключительно для управления одной конкретной программой командной строки.
Майкл Боргвардт

3
Вы не правы в части GUI, хотя. Эта же оболочка GUI будет работать с другими программами CLI, в частности с более поздними версиями оригинала. Это актуально в этом контексте, потому что это означает, что первоначальные права GPL на основную программу все еще могут быть реализованы. Если я перекомпилирую его на 10% быстрее, CLI не помешает мне.
MSalters

-3

Нет.

Код GPL может использоваться только другим кодом GPL.

Ссылаясь на первую строку статьи GPL Википедии :

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

Кроме того, GPL имеет длину в несколько страниц и существует в нескольких версиях.


Предупреждение, личная напыщенная речь впереди!

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

Если вы хотите по-настоящему «бесплатную» лицензию в смысле «делайте что хотите», я рекомендую BSD или MIT… на самом деле, большинство других лицензий в порядке. Это только GPL, который действительно проблематичен, потому что насколько он ограничительный и как он заставляет других в это вмешиваться. Наконец, это слишком сложно.

Ах да, это также билет в один конец. GPL может использовать код / ​​библиотеки, лицензированные по большинству лицензий, но эти библиотеки / код не могут использовать код GPL по очереди.


Там написано "производные работы". Включает ли это программное обеспечение, которое динамически связывается с кодом GPL?
правостороннее

@WTP: определенно да - весь смысл LGPL в том, чтобы иметь другую лицензию, которая позволяет это.
Майкл Боргвардт

3
Оболочка графического интерфейса, обернутая вокруг программы командной строки, не является «производной работой», как определено в целях защиты авторских прав.
Дейв Шерохман

1
@ Дейв Шерохман - это не ясно. Принятый ответ на этот вопрос гласит: «ИМХО, по духу, чистой оберткой, которая просто раскрывает функциональность программы GPL, должна быть GPL». Это не просто технический аспект того, как они общаются, это намерение. Например, перевод книги - это создание производного произведения. Преобразование его в формат Kindle будет производной работой. Я мог видеть решение судьи, что добавление GUI создает производную работу. Осторожно.
Скотт Уитлок
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.