Як напівприватне програмне забезпечення може базуватися на ядрі Linux?


9

Якщо я правильно розумію, ядро ​​Linux має ліцензію відповідно до GPL, а це означає, що якщо хтось базується на ньому, він також повинен ліцензувати всю похідну роботу під GPL, що дозволяє будь-кому вільно змінювати та / або перерозподіляти свої похідні роботи.

Наприклад, усі версії Android базуються на LK. Чи це не означає, що весь реліз та всі його компоненти також повинні бути випущені під GPL?

Наприклад, більшість Android випускає судно з власними компонентами. Це не порушує GPL? Чи не потрібно весь похідний твір випускати під GPL?

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

Як випуски Android обходять це?


2
Коротка версія полягає в тому, що «вірусна» якість GPL може діяти лише на похідних роботах коду за ліцензією, а користувацька країна, яка називає ядро, не робить її похідною роботою ядра.
Том Хант

Я бачу, ядро ​​та інше програмне забезпечення поверх нього мають окремі ліцензії, і GPL дозволяє це.
Revetahw каже: Відновити Моніку

Я хотів би також додати, що, наскільки я розумію, існує велика різниця між GPL v2 та GPL v3, і Linus продовжує використовувати GPL v2, який є більш дозволеним, ніж останній. Ось трохи інформації з цього приводу. Два найкращих відповіді здаються досить гарними.
KGIII

Відповіді:


9

По-перше, вам повинно бути зрозуміло, що код Android від Google і код ядра Linux є окремими. Сам Android має ліцензію під ліцензією Apache License 2.0, яка є вседозволеною, і словами Вікіпедії :

Ліцензія Apache є вседозволеною тим, що вона не потребує похідної роботи програмного забезпечення або модифікацій оригіналу для розповсюдження за допомогою тієї самої ліцензії.

Таким чином, жодна з модифікацій Android від постачальників зазвичай не доступна.

По-друге, у випадку ядра Linux, що має ліцензію на основі GPLv2, код випускається для загального користування, або закопаний десь у пристрої (менш імовірно), або доступний для завантаження на якійсь незрозумілій сторінці на веб-сайті постачальника, присвяченому кодам відкритого коду в їх продукція.

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


Вседозволений, в контексті

Що саме ми маємо на увазі під дозвільною ліцензією ? З ваших коментарів, я думаю, ви вважали, що це означає запускати інше вседозволене або захищене ліцензією програмне забезпечення. Але це неправильно.

Дозвільне в цьому контексті означає, наскільки допустимо дозволяти вам робити так, як вам хочеться з вихідним кодом.

GPL не є дозвольним у тому сенсі, що ви юридично зобов’язані оприлюднювати будь-які зміни, внесені вами до ліцензованого коду GPL. Це не дозволяє вам брати внесок кожного, вносити зміни до нього (незалежно від того, щоб зробити це краще чи гірше) та приховати його. Якщо ви збираєтесь поширювати двійковий код, ви також повинні поширювати вихідний код. Оскільки це не дозволяє вам вносити приватні зміни, тому це не є дозвольним .

Ліцензії Apache та BSD - приклади дозвільних ліцензій. Навпаки суворо недозволеної GPL, вона дозволяє вносити будь-які зміни до ліцензованих кодів, що містяться під ними, і зберігати їх для себе, іншими словами, це вседозволено . Тобто ви можете взяти код Android, навіть якщо ви його досить змінили, щоб зробити його невпізнанним, ви можете зберігати його самостійно. Саме цим займаються виробники пристроїв Android.


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.