Linus Torvalds wyjaśnił problemy związane z implementacją ZFS dla jądra Linuksa

Podczas dyskusji testy harmonogramu zadań, jeden z uczestników dyskusji podał przykład, że pomimo stwierdzeń o konieczności zachowania kompatybilności przy rozwijaniu jądra Linuksa, ostatnie zmiany w jądrze zakłóciły poprawną pracę modułu”ZFS w systemie Linux„. Linus Torvalds odpowiedziałże zasada „Nie łamać użytkowników„ odnosi się do zachowania zewnętrznych interfejsów jądra używanych przez aplikacje przestrzeni użytkownika, a także samego jądra. Nie obejmuje to jednak oddzielnie opracowanych dodatków innych firm do jądra, które nie zostały przyjęte do głównego składu jądra, których autorzy muszą monitorować zmiany w jądrze na własne ryzyko i ryzyko.

Jeśli chodzi o projekt ZFS na Linuksie, Linus nie zalecał używania modułu zfs ze względu na niezgodność licencji CDDL i GPLv2. Sytuacja jest taka, że ​​ze względu na politykę licencyjną Oracle szanse, że ZFS kiedykolwiek uda się wejść do głównego jądra, są bardzo małe. Warstwy proponowane w celu ominięcia niezgodności licencyjnych, które przekładają dostęp do funkcji jądra na kod zewnętrzny, są wątpliwym rozwiązaniem – kontynuują prawnicy kłócić się o tym, czy ponowny eksport funkcji jądra GPL poprzez opakowania skutkuje utworzeniem dzieła pochodnego, które musi być rozpowszechniane na licencji GPL.

Jedyną opcją, w której Linus zgodziłby się na przyjęcie kodu ZFS do głównego jądra, jest uzyskanie oficjalnej zgody Oracle, poświadczonej przez głównego prawnika, lub jeszcze lepiej, samego Larry'ego Ellisona. Rozwiązania pośrednie, takie jak warstwy pomiędzy jądrem a kodem ZFS, są niedozwolone ze względu na agresywną politykę Oracle dotyczącą własności intelektualnej interfejsów programistycznych (np. test z Google w sprawie API Java). Ponadto Linus uważa chęć korzystania z ZFS jedynie za hołd dla mody, a nie korzyści techniczne. Testy porównawcze, które sprawdził Linus, nie obsługują ZFS, a brak pełnego wsparcia nie gwarantuje długoterminowej stabilności.

Przypomnijmy, że kod ZFS jest rozpowszechniany na bezpłatnej licencji CDDL, która jest niezgodna z GPLv2, co nie pozwala na integrację ZFS na Linuksie z główną gałęzią jądra Linuksa, ponieważ mieszanie kodu na licencjach GPLv2 i CDDL jest niedopuszczalne. Aby ominąć tę niezgodność licencyjną, projekt ZFS na Linuksie zdecydował się na dystrybucję całego produktu na licencji CDDL w postaci oddzielnie ładowanego modułu, który jest dostarczany oddzielnie od jądra.

Możliwość dystrybucji gotowego modułu ZFS w ramach zestawów dystrybucyjnych budzi wśród prawników kontrowersje. Prawnicy z organizacji Software Freedom Conservancy (SFC) rozważże dostarczenie binarnego modułu jądra w ramach dystrybucji stanowi produkt połączony z licencją GPL, z wymogiem, aby powstałe w ten sposób dzieło było rozpowszechniane na licencji GPL. Prawnicy kanoniczni Nie zgadzam się i stwierdza, że ​​dostawa modułu zfs jest akceptowalna, jeśli komponent jest dostarczany jako samodzielny moduł, oddzielny od pakietu jądra. Firma Canonical zauważa, że ​​dystrybucje od dawna stosują podobne podejście do dostarczania zastrzeżonych sterowników, takich jak sterowniki NVIDIA.

Druga strona zaprzecza, że ​​problem kompatybilności jądra z zastrzeżonymi sterownikami rozwiązuje się poprzez dostarczenie małej warstwy dystrybuowanej na licencji GPL (do jądra ładowany jest moduł z licencji GPL, który ładuje już zastrzeżone komponenty). W przypadku ZFS taką warstwę można przygotować tylko pod warunkiem dostarczenia wyjątków licencyjnych od Oracle. W systemie Oracle Linux niezgodność z licencją GPL jest rozwiązywana przez firmę Oracle, zapewniając wyjątek licencyjny, który usuwa wymóg licencjonowania łączonych prac w ramach CDDL, ale wyjątek ten nie ma zastosowania do innych dystrybucji.

Rozwiązaniem jest dostarczenie w dystrybucji jedynie kodu źródłowego modułu, co nie prowadzi do łączenia i jest uznawane za dostawę dwóch oddzielnych produktów. W Debianie wykorzystuje się do tego system DKMS (Dynamic Kernel Module Support), w którym moduł jest dostarczany w kodzie źródłowym i montowany w systemie użytkownika natychmiast po zainstalowaniu pakietu.

Źródło: opennet.ru

Dodaj komentarz