W jaki sposób oprogramowanie półp własnościowe może być oparte na jądrze Linux?

9

Jeśli dobrze rozumiem, jądro Linuksa jest licencjonowane na licencji GPL, co oznacza, że ​​jeśli ktoś coś na tym opiera, musi także licencjonować całą pracę pochodną na licencji GPL, umożliwiając każdemu swobodne modyfikowanie i / lub redystrybucję ich pracy pochodnej.

Na przykład wszystkie wydania Androida oparte są na LK. Czy to nie znaczy, że cała wersja i wszystkie jej komponenty również muszą być wydane na licencji GPL?

Na przykład większość wydań na Androida jest dostarczana z zastrzeżonymi komponentami. Czy to nie narusza GPL? Czy cała praca nad pochodnymi nie musi być wydana na licencji GPL?

Na przykład w Ubuntu musisz pobrać kodeki MPEG po instalacji. Zakładam, że dzieje się tak, ponieważ MPEG jest zastrzeżony, a zatem licencja MPEG jest niezgodna z GPL, więc nie mogą być zawarte w tej samej wersji?

Jak radzą sobie z tym wersje Androida?

Revetahw mówi: Przywróć Monikę
źródło
2
Krótka wersja jest taka, że ​​„wirusowa” jakość GPL może działać tylko na pochodnych kodach na podstawie licencji, a obszar użytkownika wywołujący jądro nie czyni z niego pochodnej pracy jądra.
Tom Hunt
Rozumiem, jądro i inne oprogramowanie na nim mają osobne licencje, a GPL na to pozwala.
Revetahw mówi: Przywróć Monikę
Chciałbym również dodać, że według mojego zrozumienia istnieje dość duża różnica między GPL v2 a GPL v3, a Linus nadal korzysta z GPL v2, która jest bardziej liberalna niż ta ostatnia. Oto trochę informacji na ten temat. Dwie pierwsze odpowiedzi wydają się być całkiem dobre.
KGIII

Odpowiedzi:

9

Po pierwsze, musisz wyjaśnić, że kod Google'a Androida i kod jądra Linuksa są osobne. Sam Android jest licencjonowany na podstawie licencji Apache 2.0, która jest dozwolona, ​​i słowami Wikipedii :

Licencja Apache jest dopuszczalna, ponieważ nie wymaga pracy pochodnej oprogramowania ani modyfikacji oryginału w celu dystrybucji za pomocą tej samej licencji.

W związku z tym żadna modyfikacja Androida przez dostawców nie jest zwykle udostępniana.

Po drugie, w przypadku jądra Linuksa, na licencji GPLv2, kod jest udostępniany publicznie, albo zakopany gdzieś w urządzeniu (mniej prawdopodobne), albo dostępny do pobrania na niejasnej stronie w witrynie producenta poświęconej kodom open source w ich produkty.

Istnieje jednak duże zastrzeżenie dla publicznie dostępnego kodu jądra Linux - zastrzeżone sterowniki i moduły jądra o podobnej funkcjonalności. Jądro Linux może ładować binarne obiekty BLOB dystrybuowane na podstawie licencji zastrzeżonej, a kod źródłowy takich obiektów BLOB niezbędnych do uruchomienia urządzenia nie jest oczywiście dystrybuowany. Podsumowując, nawet jeśli uda ci się zdobyć źródło jądra właściwe dla twojego urządzenia, niekoniecznie będziesz w stanie użyć go do skompilowania własnego działającego systemu operacyjnego opartego na Linuksie.


Przyzwalający, w kontekście

Co dokładnie rozumiemy przez zezwolenie na korzystanie ? Z twoich komentarzy sądzę, że rozumiesz, że oznacza to możliwość uruchamiania innego dozwolonego lub zastrzeżonego oprogramowania. Ale to źle.

Dopuszczalne w tym kontekście oznacza, jak dozwolone jest robienie tego, co chcesz z kodem źródłowym.

GPL nie jest dozwolona w tym sensie, że jesteś prawnie zobowiązany do publikowania wszelkich modyfikacji kodu licencjonowanego przez GPL. Nie pozwala ci brać wkładu wszystkich, wprowadzać w nim zmian (bez względu na to, czy jest lepszy czy gorszy) i ukrywać. Jeśli zamierzasz rozpowszechniać plik binarny, musisz również rozpowszechniać kod źródłowy. Ponieważ nie pozwala na dokonywanie prywatnych zmian, dlatego nie jest dozwolony .

Licencje Apache i BSD są przykładami licencji permisywnych. W przeciwieństwie do ściśle niepodatnej GPL, pozwala na modyfikację kodów licencjonowanych na ich podstawie i zachowanie go dla siebie, innymi słowy, jest dopuszczalna . Oznacza to, że możesz pobrać kod Androida, nawet jeśli zmienisz go wystarczająco, aby był nierozpoznawalny, możesz go zachować samodzielnie. I właśnie to robią dostawcy urządzeń z Androidem.

Oxwivi
źródło
1
Nie. dzieje się tak dlatego, że programy działające tylko na jądrze (i korzystające z wywołań systemowych jądra) nie są pochodnymi jądra. Kod użytkownika systemu Android działa tylko w jądrze Linuksa.
cas
1
Jądro @Fiksdal Linux jest licencjonowane na licencji GPL, a nie licencja permisywna. W systemie Linux możesz uruchomić system Android i inne oprogramowanie zezwalające, w taki sam sposób, w jaki możesz używać zastrzeżonego sterownika Nvidii na swoim zwykłym komputerze.
Oxwivi
1
@Fiksdal Lub lepszy przykład: Android uruchamia zastrzeżone i binarne pliki binarne w systemie Linux w taki sam sposób, jak w przypadku Steam i Google Chrome.
Oxwivi
1
@Fiksdal, tak, dosłownie jest osobny. Zastanów się: to samo jądro może uruchamiać na nim Ubuntu lub inne regularne dystrybucje Linuksa. Jądro Linux to po prostu jądro. Ma to na celu uruchomienie na nim wszelkiego rodzaju programów.
Oxwivi
1
@Fiksdal Zredagowałem odpowiedź, sprawdź ją.
Oxwivi