Зависит ли связывание кода GPL с проприетарной библиотекой, которая создается первой? [закрытый]

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

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

Если это так, может ли компания Nvidia или RealNetworks сделать следующее? Предположим, им нравится держать собственную библиотеку hddecoding media decoding engine закрытой, но они также хотят "использовать" открытый GPLed-код для продемонстрируйте свое оборудование.

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

теоретически можно утверждать, что разработчик opensource, который создает GPL vlc.exe-файл, который связан с библиотекой NVIDIA proprietary media decoder, нарушает лицензию 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?

5 ответов


из GNU GPL FAQ:

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

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

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

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

и:

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

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

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

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

...


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

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

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


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

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

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


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


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

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

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

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

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

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

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