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

StackOverflow https://stackoverflow.com/questions/1854843

Вопрос

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

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

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

  1. Они создают собственную библиотеку для декодирования мультимедиа и публикуют примеры кода.
  2. Кто-то (разработчик с открытым исходным кодом) создает «плагин», который связан с этой проприетарной библиотекой для кода под лицензией GPL, такого как XBMC, Mplayer или VLC.
  3. Могут ли они утверждать, что, поскольку они сначала создали проприетарную библиотеку (точно так же, как 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-файла, созданного с использованием исходного кода под лицензией GPL, в Windows/Mac/Iphone/PSP3 также нарушает дух GPL?

Это было полезно?

Решение

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

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

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

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

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

И:

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

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

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

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

...

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top