Android, het populaire smartphone OS, wordt door sommigen gezien als de meest succesvolle Linux-versie tot nu toe. Het enige probleem met die redenering is dat Android zich onttrekt aan de belangrijkste Linux-trends.

Dat de wegen van Android en Linux gescheiden waren viel veel mensen pas op toen Ryan Paul in een artikel op Ars Technica schreef dat “Google engineer Patrick Brady onomwonden stelde dat Android niet Linux is”.

Brady overdreef het wel een beetje. Android is Linux. Om precies te zijn: versie 2.2 (Froyo) draait op Linux-kernel 2.6.32. Om de Android ontwikkelaarssite aan te halen: Dalvik, de op Java gebaseerde interface en gebruiksomgeving van Android, “gebruikt de Linux-kernel voor onderliggende functionaliteit zoals threading en low-level memory management”. Of, om het wat simpeler te maken: zonder Linux is er geen Android.

Maar Google heeft Android wel een eigen richting gegeven, en die richting is niet compatibel met de mainstream Linux-kernel. Greg Kroah-Hartman, hoofd van het Linux Driver Project en ontwikkelaar bij Novell, schreef op zijn blog: “De code van de Android-kernel is meer dan alleen een paar rare drivers in de drivers/staging/android subdirectory in de kernel. Om een werkend Android-systeem te krijgen, heb je het nieuwe lock-type nodig dat ze hebben gemaakt, en een ingang in de kern van het systeem voor hun beveiligingsmodel. Om een driver te kunnen schrijven waarmee je hardware onder Android kunt laten werken, moet je die fatsoenlijk integreren in die nieuwe lock, en soms ook in dat bizarre beveiligingsmodel. Oh, en dan heb je ook nog die totaal verschillende framebuffer driver infrastructuur.” Je begrijpt: dat viel niet zo lekker in Android-kringen.

De onenigheid werd gevoed door minstens twee gevoelige punten. De ene was dat de Android-ontwikkelaars bij Google een eigen manier hadden gevonden om met de energievoorziening om te gaan via WakeLocks. De andere had te maken met een opmerking van Google’s open source engineering manager Chris DiBone, die beweerde dat de Android programmeurs zo druk waren met Android-apparaten dat coördinatie met de ontwikkelaars van de Linux-kernel er een beetje bij was ingeschoten.

Sindsdien is er onder ontwikkelaars heel wat discussie gevoerd over de juiste manier om specifieke Android-code in Linux af te handelen. Linux Torvalds liet de Android drivers zelfs uit de hoofd Linux-kernel verdwijnen.

Google probeerde de zaak te redden door twee nieuwe Android-ontwikkelaars aan te nemen die nauwer samenwerken met het ontwikkelingsteam van de Linux-kernel om Android weer gelijk te trekken met Linux. Op dat moment leek het erop dat Android en Linux elkaar weer in de armen zouden vallen.

Maar het heeft niet zo mogen zijn. Tijdens LinuxCon begon ik erover bij wat Linux-kernel engineers.

Google kernel ontwikkelaar Ted Ts’o zei dat het volgens hem niet zo’n probleem is dat Android ook wat niet-standaard software bevat. “Ik kan geen enkele Linux distro bedenken die nu beschikbaar is, inclusief Red Hat, waarin niet een paar pakketten zijn toegevoegd die buiten de lijn vallen.” En: “Ik hoor niemand zeggen, oh my god, Red Hat of Novell heeft de kernel gespleten.”

Vanuit het oogpunt van Ts’o is het werkelijke probleem dat “Android zo succesvol is, en dat heeft ertoe geleid dat veel hardware leveranciers device drivers voor Android zijn gaan schrijven. WakeLock calls in device drivers leveren een probleem op als mensen elders code willen indienen.” Waar het op neerkomt is dat chip-leveranciers als Qualcomm en Texas Instruments twee versies van Linux moeten onderhouden, een met en een zonder WakeLocks. Die bedrijven zitten daar niet bepaald op te wachten.

Chris Mason, director of Linux kernel engineering bij Oracle, vertelde dat dit soort conflicten niets nieuws zijn. James Bottomley, engineer bij Novell en Linux kernel maintainer, zei over de noodzaak om Android soepel te laten samenwerken met de rest van Linux dat het veel moeite gaat kosten, maar dat het voor de community zeker de moeite waard is er tijd in te steken.

Helaas is tijd volgens Ts’o niet iets waar het Android-team veel van over heeft. Daar zijn ze veel te druk met het bijbenen van de hardware vereisten. Volgens Ts’o is er weliswaar “nog geen 64K aan patches geweest, maar wel al meer dan 1800 mailtjes discussie.” Ts’o wekt de indruk dat het Android-team er een beetje genoeg van begint te krijgen. “Android is een klein team. Ze hebben het gevoel dat ze heel veel tijd kwijt zijn met pogingen hun code in de hoofd Linux-kernel opgenomen te krijgen.”

Op de Linux Kernel Mailing List (LKML) zie Ts’o later: “Weet je, je hoeft niet te wachten op de Android ontwikkelaars. Je (en anderen die de stock upstream kernel met Android-apparaten willen gebruiken) kunnen ook net zo makkelijk proberen dat ‘beetje meer moeite’ zelf te doen: doe je open source ding en los je eigen probleem op.” Op LKML wees Ts’o er ook op dat veelgebruikte Linux-distributies vaak hun eigen niet-standaard code gebruiken. “Kunnen we alsjeblieft ophouden met die nonsense over splitsingen?”

Tegelijkertijd heeft Google natuurlijk wel wat anders aan zijn hoofd, zoals een heel gevecht over Android-patenten met Oracle. Uiteindelijk denk ik dat Android en de mainstream Linux-kernel gewoon weer synchroon gaan lopen. Maar het zal niet volgende week zijn, en ik vermoed dat er nog heel wat verhitte debatten over tafel moeten gaan voor het er een keer van komt. Bron: Techworld