Подтвердить что ты не робот

Зависит ли от GPL-кода связь с собственной библиотекой?

Microsoft создает свои окна и библиотеку DLL MFC и т.д. Разработчик с открытым исходным кодом создает новое приложение MFC и выпускает исходный код как GPL. Приложение должно связываться с MS DLL/библиотеками для работы в Windows, но я не думаю, что кто-то может утверждать, что теперь мы имеем право заставить Microsoft GPL их DLL.

Означает ли это, что лицензия GPL действительно зависит от того, какой из них сначала создан? Если сначала создается собственная библиотека (например, DLL Windows), которая не содержит ссылок, а также код GPL и позже с ним связана программа GPL, то программа GPL не может преобразовать запатентованную библиотеку в GPL, хотя проприетарный код "связан" с кодом GPL.

Если это так, может ли компания такая NVidia или RealNetworks сделать следующее? Предположим, что им нравится хранить приватную библиотеку движка для декодирования медиафайлов HDDecoding, но они также хотят "использовать" код GPL с открытым кодом для демонстрации своего оборудования.

  • Они создают запатентованную библиотеку для декодирования мультимедиа и выпуска некоторых примеров кода.
  • Кто-то (разработка с открытым исходным кодом) создает "плагин", который связан с этой запатентованной библиотекой для кода GPLed, такого как XBMC, Mplayer или VLC.
  • Могут ли они утверждать, что, поскольку они сначала создали проприетарную библиотеку (так же, как MS создают все библиотеки DLL), программы GPL, которые ссылаются на их собственный код, не скрывают их в коде GPL.

Можно теоретически утверждать, что разработчик с открытым исходным кодом, который создает файл GPL vlc.exe, который ссылается на библиотеку медиадекодеров NVidia, нарушает лицензию GPL.

Означает ли это, что все программы GPL, работающие в Windows, такие как VLC, git, cygwin и т.д., все нарушают лицензию GPL, потому что им определенно нужно связать с проприетарными библиотеками Microsoft Windows для запуска.

Случай 2: что с этим не так:

NVidia может создать новую библиотеку абстракции оборудования, которая скрывает последние графические функции. Они также создают драйвер FreeBSD с этой библиотекой и освобождают исходный код драйвера BSD, но не исходный код библиотеки.

Кто-то (разработчик Linux) может реализовать драйвер linux, который связывается с этой библиотекой, для создания графического драйвера NVidia для Linux. Но так как NVidia этого не сделала, они могут сохранить источник библиотеки "скрытым", включив поддержку Linux.

Это, безусловно, нарушает дух GPL.

Означает ли это, что запуск любого exe, созданного с использованием источника GPLed в Windows/Mac/Iphone/PSP3, также нарушает дух GPL?

4b9b3361

Ответ 1

Из часто задаваемых вопросов GNU GPL:

Могу ли я применить GPL при написании плагин для несвободной программы?

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

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

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

и

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

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

Критерии того, что считается "системная библиотека" варьируется между разные версии GPL. GPLv3 явно определяет "Системные библиотеки" в разделе 1, чтобы исключить его из определение "Соответствующий источник". GPLv2 говорит следующее, ближе к концу раздела 3:

Однако, как особое исключение, Исправлен исходный код включать все, что обычно распределенных (в любом источнике или бинарная форма) с основными компонентами (компилятор, ядро ​​и т.д.) операционной системы, на которой исполняемые прогоны, если только этот компонент сам сопровождает исполняемый файл.

...

Ответ 2

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

GPL говорит, что если вы распространяете программу GPL'd или ее производную, вы также должны предоставить источник программе или производной в соответствии с условиями, эквивалентными GPL (для людей, которым вы распространяли программу/производную).

Это означает, что если я распространяю вашу программу GPL, связанную с некоторым кодом Microsoft, я должен предоставить источник всему шарику воска или подвергнуть вас судебному преследованию за нарушение ваших авторских прав. Обратите внимание, что пока Microsoft является третьей стороной, это не накладывает на них никаких ограничений (конечно!). Если у меня нет доступа к коду Microsoft, что, скорее всего, я не могу распространять эту производную работу, не нарушая вашу лицензию.

Ответ 3

IANAL, но порядок творения не имеет значения. Если связывание двух двоичных файлов будет являться нарушением GPL, тогда GPL не допускается, независимо от того, что было создано вначале.

Случай 1 рассматривается с помощью исключения в системной библиотеке, как цитирует Майкл Барр. Обратите внимание, что это не зависит от времени - если бы это не было исключение для системной библиотеки, для GPL-кода, написанного в 2003 году в Windows 98 (который был написан до кода GPLed), было бы так же просто нарушением GPL, как и его было бы запустить его на Vista (который был написан после кода GPLed).

Я согласен с тем, что случай 2 нарушает дух GPL, но, поскольку термин используется GPL, драйвер NVidia не связан с ядром Linux, потому что он загружается как модуль. Вы не сможете распространять ядро ​​Linux с несвязанным в него несвязанным двоичным файлом NVidia, но в любом случае распределяет статически связанные ядра в эти дни?

Ответ 4

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

Ответ 5

Просто это означает, что вы не можете применять GPL поверх кода или библиотек, которые не являются совместимыми с GPL и распространять скомпилированную комбинированную работу, если вы не применили ссылку .

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

Это исключение, конечно, зависит от несвободных библиотек, позволяющих распространять связанные с ним программы (особенно статически).

Итак, чтобы ответить на ваш первый вопрос, нет.. это не сценарий "курица или яйцо". То, что я рекомендую, - это когда вы сталкиваетесь с возможностью написать исключение, возможно, лучше просто выбрать лицензию с меньшими ограничениями, например, лицензию BSD для APA или 3.

Во-вторых, нет, вы не можете просто применить GPL к своему коду для изменения лицензии на то, с чем вы связываетесь. Опять же, мы возвращаемся к исключению связи, которое вы несете ответственность за предоставление.

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

Это одна из самых больших причин, по которой Linux (как в ядре) остается только GPL v2.