Je tu Android, je open, pojďme vyvíjet
Přesně 5. listopadu 2007 se Google nechal slyšet, že plánuje během krátké doby uvolnit nový operační systém postavený na Linuxu s názvem Android. Měl být upravený pro běh na mobilních zařízeních. Byla to vcelku velká událost. Prakticky první linuxový operační systém, který měl potenciál dostat se dál než jeho předchůdci a navíc tu bylo jedno obrovské plus, vývoj aplikací měl probíhat v Javě, celý operační systém měl být open source a to ještě pod velmi volnou licencí Apache free-software and open-source license.
Znělo to jako vynikající nápad a Google asi o měsíc později uvolnil SDK pro celou platformu. To obsahovalo všechno, co bylo potřeba pro vývoj, od emulátoru po moduly do Eclipse. Když bylo vše pro vývoj uvolněno, začali se pomalu hrnout vývojáři aplikací. Aby tuto fázi Google urychlil, vyhlásil v této době soutěž, ve které se hrálo celkově o 10 000 000 USD. Ty byly rozděleny mezi vývojáře vítězných aplikací. Došlo tedy k tomu, že na Android existovalo již několik stovek aplikací, aniž by uživatelé nebo vývojáři dostali telefon do ruky. To se ale brzy změnilo. Přesně 23. září byl uvolněn Android 1.0 včetně SDK a na konci roku už mohli první uživatelé získat telefon s novým Androidem.
Od té doby se Android posunul až na verzi 2.1. Ve většině dnešních telefonů ale najdeme verze 1.5 a 1.6.
Jak se Android začal rozšiřovat, tak ho začalo zkoumat i víc lidí a začaly se objevovat články na téma „Android není Linux“.
Linux sice ano, ale …
Co to tedy Android je? Googlu se podařilo vytvořit linuxový operační systém přesně na míru mobilním zařízením, a to primárně telefonům, resp. čemukoli do kapsy. Dnes už se dá snad sehnat s Androidem i mikrovlnka, takže to už rozhodně není operační systém pouze telefony. Každopádně Google vzal linuxové jádro, trochu ho učesal a upravil a doplnil ho o základní nástroje, javovský virtual machine Dalvik a nakonec i o vlastní API a na něj navazující uživatelské prostředí.
Právě Java a jednotné API je „killer feature“ operačního systému Android. Když se podíváte na dnešní linuxový desktop, je tu konkurenční boj hlavně mezi GTK a Qt a na nich postavenými desktopovými prostředími. Není na tom nic špatného, ale rozhodně se to nehodí pro mobilní platformu, kam je potřeba co nejrychleji nahnat co nejvíce firem a vývojářů. Google měl toto v rukou a rozhodl se tak, aby se Android rozšířil a to všechno na úkor svobody ve výběru API. To je zpětně kompatibilní se staršími verzemi a dává vývojářům nástroj, kterým mohou přistupovat k hardwaru telefonu i k jeho funkcím a funkcím celého Androida. Když vývojář něco napíše pro Androida, pojede to na všech telefonech, na kterých je minimálně ta verze systému, na kterou to vývojář napsal. V reálném světě to není vždycky ideální, protože jsou malé rozdíly mezi jednotlivými výrobci. U čistého Androida se to ale dá říct.
Možná se ptáte, proč Google nepoužil třeba Qt nebo GTK. Na to je jednoduchá odpověď. Obojí se stará prakticky jen o vykreslování oken, grafiky a maximálně ještě o přístup k databázi. Androidí API ale pokrývá přístup k síti, Bluetooth, senzoru přiblížení, senzoru polohy či světla, GPS nebo přes něj můžete vytvořit aplikaci, jejíž vzhled bude závislý na nastavení zbytku telefonu a v neposlední řadě můžete přistupovat i k samotným funkcím systému Android. Tohle nemohlo nabídnout žádné existující API a když se podíváme, že Android má ještě velmi dobrou bezpečnostní politiku, tak zjistíme, že se vytvoření nového API vyplatilo.
Jenže…
K čemu hlavní větev? Máme svoji!
… zde narážíme na problém, o kterém se rozepsal jeden z jaderných vývojářů, Greg Kroah-Hartman. Jak jste se mohli dočíst v naší včerejší zprávičce, Greg má obavy o budoucnost Androida, co se týče zařazení do hlavní větve jádra.
Android, bohužel, pracuje se specifickými úpravami a háčky linuxového jádra, které jsou neslučitelné s aktuálním linuxovým jádrem. Podle jeho slov není Android jen pár ovladačů a jinak standardní jádro jaké si stáhneme z kernel.org, ale obsahuje dost zásadní změny jako speciální lock type a háčky nutné pro speciální bezpečnostní model. Tyto změny se neslučují se stavem v jakém Android je a nejhorší je, že ovladače napsané pro jádro Androida nemohou být zahrnuty v hlavní větvi linuxového jádra, protože jsou závislé na těchto zásadních odlišenostech.
Před výrobci stojí volba a to vést vývoj ovladačů pro obě větve nebo se soustředí jen na Androida. Otázkou samozřejmě je, co jim přinese posílání patchů jinam než do Androida. Odpověď je jednoduchá, krom dobrého pocitu a podpory jejich hardwaru v normálním linuxovém systému prakticky nic.
Rozuzlení
Co z toho všeho tedy plyne? Google si syslí vývoj u sebe. Kód je k dispozici, takže se o spojení někdy někdo třeba pokusí, ale bez podpory od samotného Googlu k tomu pravděpodobně nedojde. Google bude svoji práci zakládat na aktuálním vývoji hlavní větve jádra a bude udržovat jen patche specifické pro Androida. Uživatelé proto nepřijdou o Linux jako takový, zvlášť když si uvědomíme, jak nákladný by mohl být kompletní fork. Google ví, že vývojáři v Linuxu udělají spoustu práce a byla by škoda té práce nevyužít.
Situace proto není tak špatná, jak by se mohla zdát a krom svrbění u žaludku nás to jako uživatele nějak trápit nebude. Je klidně možné, že se časem obě větve změní společně s tím, jak půjde vývoj Androida a Linuxu dál, resp. někdo najde způsob, jak to udělat čistě, aby mohly být změny zahrnuty do jádra jen jako nenápadná volba „Android“.
Dosavadní kód Androida, který se nacházel v hlavní větvi jádra, resp. ve větvi staging, byl odstraněn. Bylo to z důvodu, že už ho nikdo nevyvíjel a nemělo smysl ho tam nechávat. Zdaleka nešlo o všechny změny, takže jeho použitelnost byla prakticky nulová.