Вы можете использовать программу под 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. Но если они знают, что то, что они получили, это бесплатная программа плюс другая программа, бок о бок, их права будут ясны.
Стандартный отказ от ответственности: я не юрист и, даже если бы я был юристом, я не ваш адвокат. Если вам нужен точный ответ, проконсультируйтесь с соответствующим юристом, который имеет лицензию на практику в вашей юрисдикции.