Вы можете использовать программу под 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. Но если они знают, что то, что они получили, это бесплатная программа плюс другая программа, бок о бок, их права будут ясны.
Стандартный отказ от ответственности: я не юрист и, даже если бы я был юристом, я не ваш адвокат. Если вам нужен точный ответ, проконсультируйтесь с соответствующим юристом, который имеет лицензию на практику в вашей юрисдикции.
Зависит от того, что вы подразумеваете под этим?
Это также зависит от того, под какой версией / вариантом GPL находится другой код.
Правовая оговорка: я не юрист.
источник
Это зависит от того, как именно ваша программа «использует» программу GPL. Часто задаваемые вопросы по GPL имеют довольно длинное объяснение , но все же многое остается открытым для интерпретации:
Я думаю, что в вашем примере GUI, который существует главным образом для вызова GPL-программы из командной строки, эти две программы образуют единую программу, поэтому вам придется выпустить свой код под GPL.
источник
Нет.
Код GPL может использоваться только другим кодом GPL.
Ссылаясь на первую строку статьи GPL Википедии :
Кроме того, GPL имеет длину в несколько страниц и существует в нескольких версиях.
Предупреждение, личная напыщенная речь впереди!
Мне лично очень не нравится лицензия GPL, потому что она очень ограниченная и вирусоподобная. Они называют это «бесплатным», но на самом деле все наоборот, код GPL не может использоваться ничем, кроме другого кода GPL. Таким образом, принуждение других проектов в GPL или переписывание целых библиотек, независимо от того, является ли ваш текущий проект открытым или нет. Были огромные проекты с открытым исходным кодом, такие как, например, freeBSD, которые были вынуждены переписать сотни тысяч строк кода Linux, потому что их лицензия была несовместима, она была слишком «бесплатной» в смысле «делай что хочешь», что, очевидно, очевидно не совместим с GPL.
Если вы хотите по-настоящему «бесплатную» лицензию в смысле «делайте что хотите», я рекомендую BSD или MIT… на самом деле, большинство других лицензий в порядке. Это только GPL, который действительно проблематичен, потому что насколько он ограничительный и как он заставляет других в это вмешиваться. Наконец, это слишком сложно.
Ах да, это также билет в один конец. GPL может использовать код / библиотеки, лицензированные по большинству лицензий, но эти библиотеки / код не могут использовать код GPL по очереди.
источник