android logo z napisem

Google planuje przybliżyć jądro Androida do Linuksa – kolejny pomysł na mniejszą fragmentację

Jedną z nowości w Androidzie ,8 wydanym w 2017 roku, był tak zwany Project Treble. Projekt ten miał ułatwić producentom aktualizowanie swoich urządzeń. Co z tego wyszło, wszyscy doskonale wiemy – problemy nie zniknęły. Nie zmienia to faktu, że od niemal 5 lat Google pracuje nad tym, aby fragmentacja Androida nie była tak duża, a nowe pogłoski mówią o tym, że producent poczyni kolejne kroki w tym kierunku.

Fragmentacja to efekt wolności wyboru

O tym, że system Zielonego Robocika ma wiele wspólnego z Linuksem, nikomu nie trzeba przypominać. Systemy te nie są jednak aż tak blisko siebie, jakby się mogło wielu osobom wydawać. Tradycyjne jądro Linuksa jest wielokrotnie rozwidlane zanim wyląduje na smartfonach z Androidem – co więcej, każdy z producentów robi to po swojemu.

Na pierwszym froncie jest Google, który dostosowuje jądro Linuksa pod rdzeń systemu Android. Następnie, do pracy przystępują dostawcy SoC, tacy jak Qualcomm, MediaTek czy Samsung, którzy dopasowują jądro pod swój układ. To jednak nie koniec zmian, gdyż trzeba jeszcze uwzględnić specyfikę poszczególnych podzespołów. Robią to producenci OEM, a przecież różnych modeli nie brakuje.

android linuks kernel
(źródło: ArsTechnica)

To jasno pokazuje, dlaczego fragmentacja systemu Android jest tak wielka. Duża różnorodność dostawców, specyfikacji i oprogramowania sprawia, że trudno to wszystko ujednolicić. Wolność wyboru, jaka panuje w świecie Zielonego Robocika, jest okupiona właśnie tą owianą złą sławą fragmentacją. Według oficjalnej dokumentacji, modyfikacje w kernelu są na tyle rozległe, że nawet 50% kodu potrafi być zmodyfikowana – trudno nad tym wszystkim zapanować.

Końcowy Android będzie bliżej Linuksa niż kiedykolwiek

Kilka dni temu odbyło się spotkanie online Linux Plumbers Conference 2021, na którym inżynier oprogramowania Google – Todd Kjos – zdradził kilka szczegółów dotyczących Androida 12. Szczególną uwagę poświęcił on rozwarstwieniu dotychczasowych wydań systemu i wyjaśnił, w jaki sposób Google zamierza się z tym problemem rozprawić.

Rozwiązaniem ma być nie tyle jeszcze większe zbliżenie jądra Androida do jądra Linuksa, ale sprawienie, że modyfikacje kernela nie oddalą za bardzo od siebie kodów źródłowych. Cel jest prosty – końcowy system na smartfonie, niezależnie od producenta, ma być bliżej niż kiedykolwiek głównego systemu Linuks.

Ma to być możliwe dzięki tak zwanemu Generic Kernel Image (GKI). Od teraz Google będzie rozwidlał oryginalne jądro Linuksa tylko raz, na potrzeby Androida, a producenci sprzętu i oprogramowania wprowadzą swoje modyfikacje za pomocą modułów wtyczek.

android linuks kernel
(źródło: ArsTechnica)

W ten oto sposób rdzeń systemu będzie w większym stopniu ujednolicony, co powinno w teorii pozwolić na szybsze i łatwiejsze aktualizowanie systemu. W tej chwili wszystko odbywa się w sposób synchroniczny – aktualizując wersję systemu, często aktualizowane są sterowniki i oprogramowanie producentów OEM. Dzięki GKI możliwe będzie robienie tych rzeczy asynchronicznie, a co za tym idzie – szybciej i skuteczniej.

Oczywiście proces ten będzie długotrwały i zanim uda się wypracować stabilny interfejs między modułami dostawców a ogólnym jądrem minie sporo czasu. Jeśli to wszystko brzmi skomplikowanie, to dlatego, że takie właśnie jest. Kjos przyznał podczas prezentacji, że jest to wieloletni proces, a przejście na nowe rozwiązanie na szeroką skalę rozpocznie się nie wcześniej niż w 2023 roku.

Na spotkaniu co prawda nie poruszono tego tematu, ale w kuluarach mówi się, że GKI może mieć związek z rozwinięciem Project Mainline. Jeśli okaże się to prawdą, to niewykluczone, że update jądra będzie wysyłany za pośrednictwem Usług Google Play i będzie tak samo łatwy w instalowaniu jak aplikacje.

smartfon google pixel 6 pro smartphone android
Google Pixel 6 (źródło: Google)

Oczekuje się, że nadchodzące smartfony z linii Pixel 6 będą pierwszymi z jądrem GKI i Linuks 5.10. Jest to o tyle istotna informacja, że dotychczasowe opóźnienie we wprowadzaniu jąder Linuksa wynosiło średnio ponad 2 lata. Z kolei Linuks Kernel 5.10 miał swój debiut w grudniu 2020 roku. Jak widać – różnica jest spora.

To będzie trudne, ale warto poczekać

Trudno powiedzieć, czy planowane działania pozwolą Google na osiągnięcie celu. Wyodrębnianie poszczególnych elementów systemu w celu ich uniezależnienia od dostawców nie jest przecież niczym nowym, a fragmentacja wcale nie zniknęła.

Nie można jednak nie zauważyć, że w ostatnich latach widać pod tym względem spory postęp. Już poprzednie wydania Androida radziły sobie z tym zaskakująco dobrze. Warto też pamiętać, że wielu producentów w tym roku ogłosiło, że ich urządzenia dostaną dłuższe wsparcie.

Powyższe wynika nie tylko z troski producenta o zadowolenie użytkownika, ale również z faktu, że ostatnie poczynania inżynierów Google sprawiają, że aktualizowanie staje się faktycznie prostsze, a komplikacji z tym związanych jest coraz mniej.

Liczę, że kolejne rozwiązania wprowadzone do Androida pozwolą całkowicie wyeliminować problem fragmentacji. Być może to naiwne podejście, ale tego bym sobie właśnie życzył. Z drugiej strony mamy jednak producentów OEM, którym nie zawsze jest na rękę dostarczać aktualizacje. Niewspierane urządzenie jest idealnym kandydatem do wymiany na nowe, a jak to mówią „pieniądze nie śmierdzą”.