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

9

Если я правильно понимаю, ядро ​​Linux лицензируется по GPL, а это означает, что если кто-то на нем основывает что-либо, он также должен лицензировать всю производную работу под GPL, предоставляя любому свободу изменять и / или распространять свою производную работу.

Например, все выпуски Android основаны на LK. Не означает ли это, что весь выпуск и все его компоненты также должны быть выпущены под лицензией GPL?

Например, большинство версий Android поставляются с фирменными компонентами. Разве это не нарушает GPL? Разве вся производная работа не должна быть выпущена под GPL?

Например, в Ubuntu вы должны загрузить кодеки MPEG после установки. Я предполагаю, что это потому, что MPEG является частной собственностью, и что лицензия MPEG, следовательно, несовместима с GPL, поэтому они не могут быть включены в один и тот же выпуск?

Как релизы Android обходят это?

Revetahw говорит восстановить Монику
источник
2
Короткая версия заключается в том, что «вирусное» качество GPL может влиять только на производные работы кода по лицензии, а пользовательская область, называющая ядро, не делает его производной работы ядра.
Том Хант
Я вижу, что ядро ​​и другое программное обеспечение на нем имеют отдельные лицензии, и GPL позволяет это.
Revetahw говорит восстановить Monica
Я также хотел бы добавить, что, насколько я понимаю, между GPL v2 и GPL v3 существует довольно большое различие, и Линус продолжает использовать GPL v2, который является более разрешающим, чем последний. Вот немного информации об этом. Лучшие два ответа кажутся довольно хорошими.
KGIII

Ответы:

9

Во-первых, вы должны четко понимать, что код Google для Android и код ядра Linux являются отдельными. Сам Android лицензируется под Apache License 2.0, которая является разрешающей, и, по словам Википедии :

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

Таким образом, ни одна из модификаций Android от поставщиков обычно не доступна.

Во-вторых, в случае ядра Linux, лицензируемого по GPLv2, код публикуется, либо скрывается где-то внутри устройства (менее вероятно), либо доступен для загрузки на какой-то непонятной странице веб-сайта производителя, посвященной открытым исходным кодам в их продукты.

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


Разрешительный, в контексте

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

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

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

Лицензии Apache и BSD являются примерами разрешительных лицензий. В отличие от строго недопустимой лицензии GPL, она позволяет вам вносить любые изменения в коды, лицензируемые под ними, и сохранять ее при себе, другими словами, она разрешительна . То есть, вы можете взять код Android, даже если вы измените его настолько, чтобы сделать его неузнаваемым, вы можете оставить его самостоятельно. И это именно то, что делают производители устройств Android.

Oxwivi
источник
1
нет. это потому, что программы, работающие только на ядре (и использующие системные вызовы ядра), не являются производными от ядра. Пользовательский код Android просто работает на ядре Linux.
Cas
1
Ядро @Fiksdal Linux распространяется по лицензии GPL, а не по разрешительной лицензии. Вы можете запускать Android и другое разрешающее программное обеспечение в Linux так же, как вы можете использовать проприетарный драйвер Nvidia на своем обычном ПК.
Oxwivi
1
@Fiksdal Или лучшим примером было бы то, что Android запускает проприетарные и разрешающие двоичные файлы в Linux так же, как и в Steam и Google Chrome.
Oxwivi
1
@Fiksdal, да, это буквально отдельно. Учтите это: одно и то же ядро ​​может запускать либо Ubuntu, либо другие обычные дистрибутивы Linux поверх него. Ядро Linux - это просто ядро. Он предназначен для запуска всевозможных программ поверх него.
Oxwivi
1
@Fiksdal Я отредактировал ответ, проверь его.
Oxwivi