Модули Propietary в GPL и [закрытых] ядрах BSD

13
задан SystematicFrank 27 April 2010 в 12:53
поделиться

3 ответа

Как вы сказали, лицензия BSD, используемая ядром BSD, гораздо более либеральна, поэтому нетрудно связать туда любые лицензированные модули.

Для случая Linux правильно, что GPL сама по себе запрещает связывание несовместимого с GPL кода, который не разрешил бы связываться в проприетарных модулях или даже модулях LGPL.

Однако правообладатели Linux разрешают вам связать ваш модуль «LGPL» с любым частным кодом. Примером этого является драйвер nvidia:

/------------.-\
| Kernel       |
|              |
|   /--------\ |
|   | Module | |     /-------------------\
|   | (LGPL) <========> proprietary code |
|   \--------/ |     \-------------------/
\--------------/

Это все еще было бы незаконным под GPL в целом, но явно разрешено для ядра Linux. В качестве справки, посмотрите, что Линус Торвальдс говорит об этой проблеме здесь:

http://linuxmafia.com/faq/Kernel/private-kernel-modules.html

P.S. Связывание - это симметричная операция с точки зрения GPL.

15
ответ дан 2 December 2019 в 00:03
поделиться

Ограничения GPL активируются не самим связыванием.

Это дистрибутив «производной работы» работы GPL, которая активирует ограничения - вы должны предоставить любому, кому вы предоставили «производную работу», исходный код, необходимый для воссоздания «производной работы». Работа".

Теперь возникает вопрос, где проводится линия «производной работы» - что далеко не совсем ясно (и, вероятно, будет отличаться в разных юрисдикциях!). Например, если вы распространяете скомпилированный двоичный файл ядра Linux со своим статически связанным кодом как часть этого, совершенно ясно, что весь двоичный файл является «производной работой». С другой стороны, если вы распространяете только свой модуль , который использует только «опубликованные интерфейсы» ядра, то это, вероятно, не «производная работа».

Однако между этими двумя позициями много места. Например, если вы распространяете устройство, которое содержит флэш-память, содержащую ядро ​​Linux и скомпилированный двоичный драйвер, является ли полное содержимое флэш-памяти «производной работой»? Мне это действительно кажется, но мнения расходятся, и только окончательный ответ будет дан, когда он будет проверен в суде (и даже тогда, только для юрисдикции этого суда).

1
ответ дан 2 December 2019 в 00:03
поделиться

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

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

При этом необходимо, чтобы драйвер был написан таким образом, чтобы он был либо полностью самодостаточным, либо связывался только с библиотеками, которые допускают неограниченное связывание (LGPL, MIT и т. Д.). Это также означает, что ваш драйвер должен быть загружаемым модулем ядра, а не статически компилироваться в ядро.

0
ответ дан 2 December 2019 в 00:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: