MASARYKOVA UNIVERZITA F}w¡¢£¤¥¦§¨  AKULTA INFORMATIKY !"#$%&'()+,-./012345

Srovnání souˇcasných vývojových platforem pro mobilní zaˇrízenízaložená na OS

DIPLOMOVÁ PRÁCE

Martin Kolman

Brno, jaro 2013 Prohlášení

Prohlašuji, že tato diplomová práce je mým p ˚uvodnímautorským dílem, které jsem vypracoval samostatnˇe.Všechny zdroje, prameny a literaturu, které jsem pˇrivypracování používal nebo z nich ˇcerpal,v práci ˇrádnˇecituji s uvedením úplného odkazu na pˇríslušnýzdroj.

Martin Kolman

Vedoucí práce: doc. RNDr. Aleš Horák, Ph.D.

ii Podˇekování

V prvé ˇradˇebych chtˇelpodˇekovatvedoucímu mé diplomové práce doc. RNDr. Aleši Horákovi, Ph.D., za vstˇrícnost,pˇripomínkya všechny poskyt- nuté zdroje. Bez nˇejby tato práce nemohla vzniknout. Chtˇelbych také po- dˇekovatvšem ˇclen˚umkomunity otevˇrenýchmobilních platforem za jejich rady a zpˇetnouvazbu.

iii Shrnutí

Práce se zabývá srovnáním souˇcasných(pˇrevážnˇelinuxových) mobilních platforem a popisuje základní odlišností mobilních a „stolních“ platforem. Dále jsou formulovány zásady pro tvorbu multiplatformní mobilní apli- kace. Tyto zásady jsou pak demonstrovány v podobˇemultiplatformního navigaˇcníhosystému modRana. V závˇeru práce jsou popsány praktické vý- sledky tohoto projektu a další smˇerymožného pokraˇcovánívývoje v návaz- nosti na výsledky této diplomové práce.

iv Klíˇcováslova mobilní platformy, multiplatformní aplikace, Linux, Python, GTK, modRana, pydroid, Android, BlackBerry 10, Sailfish, , svobodný software

v Obsah

1 Úvod ...... 1 2 Srovnání mobilních linuxových platforem ...... 2 2.1 Kritéria pro srovnávání ...... 2 2.1.1 Architektura ...... 2 2.1.2 Otevˇrenost...... 3 Zdrojové kódy a možnost modifikace ...... 3 Transparentnost vývoje platformy ...... 3 Otevˇrenostplatformy pro aplikace tˇretíchstran . . . 4 2.1.3 Grafický systém ...... 5 2.1.4 Multimédia ...... 5 2.1.5 Balíˇckování ...... 6 2.1.6 Vývojové prostˇredí ...... 7 2.1.7 Hardware ...... 7 2.2 MeeGo ...... 7 2.3 Mer ...... 8 2.3.1 Otevˇrenost...... 9 2.3.2 Architektura ...... 9 2.3.3 Vývojové prostˇredí ...... 9 2.4 Nemo Mobile ...... 9 2.4.1 Architektura ...... 9 2.4.2 Otevˇrenost...... 10 2.4.3 Balíˇckování ...... 10 2.4.4 Vývojové prostˇredí ...... 11 2.4.5 Hardware ...... 11 2.5 Sailfish ...... 12 2.5.1 Architektura ...... 12 2.5.2 Grafický systém ...... 13 2.5.3 Otevˇrenost...... 13 2.5.4 Distribuce softwaru ...... 13 2.5.5 Vývojové prostˇredí ...... 14 2.5.6 Hardware ...... 14 2.6 Plasma Active ...... 15 2.6.1 Architektura ...... 15 2.6.2 Otevˇrenost...... 16 2.6.3 Balíˇckování ...... 16 2.6.4 Vývojové prostˇredí ...... 16 2.6.5 Hardware ...... 16

vi 2.7 Maemo 5 Fremantle ...... 17 2.7.1 Otevˇrenost...... 17 2.7.2 Grafický systém ...... 18 2.7.3 Multimédia ...... 19 2.7.4 Distribuce softwaru ...... 19 2.7.5 Vývoj softwaru ...... 20 2.7.6 Hardware ...... 20 2.8 MeeGo 1.2 Harmattan ...... 20 2.8.1 Architektura ...... 20 2.8.2 Otevˇrenost...... 22 Otevˇrenostvývoje ...... 23 2.8.3 Balíˇckování ...... 23 2.8.4 Vývojové prostˇredí ...... 24 2.8.5 Hardware ...... 24 2.9 Android ...... 25 2.9.1 Architektura ...... 25 2.9.2 Otevˇrenost...... 26 2.9.3 Balíˇckování ...... 26 2.9.4 Vývojové prostˇredí ...... 27 2.9.5 Hardware ...... 28 2.10 Tizen ...... 28 2.10.1 Otevˇrenost...... 29 2.10.2 Balíˇckování ...... 30 2.10.3 Vývojové prostˇredí ...... 30 2.10.4 Hardware ...... 30 2.11 ...... 30 2.11.1 Architektura ...... 31 2.11.2 Otevˇrenost...... 31 2.11.3 Balíˇckování ...... 31 2.11.4 Vývojové prostˇredí ...... 32 2.11.5 Hardware ...... 32 2.12 BlackBerry 10 ...... 32 2.12.1 Architektura ...... 32 2.12.2 Otevˇrenost...... 33 2.12.3 Balíˇckování ...... 33 2.12.4 Vývojové prostˇredí ...... 33 2.12.5 Hardware ...... 34 2.13 webOS ...... 34 2.13.1 Architektura ...... 35 2.13.2 Otevˇrenost...... 36

vii 2.13.3 Balíˇckování ...... 36 2.13.4 Vývojové prostˇredí ...... 37 2.13.5 Firefox OS ...... 37 2.14 Další mobilní platformy ...... 39 2.14.1 SHR ...... 39 2.14.2 QtMoko ...... 39 2.14.3 Cordia ...... 39 2.14.4 Seadot ...... 40 2.14.5 iOS ...... 40 2.14.6 ...... 40 2.15 Tabulkové srovnání platforem ...... 41 2.15.1 Architektura ...... 42 2.15.2 Otevˇrenost...... 43 2.15.3 Balíˇckování ...... 44 2.15.4 Distribuce softwaru ...... 45 2.15.5 Vývojové prostˇredí ...... 46 2.15.6 Hardware ...... 47 3 Specifika mobilních linuxových platforem ...... 48 3.1 Grafické rozhraní ...... 48 3.1.1 Vysoké rozlišení ...... 48 3.1.2 Promˇenlivýpomˇerstran ...... 49 3.2 Uživatelské rozhraní ...... 49 3.3 Knihovny a utility ...... 50 3.4 Balíˇckování ...... 50 3.5 Multitasking ...... 51 3.6 Hardware ...... 51 4 Tvorba multiplatformní aplikace ...... 53 4.1 Výbˇerprogramovacího jazyka ...... 53 4.2 Výbˇergrafické knihovny ...... 53 4.2.1 ...... 54 4.2.2 SDL ...... 55 4.2.3 Webové rozhraní ...... 55 4.3 Struktura aplikace ...... 56 4.3.1 Výbˇermodul ˚upro danou platformu ...... 57 4.3.2 Platformní modul ...... 57 5 modRana – pˇríkladmultiplatformní aplikace ...... 59 5.1 Implementace jádra ...... 59 5.1.1 Struktura jádra ...... 59 5.2 Implementace platformního modulu ...... 60 5.3 Implementace grafického modulu ...... 60

viii 5.4 Podporované platformy ...... 61 5.5 Popis pˇrenosuimplementace na novou platformu ...... 62 5.5.1 Android ...... 63 5.5.2 MeeGo 1.2 Harmattan ...... 64 5.5.3 BlackBerry 10 ...... 64 5.6 Kompatibilita s Pythonem verze 2.5 až 3.2 ...... 65 6 Vyhodnocení a ovˇeˇrenívýsledk ˚udiplomové práce ...... 66 6.1 modRana ...... 66 6.1.1 Uživatelská komunita ...... 66 6.1.2 Statistiky stažení ...... 66 6.2 Mieru ...... 67 6.2.1 Mieru v Store ...... 67 6.2.2 Mieru v BlackBerry World ...... 68 6.2.3 Mieru v Maemo Extras ...... 68 6.3 Python & Qt na Androidu ...... 69 6.3.1 Pyside for Android ...... 69 6.3.2 Projekt pydroid ...... 69 6.4 BlackBerry 10 ...... 70 6.4.1 Využití Qt Components aplikací AeroTests ...... 70 7 Závˇer ...... 71 A Rodokmen mobilních linuxových platforem ...... 84 B Galerie navigaˇcníhosystému modRana na r ˚uznýchmobilních platformách ...... 86 C Obsah DVD ...... 89

ix 1 Úvod

Mobilní zaˇrízeníve všech možných podobách stále více zasahují do života bˇežnýchuživatel ˚u.At’ už se jedná o chytré telefony, tablety, ultrabooky ˇci jiná mobilní zaˇrízení,vˇetšinaz nich používá operaˇcnísystém založený na linuxovém jádˇre.Linuxovým kernelem však ˇcastovzájemná shoda konˇcí a tyto operaˇcnísystémy jsou mezi sebou zpravidla silnˇenekompatibilní. Pˇrestožemnoho vývojáˇr˚uvolí cestu tvorby samostatných aplikací pro každou platformu zvlášt’, umožˇnujídostupné nástroje vytváˇretmultiplat- formní aplikace podporující nejen mobilní, ale i klasické „stolní“ platformy. Druhá kapitola diplomové práce je vˇenovánasrovnání existujících mo- bilních platforem, které jsou založené na linuxovém jádˇre.Pro úplnost jsou struˇcnˇezahrnuty i takové platformy, které linuxové jádro nepoužívají. Toto srovnání slouží pro volbu prostˇredk˚uvhodných pro úspˇešnývývoj mul- tiplatformní aplikace. Tˇretíkapitola je zamˇeˇrenána specifika mobilních, a to nejen linuxových, platforem z pohledu vývojáˇreaplikací pro „stolní“ poˇcítaˇce.Tento pˇrehled obsahuje informace potˇrebnépro to, aby výsledná aplikace využívala všech d ˚uležitýchfunkcí mobilních platforem a aby pˇrestonebylo vylouˇcenojejí fungování na stolních poˇcítaˇcích. Tématem ˇctvrtékapitoly je tvorba aplikace, která bude podporovat co nejvíce v souˇcasnostirozšíˇrenýchmobilních platforem. Kapitola popisuje výbˇerprostˇredk˚uvhodných pro dosažení tohoto cíle v návaznosti na kapi- toly 2 a 3. Flexibilní navigaˇcnísystém modRana je rozebrán v páté kapitole jako pˇríkladmultiplatformní aplikace vyvinuté podle princip ˚u,které jsou uve- deny v kapitole ˇctvrté. Konkrétní pˇrínosytéto diplomové práce jak pro vývojáˇre,tak pro kon- krétní uživatele multiplatformních mobilních aplikací, jsou popsány v ka- pitole šesté. Závˇerpráce pˇribližujemožné další smˇeryvývoje oblasti mobilních li- nuxových platforem obecnˇe,stejnˇejako vývoj projekt ˚ujako jsou modRana a pydroid, vycházejících z této práce.

1 2 Srovnání mobilních linuxových platforem

V souˇcasnostiexistuje mnoho mobilních platforem založených na linuxo- vém jádˇrea dalších komponentech „stolních“ linuxových distribucí. Za- tímco z pohledu jejich uživatele mohou jednotlivé platformy vypadat po- dobnˇe– jako operaˇcnísystém pro mobilní zaˇrízení,který umožˇnujeinsta- lovat aplikace tˇretíchstran. Ve skuteˇcnostise jednotlivé platformy vˇetšinou vzájemnˇevelmi liší. Znalost tˇechtoodlišností je velmi d ˚uležitázejména pro vývojáˇremobil- ních aplikací. Vývojáˇrpracuje s platformou na výraznˇenižší úrovni abs- trakce než uživatel, a znalost interní struktury dané mobilní platformy je tak pro nˇejzásadní. Následující srovnání zahrnuje pˇrevážnˇelinuxové platformy, ale i nˇeko- lik platforem, které jsou sice POSIXovˇekompatibilní, ale nepoužívají linu- xový kernel1. Pouze struˇcnˇejsou zde popsány ne-POSIXové a ne-linuxové platformy2.

2.1 Kritéria pro srovnávání

Pro srovnání jednotlivých platforem jsem zvolil nˇekolikhlavních kritérií: • architektura • otevˇrenost • grafika a multimédia • balíˇckovánía distribuce softwaru • vývojové prostˇredí • dostupnost hardwaru Jednotlivé platformy jsem porovnával pˇredevšímpodle výše uvedených kritérií, která také posloužila k vytvoˇrenísrovnávacích tabulek.

2.1.1 Architektura Architekturou je v tomto pˇrípadˇemyšleno to, z jakých ˇcástíse daná plat- forma skládá a jak jsou tyto ˇcástimezi sebou provázány. D ˚uležitém ˚užebýt rovnˇežto, do jaké míry jsou jednotlivé ˇcástinahraditelné a zda je možné se s nˇekterýmiz nich setkat na r ˚uznýchplatformách3. Dobrá analýza architektury usnadˇnujeportováním aplikace, pˇrikterém

1. BB10 a iOS 2. mobilní verze Windows 3. pˇríklademmultiplatformní technologie jsou WebKit nebo Qt

2 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM je vhodné zamˇeˇritse zejména na jedineˇcnéaspekty platformy. Právˇeony ˇcastovyžadují nejvˇetšízmˇenyv portované aplikaci.

2.1.2 Otevˇrenost Otevˇrenostmobilní platformy lze pojmout z nˇekolikaúhl ˚u: • dostupnost zdrojových kódu platformy a možnost modifikace • transparentnost vývoje platformy • otevˇrenostplatformy pro software tˇretíchstran

Zdrojové kódy a možnost modifikace Dostupnost zdrojových kód ˚uplatformy je d ˚uležitáhned z nˇekolikad ˚u- vod ˚u.Prvním je možnost modifikace platformy – pokud nejsou zdrojové kódy k dispozici, jsou možnosti modifikace velmi omezené4. Ani plná dostupnost zdrojových kód ˚uvšak nemusí garantovat, že po- zmˇenˇenýoperaˇcnísystém p ˚ujdespustit na stávajících zaˇrízeních.Mnoho mobilních zaˇrízenítotiž sleduje trend tzv. tivoizace. Termín oznaˇcujekryp- tografické ovˇeˇrováníintegrity obrazu operaˇcníhosystému pˇredjeho spuš- tˇením.Pokud je zaˇrízení tivoizováno, je spuštˇenpouze takový obraz ope- raˇcníhosystému, který je podepsán privátním klíˇcemvýrobce. Operaˇcní systém, který tímto provˇeˇrenímneprojde, nebude spuštˇen. Zdrojové kódy také umožˇnujídalší pokraˇcovánívývoje platformy v pˇrí- padˇeúpadku jejího p ˚uvodníhoprovozovatele. Pokud je však hardware ti- voizován a privátní klíˇcpro podepisování obrazu OS není znám, nebude bohužel možné k pokraˇcovánívývoje platformy použít stávající zaˇrízení. Dalším hlediskem je bezpeˇcnost,která je vzhledem k velkému množství citlivých informací obvykle uchovávaných na mobilních zaˇrízeníchvelmi d ˚uležitá.Bez zdrojových kód ˚uodpovídajících nainstalovaným binárním komponent ˚umplatformy není možné provést plnˇenezávislou analýzu bez- peˇcnostníchrizik.

Transparentnost vývoje platformy Dalším d ˚uležitýmkritériem pro hodnocení otevˇrenosti mobilní platformy je otevˇrenostjejího vývoje. I v pˇrípadˇe,že jsou zdrojové kódy mobilního operaˇcníhosystému plnˇe k dispozici pod svobodnou licencí, m ˚užecelý vývoj probíhat za zavˇrenými dveˇrmi,bez zájmu o zpˇetnouvazbu z vývojáˇrskéa uživatelské komunity

4. v podstatˇepouze dílˇcízmˇenyzásahem do pˇrípadnýchkonfiguraˇcníchsoubor ˚u

3 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM a bez možnosti sledovat pr ˚ubˇehvývoje. Komunikace s komunitou uživa- tel ˚ua externích vývojáˇr˚upak spoˇcívápouze v obˇcasnémzveˇrejnˇeníbalík ˚u zdrojových kód ˚u5 zpravidla krátce po uvedení nové verze systému. Tímto zp ˚usobemprobíhá napˇríkladvývoj mobilní platformy Android[1]: vývoj probíhá za zavˇrenýmidveˇrmia je ovlivnˇenpouze Googlem a korporátními ˇclenyOpen Handset Aliance[2]. Pˇriuzavˇrenémzp ˚usobuvývoje je díky dostupnosti zdrojových kód ˚u stále možné operaˇcnísystém modifikovat. Bez možnosti ovlivnit smˇeˇrování hlavní vývojové vˇetveje však nutné zmˇenybut’to pr ˚ubˇežnˇeadaptovat pro použití s novˇejšíverzí systému, nebo se spokojit s používáním staré verze systému. Vývoj však také m ˚užeprobíhat plnˇetransparentnˇe– a to s využitím ote- vˇrenýchrepositáˇr˚uzdrojového kódu a otevˇrenýchkomunikaˇcníchkanál ˚u6. Tímto zp ˚usobemprobíhá napˇr.vývoj mobilních distribucí Mer a Nemo Mo- bile, SHR ˇcikomunitní údržba Maemo 5. Hlavní výhodou tohoto pˇrístupuje nízká vstupní bariéra pro pˇrispˇeva- tele a reálná možnost ovlivnit smˇeˇrováníplatformy vlastním pˇrímýmzapo- jením do vývoje. Lze také pˇredpokládat,že transparentnˇevyvíjený projekt nebude mít problém se zaˇclenˇenímprospˇešnýchzmˇen,které nebude nutné oddˇelenˇeudržovat a které zároveˇnmohou nalézt širší uplatnˇenív hlavní vˇetvivývoje.

Otevˇrenostplatformy pro aplikace tˇretíchstran U všech moderních mobilních platforem existuje v urˇcitépodobˇepodpora instalace a spouštˇeníaplikací tˇretíchstran. Právˇedostupnost aplikací tˇre- tích stran m ˚užebýt d ˚uležitýmfaktorem rozhodujícím o úspˇechuplatformy. Mobilní platforma vˇetšinouobsahuje nejménˇejeden centrální aplikaˇcníre- positáˇr,který umožˇnujeuživatel ˚umsnadnou instalaci aplikací. Z hlediska otevˇrenostije tˇrebasledovat dva hlavní aspekty: • pravidla pro pˇrijetíaplikace do centrálního repositáˇre • možnost pˇríméinstalace aplikace Zaˇclenˇeníaplikace do centrálního repositáˇreaplikací je velmi d ˚uležité, protože se jedná o nejkratší cestu ke koncovému uživateli. Provozovatel re- positáˇrepro zaˇclenˇeníaplikace stanovuje pravidla a snaží se dohlížet na jejich dodržování – zpravidla formou manuální ˇciautomatizované kont- roly aplikace pˇredjejím zveˇrejnˇením.Pokud jsou pravidla rozumná7, je vše

5. tzv. code drop 6. napˇr.veˇrejnéemailové konference, IRC kanály a fóra 7. zákaz vir ˚u,trojských koní, atd.

4 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM v poˇrádkua kontrola aplikace do repositáˇreznamená jen mírné zdržení jejího vydání. Pokud však provozovatel není nestranný a brání v zaˇclenˇeníaplikací bez objektivního d ˚uvodu8, není platforma opravdu otevˇrená.Pouze by uži- vatel by mˇelrozhodovat, která aplikace není vhodná – tím, že si ji nenain- staluje. Termín možnost pˇríméinstalace aplikace znamená, zda je možné instalovat aplikace, aniž by musely projít centrálním repositáˇrem(a splˇnovattak pra- vidla provozovatele repositáˇre).Pokud platforma ve výchozím nastavení neumožˇnujepˇrímouinstalací a aplikace je možné získat pouze prostˇrednic- tvím pˇrednastavenéhocentrálního repositáˇres restriktivní politikou, bývá oznaˇcovánajako tzv. walled garden.

2.1.3 Grafický systém Pro mobilní platformy je samozˇrejmˇerovnˇežmožné vytváˇretaplikace bez grafického rozhraní, které plní funkci démon˚u, jsou ˇrízenyvzdáleným roz- hraním ˇcijednoduše bˇežív emulátoru terminálu. Pˇrestoje vˇetšinoupojmem mobilní aplikace mínˇenaaplikace s grafickým rozhraním. Tento fakt je vý- raznˇeovlivnˇenfyzickými možnostmi ovládání mobilních aplikací. Fyzická velikost obrazovky znaˇcnˇelimituje množství informací, které lze „ˇcitelnˇe“ zobrazit. Vˇetšinazaˇrízenítaké nedisponuje hardwarovou klá- vesnicí. Tento fakt velmi ztˇežujevyužití konsolových aplikací a v zásadˇe vyžaduje grafické rozhraní pˇrizp˚usobenémobilnímu zaˇrízení. Grafické systémy mobilních platforem se podstatnˇeliší od grafických systému používaných na „stolních“ poˇcítaˇcích.Jsou mimo jiné v mnoha aspektech velmi zjednodušené. I takové funkce, které se na první pohled jeví jako samozˇrejmé– jako napˇr.možnost zobrazení více oken souˇcasnˇeˇci podpora více oken jedné aplikace – nebývají ve vˇetšinˇepˇrípad˚uk dispozici. Zatímco na stolních linuxových poˇcítaˇcíchmá X-server témˇeˇrmonopolní postavení, mezi mobilními platformami je jeho zastoupení pomˇernˇemalé, což v d ˚usledkuvelmi omezuje škálu použitelných grafických knihoven.

2.1.4 Multimédia Pojmem multimédia v pˇrípadˇemobilních platforem rozumíme podporu pro hardwarovou akceleraci grafických operací, videa (nahrávání i pˇrehrá- vání) a zvuku. Pro využití multimédií na mobilních platformách je hardwa-

8. zákaz konkurujících si aplikací, zákaz aplikací pod svobodnou licencí, zákaz interpre- tovaného kódu, atd.

5 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM rová akcelerace stˇežejní.Tento fakt vychází ze specifické situace mobilních zaˇrízení,které mají ˇcastorelativnˇeslabá CPU a musí vzhledem k provozu z baterie šetˇritenergii. Hardwarová akcelerace tak umožˇnujepráci s typy multimédií, které by mobilní CPU v ˚ubeczpracovat nezvládl 9. Díky použití ˇcipovýchblok ˚u,vy- tvoˇrenýchpro tuto ˇcinnostna míru, má hardwarová akcelerace mnohem menší spotˇrebuenergie než CPU provádˇejícíekvivalentní výpoˇcty. Zatímco vˇetšinamobilních platforem podporuje hardwarovou akcele- raci grafiky prostˇrednictvímstandardního rozhraní OpenGL ES[3], mož- nosti akcelerace videa a zvuku se velmi liší nejen podle platformy, ale pˇre- devším podle konkrétního zaˇrízení.Dalším problémem pro práci s mul- timédii mohou být platformnˇezávislá navzájem nekompatibilní rozhraní. Tento problém naštˇestíˇcásteˇcnˇeˇrešípoužití multimédií s pomocí abstrakce, kterou nabízí nˇekteráz multiplatformních grafických a multimediálních knihoven jako Qt, SDL ˇciGStreamer.

2.1.5 Balíˇckování Pojem balíˇckování oznaˇcujepostup, pˇrikterém je aplikace upravena do po- doby, která umožˇnujejejí snadnou distribuci a instalaci. Výsledkem balíˇc- kování je jeden soubor10, který obsahuje všechny soubory balíˇckovanéapli- kace, metadata balíˇckua instalaˇcnískripty. Metadata obsahují jak položky urˇcenépro uživatele (název aplikace, struˇcnýpopis, kategorii, odkaz na webové stránky projektu, kontaktní ad- resu autora atd.), tak data pro instalaˇcnísystém (ˇcísloverze aplikace, kon- trolní souˇctysoubor ˚unebo seznam dalších balíˇck˚upotˇrebnýchpro insta- laci). D ˚uležitýmaspektem balíˇckovacíhosystému je, jestli podporuje automa- tické ˇrešenízávislostí mezi balíˇcky. To umožˇnujebalíˇck˚umpopsat, které další balíˇckypotˇrebují pro správné fungování. Castoˇ používanou funkci- onalitu je pak možné vyˇclenitdo balíˇcku,na který další balíˇckyodkazují pomocí deklarace závislostí. Díky tomu lze výraznˇezmenšit nejen velikost jednotlivých balíˇck˚u,ale i celkovou spotˇrebuúložného místa na zaˇrízení. Další výhodou podpory závislostí je rovnˇežfakt, že v pˇrípadˇenálezu bezpeˇcnostnídíry v jednom z balík ˚ustaˇcíopravit pouze tento balík. Veškeré aplikace, které využívají jeho funkcionality, jsou po aktualizaci opraveného balíˇckupˇrednalezenou bezpeˇcnostnídírou automaticky chránˇeny. Mnoho mobilních platforem však v ˚ubecnepodporuje závislosti mezi

9. napˇr.pˇrehrávánífull-HD videa ve formátu h264 v reálném ˇcase 10. vˇetšinouse jedná o komprimovaný archiv

6 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM balíˇcky, a proto je nutné všechny potˇrebnéknihovny bud’to pˇribalit,nebo ˇrešenízávislostí suplovat pomocí aplikaˇcnílogiky11.

2.1.6 Vývojové prostˇredí Osud mobilní platformy je vázán na dostupnost aplikací a proto se pro- vozovatelé mobilních platforem co nejvíc snaží vývojáˇr˚umvývoj aplikací zjednodušit a nabízejí tzv. SDK. SDK je sada všech nástroj ˚u12 potˇrebných pro vývoj aplikace pro danou mobilní platformu. SDK se vˇetšinouzamˇeˇrujípouze na jedinou kombinaci programovacího jazyka a sady knihoven. SDK jednotlivých platforem bývají mezi sebou také ˇcastonekompatibilní, což ztˇežujetvorbu multiplatformních aplikací. Ve vˇetšinˇepˇrípad˚uje možné pro danou platformu vyvíjet aplikace i bez plného využití SDK: vývojáˇrse však v tomto pˇrípadˇemusí obejít bez pod- pory provozovatele a stává se pak, že narazí na ˇcástiplatformy, které nejsou tak stabilní a otestované jako rozhraní, která využívá oficiální SDK.

2.1.7 Hardware Pro objektivní hodnocení mobilní platformy je podstatná dostupnost zaˇrí- zení. Pˇrestožemnoho platforem v rámci SDK obsahuje více ˇcíménˇepouži- telný simulátor, nebývají všechny funkce a rozhraní pokaždé vˇernˇesimulo- vány a vˇetšinasimulátor ˚uje rovnˇežvelmi pomalá. Pro vývojáˇreje také d ˚uležitéznát typy dostupného hardwaru: pro vývoj aplikací potˇrebujevˇedˇet,o jaký formát zaˇrízení(chytrý telefon, tablet, net- book,...) se jedná a jaké subsystémy (GPS, klávesnice, kamera, NFC[4][5]) bude mít k dispozici. V rámci vývoje aplikací hraje významnou roli také to, jakým zp ˚usobem platforma odlišnosti r ˚uznýchzaˇrízení abstrahuje. Je totiž d ˚uležitévˇedˇet, zda jsou všechny funkce zpˇrístupnˇenyjednotným aplikaˇcnímrozhraním nebo naopak množinou specifických API. Bˇežína všech formátech zaˇrízení a architekturách v ˚ubecstejný operaˇcnísystém nebo se jedná o r ˚uznéimple- mentace OS, které mají spoleˇcnýpouze název platformy ?

2.2 MeeGo

Mobilní platforma MeeGo[6][7] byla spoleˇcnýmprojektem firem a No- kia. Cílem platformy bylo vytvoˇritotevˇrenoumobilní distribuci nejen pro

11. viz napˇríkladaplikace Ministro na platformˇeAndroid 12. knihovny, kompilátory a nˇekdyi IDE ˇcisimulátor platformy

7 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM chytré telefony, ale i pro tablety, netbooky a zábavní systémy v dopravních prostˇredcích.Obˇefirmy do projektu MeeGo pˇrispˇelysvou vlastní mobilní distribucí, spoleˇcnostNokia pˇrispˇelavýsledky projektu Maemo a spoleˇc- nost Intel nabídla distribuci pro netbooky, zvanou . Použity byly také nˇekterékomponenty distribuce Fedora a OpenSuse. Rodokmen pro- jektu MeeGo i dalších mobilních linuxových distribucí je k dispozici v první pˇrílozeA. 11. února 2011 však , šéf spoleˇcnostiNokia, ohlásil opuš- tˇeníprojektu MeeGo a oznámil pˇrechodsvé spoleˇcnostina mobilní plat- formu Windows Phone. Následkem toho byly zastaveny práce na projektu MeeGo, který byl následnˇeopuštˇenrovnˇežspoleˇcnostíIntel. Prostˇredkyvložené do projektu MeeGo však nevyšly nazmar díky mo- bilní metadistribuci Mer, kterou založila skupina bývalých MeeGo vývo- jáˇr˚ua proto ji lze do znaˇcnémíry považovat za pokraˇcovateleprojektu Me- eGo.

2.3 Mer

Projekt Mer[8] byl založen skupinou vývojáˇr˚u,kteˇríse po rozpadu pro- jektu MeeGo rozhodli na vývoji této platformy pokraˇcovat.Usoudili však, že cesta zvolená pro projekt MeeGo – tzn. vývoj kompletní linuxové distri- buce vˇcetnˇegrafického rozhraní a údržby kernelu – nebyl dobrý nápad. Projekt Mer je tedy tzv. metadistribuce, neobsahuje totiž grafické roz- hraní ani distribuˇcníkernel. Zato ale Mer poskytuje veškeré nástroje pro tvorbu plnohodnotné linuxové distribuce. VývojáˇriMeru si od tohoto pˇrí- stupu slibují vˇetšíflexibilitu vývoje svého projektu bez nutnosti ˇcekánína vývoj grafického rozhraní a udržování vlastní verze linuxového jádra. Další výhodou jejich pˇrístupuje, že díky této své struktuˇreje Mer v podstatˇene- utrálním projektem, na kterém mohou spolupracovat i vzájemnˇesi konku- rující komerˇcnísubjekty, podobnˇejako ˇradakonkurujících si firem spolu- pracuje na vývoji linuxového jádra. Doposud se zdá, že postup, který zvolili vývojáˇriMeru, se osvˇedˇcil,pro- tože již vznikla ˇradamobilních distribucí, které Mer používají jako sv ˚ujzá- klad. Jedná se napˇr.o: • Nemo Mobile • Sailfish • Plasma Active • Cordia • Seadot

8 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.3.1 Otevˇrenost Vývoj metadistribuce Mer probíhá zcela otevˇrenˇe.Její zdrojové kódy jsou ve všech fázích vývoje k dispozici a veškerá komunikace o vývoji Meru probíhá zcela veˇrejnˇena IRC kanále13 a v emailové konferenci14. Projekt Mer používá pro pr ˚ubˇežnýaudit zmˇenve zdrojovém kódu vlastní veˇrejnou instanci15 systému Gerrit[9], která zároveˇnukazuje zajímavý obraz vývoje celého projektu. O skuteˇcnéotevˇrenostia neutrálnosti projektu Mer svˇedˇcítaké to, že se na jeho vývoji ruku v ruce podílejí jak vývojáˇrispoleˇcnostiJolla, tak ˇclenové komunity Plasma Active nebo komunitní vývojáˇridistribuce Nemo Mobile.

2.3.2 Architektura Mer používá balíˇckovacísystém RPM. Samotná metadistribuce Meru je vy- tváˇrenapomocí systému pro tvorbu a správu balíˇck˚uOBS[10]. K dispo- zici jsou nejr ˚uznˇejšíkomponenty vhodné pro tvorbu mobilních distribucí, napˇr.:X server, grafická knihovna Qt, DBUS, systemd, Python, GNU utility, Pulseaudio, GStreamer, klávesnicový framework atd. Tvorbˇeinsta- laˇcníchobraz ˚uslouží specializovaný nástroj zvaný MIC[11].

2.3.3 Vývojové prostˇredí Vývojové prostˇredíprojektu Mer[12] tvoˇrídvˇeˇcásti:tzv. platformní SDK a aplikaˇcníSDK. Platformní SDK slouží vývoji samotné distribuce Mer, aplikaˇcníSDK je pak zamˇeˇrenana vývoj aplikací, které používají grafic- kou knihovnu Qt nebo prostˇredíHTML 5. Platformní SDK je urˇcenátaké pro vývoj a portování knihoven.

2.4 Nemo Mobile

Nemo Mobile [13] je komunitní distribuce pro mobilní zaˇrízení,založená na metadistribuci Mer. Nemo k Meru pˇridávávlastní uživatelské rozhraní a adaptace pro jednotlivá zaˇrízení.

2.4.1 Architektura Nemo tedy doplˇnujedo metadistribuce Mer to, co Mer úmyslnˇeneposkytuje:

13. logy IRLC kanálu #mer: http://www.merproject.org/logs/%23mer/ 14. http://www.mail-archive.com/[email protected]/ 15. http://review.merproject.org/#q,status:merged,n,z

9 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

• linuxové jádro • ovladaˇcepro zaˇrízení • uživatelské rozhraní Uživatelské rozhraní distribuce Nemo Mobile je postaveno na grafické knihovnˇeQt16, pomocí které jsou vytvoˇrenyi veškeré pˇredinstalovanéapli- kace. Qt prostˇrednictvímQt-Mobility taktéž poskytuje data ze senzor ˚u.X server plní funkci grafického systému, v budoucnu lze pˇredpokládatpˇre- chod na grafický systém Wayland.

2.4.2 Otevˇrenost

Vývoj distribuce Nemo Mobile je plnˇeotevˇrený,veškerý kód je k dipozici po celou dobu vývoje a všechny diskuze o smˇeru vývoje distribuce probí- hají na veˇrejnýchIRC kanálech a emailových konferencích. Jedinou uzavˇrenoukomponentou jsou nˇekteréovladaˇcezaˇrízení,které jejich výrobce poskytuje pouze v binární podobˇe.

2.4.3 Balíˇckování

Nemo plnˇepˇrejímábalíˇckovacísystém z Meru, tzn. používá RPM a utilitu zypper. Tvorba balík ˚uprobíhá v instanci OBS, používané také distribucí Mer. V této instanci má Nemo Mobile vlastní OBS projekt, který nese název nemo[14]. V tomto projektu jsou k dispozici sekce, které reprezentují jednot- livé vývojové vˇetve(stabilní, testovací, atd.) a také sekce vˇenovanépodpoˇre cílových zaˇrízení. Pro zapojení se do vývoje distribuce Nemo mobile nebo napˇr.jen pro sestavení balíku oproti Nemu staˇcí: • zaregistrovat se na Bugzillu projektu Mer[15] • pˇrihlásitse stejnými údaji na Mer OBS[16] • vytvoˇritsi vlastní projekt • nastavit jako target tohoto projektu jednu z hlavních vˇetvíNema (stable/testing) Pˇrestožetento postup m ˚užena první pohled p ˚usobitsložitˇe,je ve skuteˇc- nosti velmi praktický a to zejména díky vysoké úrovni automatizace práce s balíˇcky17). Jakmile vývojáˇrzvládne do OBS pˇridatprvní balíˇcek,ty další už mu p ˚ujdoupˇridatvelmi snadno.

16. momentálnˇeve verzi 4.8 17. automatické „pˇrebalení“ pˇri zmˇenáchv distribuˇcníchbalících, možnost kopírování mezi projekty, verzování balík ˚u,atd.

10 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

Obrázek 2.1: Nemo Mobile na N950

Praktická je také možnost nabídnutí balíˇckuk zaˇclenˇenído cizího pro- jektu. Tato funkce se dá využít i pro zaˇclenˇenívlastního balíku do distri- buce. Právˇetímto zp ˚usobemje distribuce vyvíjena – vývojáˇrinabízejí balíky do hlavních repositáˇr˚ua jejich integritu si vzájemnˇekontrolují.

2.4.4 Vývojové prostˇredí

Hlavní kombinací nástroj ˚upro vývoj jak distribuce, tak aplikací pro distri- buci urˇcených, je C++ a Qt/QML. Použití C++ však není podmínkou, pro- tože oficiálních repositáˇríchobsahují Python a PySide. Díky tomu je možné pro Nemo vytváˇretgrafické aplikace v Pythonu. Další možností je tvorba aplikací pouze s využitím QML a Javascriptu (bez použití C++). Vzhledem k otevˇrenosti distribuce nejsou vývojáˇr˚umkladeny žádné pˇrekážkypro použití dalších jazyk ˚ua knihoven – a to tak dlouho, dokud je možné tyto jazyky a knihovny zkompilovat a spustit je na cílových zaˇríze- ních platformy.

2.4.5 Hardware

Nemo mobile v souˇcasnostipodporuje pˇredevšímchytré telefony N900, N950 a N9 spoleˇcnostiNokia. Pro tato zaˇrízeníjsou k dispozici pravidelnˇe aktualizované instalaˇcníobrazy. Jsou to také zaˇrízení,na kterých Nemo po- užívá nejvíce vývojáˇr˚ui uživatel ˚u.Nemo na nich podporuje základní funk- cionality, jako jsou volání, fotoaparát nebo 3D akcelerace. Další funkce jako napˇr.GPS zatím podporovány nejsou. Kromˇe oficiálnˇe podporovaného hardwaru mohou vývojáˇria uživatelé

11 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

Obrázek 2.2: lockscreen Nemo Mobile na Nokia N950 s vyklopenou kláves- nicí

Nemo provozovat i na ˇradˇedalších zaˇrízení,je však nutné poˇcítats tím, že ne všechny funkce daného zaˇrízeníbudou podporovány. Nejaktuálnˇejší informace o podporovaném hardwaru jsou k dispozici na wiki projektu Nemo Mobile. Nemo se dá spustit i na virtuálním stroji, a to díky dostupnosti obrazu pro VirtualBox. Vzhledem k tomu, že velká ˇcásthardwaru není virtuálním strojem podporována a jeho výkon neodpovídá mobilnímu zaˇrízení,jedná se spíš o nouzovou variantu. Virtuální stroj se však m ˚užehodit pro testo- vání r ˚uznýchverzí Nema pˇredjejich instalací na reálné zaˇrízení.

2.5 Sailfish

Sailfish[17] je komerˇcnílinuxová distribuce pro mobilní zaˇrízenívytvoˇrená finskou firmou [18]. Tuto spoleˇcnosttvoˇríz vˇetšinybývalí zamˇestnanci firmy Nokia, kteˇrípracovali na projektech Maemo (N900), MeeGo 1.2 Har- mattan (N9) a spoleˇcnémprojektu MeeGo s firmou Intel. Sailfish lze pova- žovat za pokraˇcovateletˇechtoprojekt ˚u,a to pod záštitou spoleˇcnostiJolla.

2.5.1 Architektura

Distribuce Sailfish se skládá z tˇechtohlavních souˇcástí: • linuxového jádra

12 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

• metadistribuce Mer • prvk ˚udistribuce Nemo mobile • grafických komponent Silica[19] • uživatelského rozhraní pro Sailfish • ovladaˇc˚uzaˇrízení Sailfish se svou architekturou silnˇepodobá klasické linuxové distribuci pro PC: vˇetšinabˇežnˇedostupných systémových utilit by mˇelabýt k dispo- zici, je použit DBUS, Systemd, balíˇckovacísystém RPM, grafické rozhraní využívá X server a knihovnu Qt. Na rozdíl od Androidu, který staví na znaˇcnˇeomezené libc, známé pod názvem Bionic, používá Sailfish plnohod- notnou knihovnu libc.

2.5.2 Grafický systém

Souˇcasnápodoba systému Sailfish používá pro správu grafiky X server a grafickou knihovnu Qt ve verzi 4.8. V budoucnu se pˇredpokládápˇrechod na Wayland a Qt verze 5.

2.5.3 Otevˇrenost

Metadistribuce Mer a distribuce Nemo Mobile, které tvoˇrípodstatnou ˇcást platformy Sailfish poskytují nejen sv ˚ujzdrojový kód pod svobodnou li- cencí, ale jejich vývoj probíhá také zcela veˇrejnˇe.Na základˇetoho je možné se do nˇejpˇrímozapojit, a nepˇrímotak ovlivnit smˇeˇrovánídistribuce Sail- fish. To samé platí samozˇrejmˇei pro další d ˚uležitoukomponentu – linuxové jádro. V tomto ohledu se Sailfish diametrálnˇeliší od Androidu, jehož zdro- jový kód je sice volnˇek dispozici, ale veškerý vývoj až do vydání stabilní verze probíhá za zavˇrenýmidveˇrmi, o smˇeˇrováníprojektu rozhoduje výhradnˇespoleˇcnostGoogle a její firemní partneˇriv Open Handset Aliance.

2.5.4 Distribuce softwaru

Balíˇckovacísystém Sailfish vychází z Meru, jedná se tedy o RPM. Vzhledem k tomu, že zatím nebyla na trh oficiálnˇeuvedena žádná zaˇrízenípro kon- cové zákazníky, nebylo zatím ani oznámeno, jakým zp ˚usobembude probí- hat distribuce softwaru od vývojáˇr˚usmˇerem k uživatel ˚um.Jediná doposud známá a potenciálnˇerelevantní informace je, že Sailfish nebude podporovat DRM[20].

13 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.5.5 Vývojové prostˇredí Sailfish SDK byla vydána koncem února 2013. Skládá se z Qt Creatoru, který tvoˇrívýchozí IDE a dvou virtuálních stroj ˚utypu VirtulBox[21]. První virtuální stroj obsahuje kompilaˇcníprostˇredípostavené na Meru, druhý pak simulátor zaˇrízení.Využití virtuálních stroj ˚uumožˇnujevývojovému prostˇredísnadné fungování všude tam, kde jde spustit VirtualBox18. Bˇežnépoužití SDK spoˇcíváv psaní zdrojového kódu v Qt Creatoru, od- kud vývojáˇrm ˚užepˇrímospustit kompilaci v kompilaˇcnímprostˇredíprv- ního virtuálního stroje. Výsledek kompilace je pak automaticky spuštˇen v režimu ladˇenína druhém virtuálním stroji se Sailfish simulátorem.

2.5.6 Hardware Podle dosavadních informací bude Sailfish nasazena jak na mobilních za- ˇrízeních,vyrábˇenýchpˇrímofirmou Jolla, tak licencována pro zaˇrízenídal- ších výrobc ˚u.Tˇrebažeuž Jolla pˇrinejr ˚uznˇejšíchpˇríležitostech nˇekolikrát demonstrovala Sailfish na reálných zaˇrízeních19, žádný instalaˇcníobraz OS Sailfish zatím zveˇrejnˇennebyl. První zaˇrízeníformy Jolla s operaˇcnímsystémem Sailfish, pojmenované „Jolla“, bylo oficiálnˇeohlášeno 20.5.2013 v Helsinkách[22] a je to o chytrý dotykový telefon s obrazovkou o úhlopˇríˇcce4.5 palce. Zaˇrízenídále dispo- nuje dvou-jádrovým procesorem, 16 GB interní pamˇetí,slotem na micro-SD kartu, 8 Mpix fotoaparátem a vymˇenitelnoubaterií. Zadní kryt zaˇrízeníje odnímatelný a bude dostupný v r ˚uznýchbarvách. SpoleˇcnostJolla ozná- mila, že prostˇrednictvímvýmˇenykrytu bude možné rozšiˇrovattechnickou výbavu zaˇrízení20. Podrobnˇejšítechnické specifikace jako rozlišení obra- zovky, objem RAM nebo frekvence CPU zatím nebyly zveˇrejnˇeny. Chytrý telefon „Jolla“ si mohou zájemci od 20.5.2013 pˇredobjednat[23]s pˇredpo- kládaným termínem dodání do konce 2013.

18. VirtualBox podporuje vˇetšinuhlavních linuxových distribucí, MacOS X a Windows 19. jednalo se pˇredevšímo chytré telefony Nokia N950 ˇciN9 20. byl napˇr.silnˇejšíblesk, objektiv typu rybí oko nebo pˇrídavnábaterie

14 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

Obrázek 2.3: Chytrý telefon Jolla

Obrázek 2.4: Jolla s krytem v jiné barvˇea pohled na zadní stranu

2.6 Plasma Active

Plasma Active[24] je linuxová distribuce pro mobilní zaˇrízení,vyvíjená ko- munitou desktopového prostˇredíKDE[25].

2.6.1 Architektura

Plasma Active vychází z metadistribuce Mer, ke které pˇridávávlastní uži- vatelské rozhraní, zvané rovnˇež Plasma Active. Dále pˇridávátaké vlastní kernel a ovladaˇcepro cílová zaˇrízení.

15 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.6.2 Otevˇrenost

Vývoj distribuce Plasma Active probíhá zcela veˇrejnˇea m ˚užese do nˇej zapojit ˇcijen sledovat aktuální dˇeníkdokoli. Veškeré zdrojové kódy jsou k dispozici z Gitových repositáˇr˚u,hostovaných na infrastruktuˇreprojektu KDE[26]. Veškeré plánování a diskuze o vývoji probíhají veˇrejnˇe– na IRC, v emai- lové konferenci[27] nebo v diskuzních fórech. Otevˇrenostivývoje lze vytknout pˇrístupk vývoji hardwaru pro dediko- vané Plasma Active zaˇrízení,o kterém jsou zatím známé pouze kusé infor- mace a který probíhá tzv. „za zavˇrenýmidveˇrmi“.

2.6.3 Balíˇckování

Balíˇckovánítaktéž vychází z Meru: Plasma Active používá balíˇckovacísys- tém RPM. Pˇrestožezatím nejsou známy podrobnosti o zp ˚usobudistribuce softwaru k uživatel ˚um,vývojáˇriPlasma Active ohlásili, že plánují flexibilní a distribuovaný systém šíˇreníjak softwaru, tak dalšího obsahu.

2.6.4 Vývojové prostˇredí

K vývoji aplikací pro Plasma Active mohou vývojáˇripoužít SDK s názvem Plasmate[28]. Hlavní podporovanou grafickou knihovnou je Qt Quick. Mezi oficiálnˇepodporované jazyky patˇrív Javascript, Python, Ruby a C++[29]. Lze vytváˇretjak aplikace specifické pro prostˇredíPlasma, tzv. Plasmoidy, tak samostatné aplikace využívající Qt Quick. Vzhledem k tomu, že základ Plasma Active tvoˇrítémˇeˇrregulérní li- nuxová distribuce Meru, p ˚ujdoupravdˇepodobnˇevyužít i další knihovny a programovací jazyky.

2.6.5 Hardware

Pˇríbˇehmobilního zaˇrízenís Plasma Active je pomˇernˇedlouhý a kompliko- vaný. Vše zaˇcaloohlášením tabletu Spark[30] na zaˇcátkuroku 2012. Tablet byl následnˇepro možný konflikt názvu Spark s názvem podobného vý- robku v polovinˇeroku 2012 pˇrejmenovánna Vivaldi[31]. Tablet Vivaldi byl založen na pˇreznaˇcenémˇcínskémtabletu, který se již bˇežnˇeprodával s OS Android, ale zato se všemi ovladaˇci,nutnými pro správný chod linuxové distribuce s Plasma Active. Uvedení tabletu na trh bylo stále oddalováno a v záˇrí2012 bylo ohlášeno nové smˇeˇrováníprojektu. Projekt Plasma Active zveˇrejnil,že na základˇedosavadních zkušeností z projektu Vivaldi navrhne

16 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM vlastní tablet[32][33]. Konkrétní datum vydání tohoto zaˇrízenídosud zve- ˇrejnˇenonebylo. Tˇrebažezatím neexistuje dedikované zaˇrízenís Plasma Active, je možné tuto platformu v souˇcasnostiuž vyzkoušet na celé ˇradˇeexistujících mobil- ních zaˇrízení[34]. Jedná se zatím pˇrevážnˇeo tablet-PC a kombinace tablet- notebook, bˇežícína architektuˇrex86. Jedinými „skuteˇcnými“ tablety v se- znamu podporovaných zaˇrízeníje Nexus 7 a nˇekterétablety firmy Archos.

2.7 Maemo 5 Fremantle

Operaˇcnísystém Maemo 5[35] byl vyvinut firmou Nokia pro chytrý telefon . Jak již plyne z oznaˇcení Maemo 5, jedná se již o pátou verzi sys- tému Maemo. Pˇredchozíverze však byly urˇcenypro tzv. internetové tablety – což jsou pˇrenosnázaˇrízeníbez podpory pˇripojenído mobilní sítˇe– ne však pro chytré telefony. Maemo 5 je poslední verzí systému Maemo, kterou Nokia vydala. MeeGo 1.2 Harmattan sice na Maemo 5 v mnoha aspektech navazuje, a to natolik, že bývá neoficiálnˇeoznaˇcovánjako Maemo 6. Har- mattan se pˇrestood Maemo 5 výraznˇeliší výchozím grafickým rozhraním, ve kterém bylo GTK[36] nahrazeno Qt. Maemo 5 je založené na Debianu a velmi se podobá klasické desktopové distribuci, od které se liší hlavnˇenahrazením vˇetšinyklasických distribuˇc- ních utilit busyboxem a použitím tzv. optifikace. Termín oznaˇcujeinsta- laci všech program ˚u,které nejsou pro start operaˇcníhosystému nezbytnˇe nutné, do adresáˇre /opt, aby bylo ušetˇrenomísto v koˇrenovémsouboro- vém systému. Tento neobvyklý pˇrístupje vynucen hardwarovým omeze- ním N900, u které je koˇrenovýsystém souboru namapován na NOR flash pamˇet’, která má pouze 256 MB. Adresáˇr /opt je namapován na 2 GB od- díl na 32 GB MMC flash pamˇeti.Pˇrestožeje ve vˇetšinˇepˇrípad˚uoptifikace jednoduchá a existují také poloautomatické optifikaˇcnískripty, m ˚užepor- tování vˇetších softwarových projekt ˚ujiž vyžadovat nejen úpravy balíˇck˚u ale i rozsáhlé zásahy do zdrojového kódu.

2.7.1 Otevˇrenost Jelikož je Maemo 5 linuxovou distribucí, jsou všechny zmˇeny, provedené Nokií na kernelu21 v souladu s GPL[37], všem k dispozici. Mnoho ovladaˇc˚u pro N900 bylo také zaˇclenˇenodo hlavní vˇetvejádra. Dostupnost zdrojo- vých kód ˚usamozˇrejmˇeplatí i pro všechny další GPL komponenty, které

21. ve verzi 2.6.28

17 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM byly pro Maemo 5 upraveny22. Rovnˇežnˇekterénˇekterékomponenty, které byly vytvoˇrenypˇrímopro Maemo jako napˇr.grafické prostˇredía knihovna Hildon[38] byly zveˇrejnˇenépod svobodnou licencí. Další komponenty, aplikace a ovladaˇcevšak z ˚ustalyuzavˇrené.Komu- nitním iniciativám to v souˇcasnostizp ˚usobujeproblémy pˇriúdržbˇea dal- ším vývoji platformy. Komunita proto již nˇekteréaplikace nahradila kom- patibilní svobodnou alternativou. Hlavní problém však nadále tvoˇríuza- vˇrenýovladaˇcGPU, který brání užití jiného kernelu než toho souˇcasného vycházejícího z prastaré ˇrady2.6.28. Vzhledem ke složitosti tohoto ovla- daˇceje však nepravdˇepodobné,že dojde k jeho nahrazení svobodným ovla- daˇcem,a Maemo 5 tak proto pravdˇepodobnˇev dohledné budoucnosti z ˚u- stane u kernelu ˇrady2.6.28. Navzdory staré verzi je kernel nyní pod oznaˇce- ním Kernel Power[39] spravován Maemo komunitou23 a obsahuje mnoho backport ˚uz novˇejšíchverzí kernelu.

2.7.2 Grafický systém

Jako grafický systém na Maemo 5 slouží X-server. Grafické prostˇredíje za- loženo na GTK s rozšíˇrenímzvaným Hildon a na hardwarovˇeakcelerované animaˇcníknihovnˇeClutter[40]. Použití kombinace GTK + Hildon navazuje na pˇredchozígenerace systému Maemo; Clutter je pak novinkou, která na N900 v mezích možností zpˇrístupˇnujeimplementaci efekt ˚ua animací, oˇce- kávaných od grafického rozhraní moderních chytrých telefon ˚u. V souvislosti s akvizicí spoleˇcnostiTrolltech spoleˇcnostíNokia bylo na Maemo 5 pozdˇejipˇridánataké podpora pro grafickou knihovnu Qt. Vývo- jáˇrimohou vytváˇretQt aplikace, využívající jak klasický koncept QWidgets, tak aplikace v QML/Qt Quick. Existuje také komunitní port Harmattan Qt Components. 3D akcelerace grafiky je zpˇrístupnˇenarozhraním OpenGL ES 1.1 a 2.0, ovšem bez podpory vertikální synchronizace. Tato skuteˇcnostse v nˇekte- rých pˇrípadechprojevuje mírným „trháním“ obrazu pˇripˇrekreslování ob- razovky. Vzhledem k tomu, že ovladaˇcGPU je uzavˇrenýa šance na jeho aktualizaci je nulová, nebude vertikální synchronizace na Maeamu 5 prav- dˇepodobnˇenikdy k dispozici.

22. patche pro GTK, Clutter 23. hlavním vývojáˇremje Pali Rohár z MFF CUNI

18 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.7.3 Multimédia

Maemo 5 nabízí široké možnosti práce s multimédii[41]. Dekódování vi- dea funguje prostˇrednictvímmultimediálního frameworku GStreamer[42] a umožˇnujevyužití hardwarovˇeakcelerovaného dekódování nˇekterýchfor- mát ˚u.GStreamer také slouží pro práci s videem z kamery/fotoaparátu. Práci s audiem slouží framework Pulseaudio[43] a dekódování audia bˇežípˇrevážnˇena procesoru. Podle údaj ˚uuvedených v dokumentaci je tomu tak proto, že použití DSP pro dekódování audia m ˚užemít na N900 v koneˇc- ném d ˚usledkuvyšší režii než prosté dekódování na CPU. K dispozici je rovnˇežrozhlasový subsystém N900 – který podporuje jak poslech analogových rozhlasových stanic, tak vysílaní audia na rozhlasové frekvenci s dosahem nˇekolikametr ˚u24.

2.7.4 Distribuce softwaru

Jelikož Maemo 5 vychází z Debianu, používá jeho mírnˇeupravený balíˇc- kovací systém. Proto je napˇríkladmožné na Maemo vkládat do control souboru base64 kódovanou ikonu aplikace (která slouží k zobrazení ikony ve správci aplikací) nebo také vložit adresu projektového bugrackeru. Ba- líˇckyje také nutné optifikovat. Distribuce softwaru k uživatel ˚umprobíhá pomocí hlavního repositáˇre zvaného Extras[44], který se skládá ze tˇrívˇetví: • Extras – stabilní repositáˇrpˇredinstalovanýna všech N900 • Extras-Testing – testovací repositáˇr • Extras-Devel – vývojový repositáˇr Do Extras-Devel posílají vývojáˇrisvoje aplikace a mohou je odtud dále posí- lat do Extras-Testing. V Extras-Testing probíhá komunitní testování aplikací – tzn. že uživatelé testují jednotlivé aplikace a udˇelujíjim kladné ˇcinega- tivní hodnocení. Aplikaˇcníbalíˇcek,který získá celkem 6 kladných hlas ˚u,je po uplynutí desetidenní karantény vpuštˇendo stabilního repositáˇreExtras. V Maemo 5 jsou všechny balíky rovnocenné, libovolný balík v systému je tedy možné odinstalovat nebo nahradit. Tato skuteˇcnostumožnila vznik nejen vznik komunitního kernelu, ale i projektu komunitní údržby distri- buce, zvaného CSSU[45]. Vedlejším efektem plné kontroly nad balíˇckyje však to, že nevhodnou manipulací s balíky m ˚užeuživatel systém dostat do stavu, ve kterém pˇrestanoufungovat nˇekteréd ˚uležitéfunkce nebo systém dokonce ani nenabootuje.

24. tzv. FM transmitter

19 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.7.5 Vývoj softwaru Maemo 5 oficiálnˇepodporuje tvorbu grafických aplikací postavených na grafické knihovnˇeGTK s rozšíˇrenímHildon, které usnadˇnujetvorbu apli- kací pro dotykovou obrazovku. Dodateˇcnˇebyla také pˇridánapodpora pro vývoj aplikací založených na grafické knihovnˇeQt. Na Maemo 5 je s pomocí Qt možné vytváˇretjak klasické QWidget aplikace, tak aplikace v QML/Qt Quick. Podobnˇejako na jiných platformách se pro vývoj GTK aplikací používá jazyk C a pro vývoj Qt aplikací jazyk C++. Oficiálnˇeje rovnˇežpodporována tvorba GTK i Qt aplikací v jazyce Python, ˇcehožvyužívá velké množství populárních program ˚uurˇcenýchpro Maemo 525. Mnoho aplikací fungujících v pˇríkazovém ˇrádkuna Maemo 5 funguje bez úprav, staˇcíje pouze zkompilovat.

2.7.6 Hardware Mobilní operaˇcnísystém Maemo 5 Fremantle byl vyvinut spoleˇcnostíNo- kia pro chytrý telefon N900[48] a na jiném zaˇrízenínebyl nikdy nasazen nasazen. Protože znaˇcná ˇcást kritických systémových komponent Maemo 5 je uzavˇrená,není komunitní port na jiný hardware pravdˇepodobný.Vzhle- dem k tomu, že spoleˇcnostNokia na konci roku 2012 dokonce pˇrevedla správu platformy Maemo na uživatelskou komunitu, nelze oˇcekávatdalší „oficiální“ zaˇrízenís Maemo 5.

2.8 MeeGo 1.2 Harmattan

MeeGo 1.2 Harmattan je další operaˇcnísystém pro mobilní zaˇrízení,který vyvinula firma Nokia. Tˇrebažejeho název vyvolává dojem, že tato plat- forma je založená na projektu MeeGo, navazuje tento operaˇcnísystém ve své podstatˇena projekt Maemo. Neoficiálnˇebývá proto „Harmattan“ ozna- ˇcovánjako Maemo 6.

2.8.1 Architektura Harmattan se velmi podobá operaˇcnímusystému Maemo 5, protože pou- žívá stejný balíˇckovacísystém, stejný systém pro práci s grafikou, zacho- vává i použití DBUSu nebo dostupnost Pythonu. O databázi kontakt ˚use

25. gPodder[46], FMRadio, modRana[47], PyGTKEdit, Mieru a další

20 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

Obrázek 2.5: Maemo 5 Fremantle na chytrém telefonu Nokia N900 i na Harmattanu stará Tracker[49], o video Gstreamer a o zvuk Pulseau- dio. Mnoho balíˇck˚uz Maemo 5 se verzi pro Harmattanu liší pouze mírnˇe vyšším ˇcíslemverze. Hlavní odlišností od Maemo 5 je výchozí grafická knihovna – zatímco na Maemo 5 bylo rozhraní tvoˇreno kombinací GTK, Hildon & Clutter, na Harmattanu je celé rozhraní založeno na grafické knihovnˇeQt ve verzi 4.7. Další odlišností je „bezpeˇcnostnísystém“ Aegis, který se více ˇciménˇe úspˇešnˇesnaží udržet integritu platformy. Platformy Maemo a Harmattan se od sebe liší zp ˚usobemkompilace bi- nárních komponent: • pro Harmattan jsou zkompilovány s podporou hardwarového zpra- cování ˇcísels plovoucí desetinnou ˇcárkou26 • Maemo 5 je naopak zkompilováno pouze s podporou softwarového zpracování ˇcísels plovoucí desetinnou ˇcárkou27. Hlavní výhodou „hardfloat“ komponent je vˇetšírychlost pˇrizpracovávání ˇcíselv plovoucí desetinné ˇcárce. Hardfloat a softfloat jsou mezi sebou ne- kompatibilní28, takže míchání binárních komponent Maemo 5 a Harmat- tanu vˇetšinavývojáˇr˚upˇrílišnedoporuˇcuje. Pˇrestoexistuje komunitní pro- jekt, který se o to snaží, a to o podporu spouštˇeníaplikací z Harmattanu na Maemo 5 v binární podobˇebez nutnosti rekompilace[50].

26. hardware floating point, ˇcilizkrácenˇe„hardfloat“ 27. software floating point, neboli „softfloat“ 28. jejich kombinování m ˚uževést k nedefinovanému chování systému

21 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

Obrázek 2.6: N900 s vysunutou klávesnicí a vyklopeným stojánkem

2.8.2 Otevˇrenost

Podobnˇejako Maemo 5 obsahuje Harmattan ke škodˇevˇeciˇraduuzavˇre- ných komponent. Jedná se napˇr.o kompozitor, nˇekterévstupní metody a ovladaˇcegrafické karty a GPS. K dalším sysytémovým komponentám jako jsou napˇr.grafické frameworky Qt Components a MeeGo Touch ˇciklá- vesnicový framework Maliit, zdrojové kódy k dispozici jsou. OtevˇrenostHarmattanu velmi negativním zp ˚usobemovlivˇnujebezpeˇc- nostní framework Aegis[51], který ve svém výchozím nastavení zabraˇnuje modifikaci nˇekterýchˇcástísystému, tzn. nejde napˇr.provádˇetchanegroot, pˇripojitvzdálený systém pˇressshfs anebo nahradit nˇekterésystémové ba- líˇcky. Aplikace navíc pro pˇrístupk nˇekterým rozhraním OS potˇrebujíto- keny, pˇridˇelovanésystémem Aegis. Tyto tokeny mohou mít pouze ty apli- kace, které byly do systému nainstalovány z balíˇcku.Vzhledem k tomu, že tvorba a instalace balíˇckutrvá nezanedbatelnou dobu, zdržuje tento poža- davek systému Aegis výrazným zp ˚usobemvývoj nˇekterýchaplikací. Výchozí nastavení Aegis uživatel nem ˚uženavíc bˇežnýmiprostˇredky zmˇenit.V této oblasti se však projevila iniciativa komunity, ze které vzešel projekt INCEPTION[52], který využívá implementaˇcníhonedostatku sys- tému Aegis k pˇredáníkontroly nad systémem zpˇetuživateli. Po aplikaci INCEPTION Aegis sice stále bˇeží,uživatel jej však m ˚uželibovolnˇekonfi- gurovat.

22 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

Další možností jak obejít Aegis, je nahrazení výchozího linuxového já- dra komunitním jádrem. Nahrazení výchozího jádra zp ˚usobídeaktivaci bezpeˇcnostníhosystému Aegis a odstranˇenívšech výše jmenovaných ome- zení. Zároveˇnvšak nˇekteréˇcástisystému, které s Aegis poˇcítají,mohou pˇre- stat fungovat.

Otevˇrenostvývoje

Vývoj MeeGo 1.2 Harmattan byl spoleˇcnostíNokia po vydání chytrého te- lefonu N9 ukonˇcen.Ještˇenˇekolikmˇesíc˚upo vydání zbývající vývojáˇrizpra- covávali hlášení o chybách od uživatelské komunity, po vydání aktualizace PR 1.3 ale veškerý oficiální vývoj platformy definitivnˇeustal. Vˇetšinavývo- jáˇr˚u,kteˇríse na vývoji Harmattanu podíleli, z Nokie odešla, mnoho z nich se stalo zamˇestnancispoleˇcnostiJolla. Vzhledem k tomu, že nˇekteréN9 jsou doposud v záruce, lze pravdˇepodobnˇev budoucnu dobu oˇcekávatkritické bezpeˇcnostníaktualizace nebo aktualizace zabudovaných aplikací29. Nic také nenasvˇedˇcujetomu, že by spoleˇcnostNokia mˇelav úmyslu vy- dat zdrojový kód uzavˇrenýchkomponent platformy MeeGo 1.2 Harmattan.

2.8.3 Balíˇckování

Podobnˇejako Maemo 5 využívá také Harmattan balíˇckovacísystém pochá- zející z Debianu. Jedinou podstatnou odlišností na Harmattanu je možnost pˇridánímanifestu pro bezpeˇcnostnísystém Aegis. Bez manifestu, který po- žaduje odpovídající oprávnˇení,nemá aplikace pˇrístupk nˇekterýmdat ˚um, rozhraním a funkcím. Bez manifestu nelze napˇr.používat GPS, kameru ˇci pracovat s databází kontakt ˚u. Výraznˇeodlišný je však zp ˚usobdistribuce softwaru. Neexistuje pˇrímý ekvivalent pˇredinstalovanéhokomunitního repositáˇreExtras, vˇetšinaapli- kací je distribuována prostˇrednictvímrepositáˇre/elektronického obchodu Nokia Store30[53]. Nokia Store pˇrijímá proprietární i otevˇrenéaplikace a vý- vojáˇrm ˚užerozhodnout, jestli jeho aplikace bude k dispozici za úplatu nebo zcela zadarmo. Aplikace, odeslané do Nokia Store, procházejí pˇredzveˇrej- nˇenímmanuální kontrolou kvality, která v závislosti na vytížení kontrol- ního týmu zp ˚usobujezhruba týdenní prodlevu mezi odesláním a zveˇrej- nˇenímaplikace. Velkým nedostatkem Nokia Store je chybˇejícípodpora pro pˇridávánízávislostí, aplikace se tak musí omezit bud’to pouze na knihovny

29. pˇríklademm ˚užebýt aktualizace klienta na zaˇcátkuroku 2013 30. dˇríveznámého jako Ovi Store

23 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM dostupné ve výchozích repositáˇrích,nebo musí všechny závislosti zaˇclenit do svého balíˇcku. Komunitní alternativou Nokia Store mˇelbýt projekt Apps for MeeGo[54], který mˇelsloužit jako komunitní aplikaˇcnírepositáˇrnejen pro Harmattan, ale i pro další platformy, které jsou založené na pˇríbuznémprojektu MeeGo. Apps for MeeGo využívá OBS pro správu instalaˇcníchbalíˇck˚ua podobnˇe jako Maemo Extras funguje na základˇekomunitní kontroly kvality. Vzhle- dem k absenci jakýchkoli informací o dalším vývoji tohoto projektu a po- mˇernˇemalému množství dostupných aplikací, je velmi pravdˇepodobné,že vývoj tohoto projektu byl opuštˇen. Kv ˚uliabsenci fungujícího komunitního repositáˇreje tak mnoho aplikací pro Harmattan distribuováno ze samostatných repositáˇr˚u,které provozují jednotliví vývojáˇri,nebo pˇrímov podobˇeinstalaˇcníchbalíˇck˚u.

2.8.4 Vývojové prostˇredí

Oficiálním vývojovým prostˇredím pro MeeGo 1.2 Harmattan je Qt SDK[55]. Jako kompilaˇcníprostˇredíje použit systém Scratchbox[56], jako IDE slouží Qt Creator[57]. K dispozici je také softwarový simulátor zaˇrízeníNokia N9. Použití Qt SDK však není nutnou podmínkou pro vývoj aplikací na Harmattan. Pokud není nutné zdrojový kód aplikace kompilovat, jako je tomu u jednoduchých aplikací používajících pouze QML a Javascript nebo aplikací psaných v Pythonu, postaˇcípro tvorbu aplikace nástroje, dostupné v repositáˇríchvˇetšinylinuxových distribucí.

2.8.5 Hardware

Jediným oficiálnˇevydaným zaˇrízeníms MeeGo 1.2 Harmattan je chytrý telefon [58]. Jedná se o dotykový telefon bez klávesnice s jedno- jádrovým procesorem, 1GB RAM a AMOLED obrazovkou. KromˇeN9 vyrobila spoleˇcnostNokia ještˇejedno zaˇrízenís Harmatta- nem – a to chytrý telefon Nokia N950[59][60]. Toto zaˇrízenívšak bylo vy- robeno pouze v poˇctunˇekolikatisíc kus ˚ua nebylo nikdy oficiálnˇeuvedeno na trh. Veškeré existující exempláˇreN950 byly pˇridˇelenyvývojáˇr˚umv rámci vývojáˇrskýchprogram ˚u,nebo sloužily jako hlavní cena v soutˇežíchspon- zorovaných spoleˇcnostíNokia. N950 pohání stejný SOC jako N9, liší se však rozklápˇecímtˇelemvyrobeným z hliníku, které obsahuje hardwarovou klá- vesnici. Dale se N950 od N9 liší použitím LCD obrazovky místo AMOLED a absencí technologie NFC[4][5].

24 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

Obrázek 2.7: MeeGo 1.2 Harmattan na chytrém telefonu Nokia N9

2.9 Android

Android sice obsahuje linuxový kernel, od klasických linuxových distribucí se však výraznˇeodlišuje rozdílným pojetím userspace. Dalo by se konstato- vat, že se oproti klasickému GNU/Linux jedná o Linux-GNU. V userspace nejsou totiž použity klasické GPL licencované GNU utility, které byly na- hrazeny oˇrezaným BSD licencovaným ekvivalentem. Androidu však chybí i další souˇcásti,bˇežnése vyskytující v klasických linuxových distribucích, jako jsou systém pro správu oken, pˇredinstalovanýemulátor terminálu, DBUS ˇcibalíˇckovacísystém s podporou automatického ˇrešenízávislostí. Také samotný linuxový kernel v Androidu obsahuje ˇradupatch ˚unekompa- tibilních s hlavní vˇetvíjádra. Jejich poˇcetse však v poslední dobˇepostupnˇe daˇríredukovat[61].

2.9.1 Architektura

Základem platformy Androidu je linuxový kernel, další systémovou vrst- vou jsou ovladaˇcezaˇrízenía knihovna jazyka C, známá jako Bionic[62]. Bi- onic není bohužel kompatibilní s GNU libc ˇciEGLIBC používanou na bˇež- ných linuxových distribucích, což napˇr.ztˇežujepoužití binárních ovladaˇc˚u pro Android v jiných linuxových distribucích. Na systémovém základˇe,který tvoˇríjádro, ovladaˇcea Bionic, pak bˇeží

25 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM virtuální stroj zvaný Dalvik, umožˇnujícíbˇehaplikací v jazyce podobném Javˇe.O pˇrístupke grafice se na Androidu stará systém Surface flinger. Dále je na Androidu použit systém pro sandboxování aplikací, systém pro mezi- procesovou komunikaci, zvaný Binder a systém pro správu balíˇck˚u.

2.9.2 Otevˇrenost Veškerý zdrojový kód Androidu je k dipozici pod svobodnými licencemi, úpravy jádra pod GPL a zbytek systému pod BSD licencí. Vývoj systému je naopak zcela uzavˇrenýa plnˇeˇrízenýspoleˇcností Google a jejími korpo- rátními partnery z Open Handset Aliance[2]. Clenovéˇ OHA mohou nejen ovlivˇnovatvývoj Androidu, ale mají také po celou dobu vývoje pˇrímýpˇrí- stup ke zdrojovým kód ˚um.To jim dává urˇcitoukonkurenˇcnívýhodu, spo- ˇcívajícív rychlejší uvedení produkt ˚us novou verzí Androidu na trh. Plné zveˇrejnˇenízdrojového kódu nové verze Androidu totiž zpravidla následuje s urˇcitýmzpoždˇenímaž po vydání prvních zaˇrízenís touto verzí. Dalším potenciálním rizikem pro otevˇrenostprojektu Android je skuteˇc- nost, že Google a OHA jsou výhradními vlastníky licence ke zdrojovému kódu, samozˇrejmˇes výjimkou linuxového jádra. Google tedy m ˚užekdy- koli pˇrestatzdrojové kódy distribuovat a tento postup bude pˇrestolicenˇcnˇe zcela v poˇrádku. Míru otevˇrenostiAndroidu ovlivˇnujetaké distribuování vˇetšinykódu pod licencí BSD. Od výrobc ˚uzaˇrízenítak není na rozdíl od GPL vyžado- váno poskytování provedených zmˇen.Mnoho zaˇrízení s Androidem obsa- huje ˇcásteˇcnˇei díky tomu ˇraduproprietárních komponent a zmˇenbez zve- ˇrejnˇenéhozdrojového kódu. Tento fakt znesnadˇnujepozici vývojáˇr˚ua uži- vatel ˚u,kteˇríse na takovém zaˇrízenísnaží provádˇetúpravy systému.

2.9.3 Balíˇckování Software pro Android je distribuován v balíˇccíchtypu APK[63], což je ba- líˇckovacíformát vycházející z archivaˇcníhosouborového formátu JAR[64]. Internˇese jedná o archiv, který obsahuje aplikaˇcnísoubory a instalaˇcníme- tadata. Pro Android existuje ˇradarepositáˇr˚u,které mohou pro uživatele sloužit jako zdroj aplikací. Nejvˇetšírepositáˇrprovozuje pˇrímospoleˇcnostíGoogle pod názvem Google Play[65]. Jednotlivé repositáˇrenabízejí aplikace všeho druhu a obsahují také systém, který umožˇnujejejich hodnocení a posílaní zpˇetnévazby od uživatel ˚uk vývojáˇriaplikace31. Kontrola aplikací odesla-

31. tyto systému jsou však ve vˇetšinˇepˇrípad˚upouze jednocestné: vývojáˇrtotiž vˇetšinou

26 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM ných do Google Play je plnˇeautomatická, díky tomu jsou nové aplikace do- stupné ke stažení v ˇrádudesítek minut, ne dn ˚u,tak jak je tomu v pˇrípadˇe manuálnˇeprovádˇenékontroly kvality. Google Play a a žádaný další alternativní repositáˇr,se kterým jsem do- sud setkal, nepodporuje závislosti mezi balíˇcky. Rešeníˇ závislostí tak na An- droidu musí suplovat aplikace. Potˇrebnéknihovny jsou tedy bud’to pˇriba- lovány do instalaˇcníhoAPK souboru nebo pˇriprvním spuštˇeníaplikace stahovány z Internetu. Další možným ˇrešenímje nainstalování speciální aplikace, která plní úlohu správce balík ˚u.Tato aplikace má na starost sta- hování, aktualizaci a poskytování knihoven dalším aplikacím. Jako pˇríklad poslouží program Ministro, což je souˇcástprojektu Necessitas. Ministro se stará se o efektivní poskytování Qt knihoven aplikacím, které tuto grafic- kou knihovnu používají na Androidu. Android ve výchozím nastavení rovnˇež umožˇnujepˇrímouinstalaci apli- kací z APK soubor ˚u.Nˇekteˇrívýrobci zaˇrízenínebo mobilní operátoˇrivšak tuto funkci vypínají. Z vývojáˇrskéhohlediska je také dobré vˇedˇet,že Android po instalaci aplikace uchovává kopii instalaˇcníhobalíˇcku.Tento pˇrístupumožˇnujevrá- cení aplikace do výchozího stavu bez nutnosti opˇetovnéhostažení insta- laˇcníhobalíku32. Vedlejším efektem však je, že aplikace zabírají více místa (velikost nainstalované aplikace + velikost balíku). Hry a další aplikace, které vyžadují velké množství lokálnˇedostupných dat33, proto radˇejitato data pˇriprvním spuštˇeníaplikace stahují z Internetu.

2.9.4 Vývojové prostˇredí Primárním vývojovým prostˇredímpro platformy Android je tzv. Android SDK[66], založená na frameworku Eclipse[67] a zamˇeˇrenána vývoj apli- kací v programovacím jazyce podobném Javˇe.Další oficiálnˇepodporova- nou možností je Android NDK, což je prostˇredíumožˇnujícívývoj nativních aplikací v C/C++ a jejich kompilaci pro Android. NDK využívají zejména hry ˇciprojekty založené na knihovnách napsaných v C/C++. Zajímavou alternativou k oficiálním vývojovým nástroj ˚uje Necessitas SDK[68], která umožˇnujetvorbu aplikací v C++/QML/Javascriptu pro An- droid s využitím grafické knihovny Qt. K dispozici je také IDE Qt Creator. Na Necessitas SDK pak staví nadˇejnýprojekt pydroid[69], který zpˇrístup- nemá možnost na kritiku uživatel ˚ureagovat 32. také díky tomu nemusí po uživateli vyžadovat instalaˇcnísoubor, pokud byla aplikace manuálnˇenainstalována ze souboru 33. složitˇejšíhry, slovníky, navigaˇcnísystémy

27 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

Obrázek 2.8: Android 4.0 na tabletu HP TouchPad (komunitní distribuce CyanogenMod 9)

ˇnujetvorbu aplikací pro Android v Pythonu a Qt.

2.9.5 Hardware

Zaˇrízenís Androidem jsou dispozici v mnoha r ˚uznýchformátech, pˇrevážnˇe se však jedná a chytré telefony a tablety. Co se týˇcecelkového poˇctudopo- sud vyrobených zaˇrízení,oznámila spoleˇcnostGoogle v záˇrí2012[70], že bylo již aktivováno celkem 500 milion ˚uzaˇrízenís Androidem a dennˇeje jich aktivováno kolem 1.3 milionu.

2.10 Tizen

Tizen[71] je operaˇcnísystém pro mobilní zaˇrízení,vyvíjený spoleˇcnˇefir- mami Samsung a Intel. Oficiálnˇebývá Tizen oznaˇcovánjako pokraˇcování projektu MeeGo (na kterém se firma Intel dˇríve podílela), z projektu Me- eGo však neobsahuje témˇeˇrnic. Tizen je ve skuteˇcnostipˇrevážnˇezaložen na recyklaci mobilních platforem, který vyvinula firmou Samsung pod ná- zvy LiMo a Bada.

28 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

Obrázek 2.9: Tizen na vývojáˇrskémzaˇrízenízvaném lunchbox

2.10.1 Otevˇrenost

Tˇrebažeje Tizen navenek prezentován jako otevˇrenáplatforma, probíhá vˇetšinavývoje kompletnˇeza zavˇrenýmidveˇrmi.Aˇckolise má oficiálnˇejed- nat o spolupráci firem Samsung a Intel, má v rozhodování o dalším smˇeru vývoje evidentnˇevždy první slovo firma Samsung. Tato provádí dokonce jednostranná rozhodnutí o dalším vývoji Tizenu, která bez jakéhokoli pˇred- chozího upozornˇenípoškozují práci vývojáˇr˚ufirmy Intel i dalších subjekt ˚u, snažících se na vývoji se Samsungem spolupracovat[72][73]. Tento stav má nepˇríznivývliv na vývojáˇrskoukomunity. Je pravdˇepo-

Obrázek 2.10: Rozebrané zaˇrízení lunchbox

29 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM dobné, že pouze málo vývojáˇr˚ubude ochotno vˇenovatsv ˚ujˇcasplatformˇe Tizen, když jejich snažení m ˚užepˇrijítkdykoli nazmar kv ˚ulidalší pˇredem neohlášené zásadní zmˇenˇeplatformy. Podobnˇenepˇrízniváje situace v oblasti zdrojového kódu této platformy. Zdrojové kódy nejsou bˇehemvývoje v ˚ubeck dispozici a podobnˇejako na Androidu jsou zveˇrejnˇenyteprve po vydání nové verze Tizenu. Zdrojové kódy jsou navíc distribuovány pod spletí r ˚uznýchlicencí, z nichž nˇekteré v ˚ubecnejsou open source kompatibilními licencemi. Licenˇcní zmatek tak brání využití komponent vyvinutých pro Tizen na jiných mobilních plat- formách.

2.10.2 Balíˇckování Balíˇckovacísystém Tizenu byl bˇehemvývoje platformy nˇekolikrátbez ja- kéhokoli pˇredchozíhoupozornˇenízmˇenˇen.Po urˇcitoudobu byl používán debianí balíˇckovacísystém, v souˇcasnostije s nejvˇetšípravdˇepodobností používán balíˇckovacísystém RPM. Vzhledem k tomu, že žádná zaˇrízeníplatformy Tizen, urˇcenápro kon- cové uživatele, doposud vydána nebyla, není jasné, jak bude probíhat dis- tribuce aplikací smˇerem od vývojáˇr˚uk uživatel ˚um.

2.10.3 Vývojové prostˇredí Po oficiálním zahájení projektu byl Tizen oznaˇcovánza platformu podpo- rující pouze webové aplikacích. Spoleˇcnˇes vydáním Tizenu 2.0 však do nˇejbyla pˇridánataké podpora pro tvorbu nativních aplikací34. Pro Tizen je k dispozici SDK, vˇcetnˇesimulátoru zaˇrízení.

2.10.4 Hardware Na trh zatím nebylo uvedeno ani jedno zaˇrízenís Tizenem urˇcenépro kon- cové zákazníky. Existuje však již nˇekolikprototyp ˚upro vývojáˇre,z nichž se nejˇcastˇejivyskytuje prototyp zvaný „lunchbox“, vyrábˇenýfirmou Sam- sung.

2.11 Ubuntu Touch

Ubuntu Touch je mobilní platforma vyvíjená pro chytré telefony a tablety spoleˇcnostíCanonical. Tato platforma je pomˇernˇenová a její vývoj teprve

34. vycházející z platformy Bada

30 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM nedávno odstartoval. Momentální stádium vývoje bylo v únoru 2013 spo- leˇcnostíCanonical oznaˇcenojako „developer preview“.

2.11.1 Architektura Platforma Ubuntu Touch byla navržená tak, aby byla kompatibilní s bi- nárními ovladaˇcipro Android. Kompatibilita je zajištˇenáprostˇrednictvím libhybris[74], tj. knihovny vyvinuté Carstenem Munkem, vývojáˇremspo- leˇcnostiJolla, který pracuje na vývoji platforem Mer a Sailfish. Kompatibi- lita s ovladaˇcipro Android znamená, že je možné Ubuntu Touch triviálnˇe portovat na vˇetšinumoderních zaˇrízenípodporujících Android. Také zbytek Ubuntu Touch se skládá pˇrevážnˇez r ˚uznýchopen source knihoven, vyvinutých pro jiné projekty. Ubuntu Touch používá grafický systém SurfaceFlinger, p ˚uvodnˇevytvoˇrenýfirmou Google pro Android; pro telefonii slouží framework , pro správu úˇctuaccount-sso a pro zpracování vstupu od uživatele slouží framework Maliit – všechno jsou to komponenty p ˚uvodnˇevyvinuté pro Maemo a MeeGo. Ubuntu Touch má podle oficiálních vyjádˇrenítu zajímavou vlastnost, že dostateˇcnˇevýkonná zaˇrízeníby po „zadokování“, pˇripojenímonitoru a klávesnice mˇelauživateli nabídnout plnohodnotné desktopové prostˇredí. Zatím není jasné, nakolik tato funkce bude v praxi použitelná. Grafické rozhraní Ubuntu Touch by mˇelo podporovat zobrazení více aplikací souˇcasnˇe35 – což je funkci, kterou vˇetšinamobilních platforem ne- disponuje.

2.11.2 Otevˇrenost Zdrojové kódy Ubuntu Touch jsou k dispozici pod open source licencemi. Tˇrebaževývoj zezaˇcátkuprobíhal nˇekolikmˇesíc˚utajnˇe,po oficiálním zve- ˇrejnˇeníprojektu se zdá, že vývoj pˇrešeldo „otevˇreného“ režimu. Reposi- táˇrezdrojového kódu jsou nyní veˇrejnˇek dispozici, existují veˇrejnékomu- nikaˇcníkanály a do vývoje je možné se kdykoli zapojit[75].

2.11.3 Balíˇckování Stejnˇejako distribuce Ubuntu pro stolní poˇcítaˇcepoužívá i mobilní plat- forma Ubuntu Touch debianí balíˇckovacísystém. Jaká bude struktura re- positáˇr˚ua jestli budou podporovány závislosti mezi balíˇcky– to v této fází vývoje ještˇenení jasné.

35. v kontextu Ubuntu Touch je tato funkce oznaˇcovánajako „side stage“

31 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.11.4 Vývojové prostˇredí Pro vývoj aplikací je k dispozici SDK, zamˇeˇrenána vývoj aplikací v C++ a Qt Quick. Grafická knihovna Qt je dostupná ve verzi 5.0. Vývoj aplikací v Pythonu je zatím komplikován chybˇejícímrozhraním, které by plnˇepodporovalo všechny funkce Qt 5. Teoretickým ˇrešenímto- hoto problému by mohla být knihovnu PyQt, která podporuje Qt 5 za pˇred- pokladu, že bude použita pouze funkcionalita na úrovni Qt 4. Pˇrestožeza- tím projekty PySide ani PyQt nezveˇrejnilyˇcasovýplán pro plnou podporu všech funkcí Qt 5, je to snad jen otázkou nepˇrílišvzdálené budoucnosti. Pak bude možné i na Ubuntu Touch vytváˇretplnohodnotné aplikace v Pythonu.

2.11.5 Hardware Navzdory rané fázi vývoje již Ubuntu Touch podporuje instalaci na ce- lou ˇradumobilních zaˇrízení,urˇcenýchp ˚uvodnˇepro Android[76]. Oficiálnˇe jsou podporovány chytré telefony Galaxy Nexus a Nexus 4 a tablety Nexus 7 a Nexus 10. Mnoho dalších zaˇrízeníje dále podporováno komunitními porty.

2.12 BlackBerry 10

Jedná se o platformu pro mobilní zaˇrízení,kterou vyvíjí kanadská firma BlackBerry36. Platforma BlackBerry 10[77] je založena na RTOS QNX, který je již dlouhou dobu používán v mnoha pr ˚umyslovýchodvˇetvích.

2.12.1 Architektura BlackBerry 10 je postavena na RTOS QNX, který zajišt’uje jak nízkoúrov- ˇnovéfunkcionalitu, tak veškeré základní systémové utility. Operaˇcnísys- tém je sice POSIXovˇekompatibilní, paleta ve výchozím stavu dostupných utilit je však velmi malá, a to i ve srovnání s omezenou nabídkou utilit na Androidu. Systém poskytuje nízkoúrovˇnovérozhraní pro jazyk C/C++ zpˇrístupˇnujícívˇetšinufunkcí: pˇrístupke grafice, práci s audiem, senzorová data a tak podobnˇe.Na tomto nízkoúrovˇnovémrozhraní staví pravdˇepo- dobnˇevšechny vysokoúrovˇnovéframeworky používané na BlackBerry 10. Vzhledem k tomu, že BlackBerry 10 je proprietární operaˇcnísystém a jeho zdrojové kódy nejsou k dispozici, je zjišt’ování podrobnˇejšíchinfor- mací o jeho struktuˇreobtížné.

36. do konce ledna 2013 se tato firma jmenovala RIM – Research In Motion

32 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.12.2 Otevˇrenost Vzhledem k tomu, že je BlackBerry 10 proprietární OS, nejsou jeho zdrojové kódy volnˇek dispozici a vývoj plnˇeprobíhá za zavˇrenýmidveˇrmi.Nˇekteré oficiálnˇepodporované frameworky pro vývoj aplikací jako napˇr.grafická knihovna Qt jsou však open source a spoleˇcnost BlackBerry se dokonce po- dílí na jejich vývoji. Hlavní grafický framework pro vývoj aplikací zvaný Cascades staví na Qt, jeho zdrojový kód je však uzavˇrený.

2.12.3 Balíˇckování BlackBerry 10 využívá balíˇckyve formátu BAR. Jedná se opˇeto klasický ba- líˇckovacíformát, tedy archiv, ve kterém jsou metadata a aplikaˇcnísoubory. Tento formát také podporuje kryptografické ovˇeˇreníintegrity balíˇcku. Hlavním distribuˇcnímkanálem je softwarový repositáˇr& obchod Blac- kBerry World, který je pˇreinstalovanýna všech zaˇrízeníchs operaˇcnímsys- témem BlackBerry 10. Aby byly aplikace v BlackBerry World zveˇrejnˇeny, musí splˇnovatˇradupodmínek a projít manuální kontrolou kvality. V závis- losti na vytížení testovacího týmu trvá kontrola kvality zhruba týden. Instalace aplikací z jiných zdroj ˚unež z „obchodu“ BlackBerry World je sice možná, daná aplikace však musí být podepsaná platným vydavatel- ským klíˇcem.Aplikace tak v zásadˇenemusí projít kvalitou kontroly a ne- musí splˇnovatpravidla oficiálního repositáˇre,vývojáˇrsi však musí od spo- leˇcnostiBlackBerry vyžádat platný vydavatelský klíˇc.Aplikaˇcníbalíˇcky, které nejsou podepsané platným klíˇcem,nedovolí systém v ˚ubecnainsta- lovat. Aplikace, které nebyly nainstalovány z podepsaného balíˇcku,neu- možní systém ani spustit. Díky tomu, že lze nainstalovat podepsané aplikace mimo hlavní repo- sitáˇr,není platforma BlackBerry 10 úplná walled garden. SpoleˇcnostBlac- kBerry však stále m ˚uženepˇrímorozhodovat o tom, který software bude na platformˇefungovat, a to prostˇrednictvímpˇridˇelovánívydavatelských po- depisovacích klíˇc˚uˇcirevokací tˇechexistujících.

2.12.4 Vývojové prostˇredí BlackBerry 10 je oproti ostatním mobilním platformám pomˇernˇeatypická oficiální podporou nˇekolikar ˚uznýchSDK. Kromˇeprimární SDK, která pod- poruje vývoj aplikací v C++ s použitím grafického frameworku Cascades, podporuje BlackBerry 10 rovnˇež: • vývoj v C/C++ s možností využití grafické knihovny Qt

33 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

• vývoj v HTML5 s pomocí WebWorks SDK • vývoj v Adobe Air • aplikace napsané pro platformu Android Kromˇeoficiálních vývojáˇrskýchnástroj ˚uexistují také komunitní pro- jekty, umožˇnujícítvorbu grafických aplikací v jazyce Python. Z Pythonu je díky projektu Tart možné použít framework Cascades. Díky mému portu PySide na BlackBerry 10 byly zpˇrístupnˇenytaké klasické Qt knihovny37. Použití PySide na této platformˇese podrobnˇejivˇenujekapitola popisující portování aplikace modRana na platformu BlackBerry 10.

2.12.5 Hardware Ještˇepˇredoficiálním globálním pˇredstavenímplatformy BlackBerry 10 byl pˇredch˚udcetohoto operaˇcníhosystému nasazen na sedmipalcový tablet, zvaný PlayBook. 30. ledna 2013 byla platforma BlackBerry 10 oficiálnˇeuve- dena a pˇritéto pˇríležitostibyla oznámena dvˇeprvní BlackBerry 10 zaˇrízení, zvaná Z10[78] a Q10[79]. BlackBerry Z10 je dotykový telefon s HD-ready obrazovkou o úhlo- pˇríˇcce4,2 palce, procesorem se dvˇemajádry a 2 GB RAM. Q10 se od Z10 liší menší obrazovkou (720x720 ˚us úhlopˇríˇckou3,1 palce), pod kterou se nachází ˇctyˇrˇradáQWERTY klávesnice.

2.13 webOS

WebOS[80][81] byl ambiciózní operaˇcnísystém pro mobilní zaˇrízení,ˇcás- teˇcnˇezaložený na webových technologiích. S jeho vývojem zaˇcalafirma Palm, která v lednu 2009 na trh uvedla první zaˇrízenís webOS OS, chytrý telefon [82]. V roce 2010 koupila Palm firma Hewlett-Packard, která s vývojem webOS dál pokraˇcovalaa vydala další chytré telefony ˇrady Pre a Veer a tablet TouchPad[83]. V srpnu 2011[84] však spoleˇcnost HP náhle oznámila ukonˇcenívývoje webOS a všech webOS zaˇrízení. Ofici- ální ukonˇcenívývoje vyvolalo ze strany vývojáˇr˚uaplikací postupné opuš- tˇeníplatformy. V pr ˚ubˇehuroku 2012 byl webOS uvolnˇenjako open source software pod MIT licencí, což vedlo ke vzniku projektu Open webOS[85]. V únoru 2013 ohlásila firma HP prodej webOS spoleˇcnostiLG, která plánuje nasazení webOS na svých „chytrých“ televizorech[86]. Ukonˇcenívývoje webOS mˇelojeden zajímavý vedlejší efekt: skladové zásoby webOS zaˇrízeníbyly vyprodány hluboko pod výrobní cenou, takže

37. použít lze QWidget, QML i Qt Components

34 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

Obrázek 2.11: BlackBerry 10 na vývojáˇrskémzaˇrízeníDev Alpha B tablet TouchPad tak bylo možné sehnat za 100$ v 16 GB verzi[87] a za 150$ v 32 GB. Protože si v tomto výprodeji TouchPad poˇrídilomnoho vývojáˇr˚u, objevují se stále nové zajímavé projekty, používající HP TouchPad jako vý- chozí zaˇrízení.Jedná se napˇr.o projekt vývoje otevˇrenýchovladaˇc˚upro mobilní GPU Adreno[88], dále o projekt podpory distribucí založených na Meru[89] nebo projekt na zprovoznˇeníUbuntu Touch[90]. Ve zmínˇenémvýprodeji se mi podaˇrilosi HP TouchPad za zvýhodnˇenou cenu opatˇrit.Na tablet jsem nainstaloval Android a používám jej pˇredevším pro vývoj aplikací pro Android s použitím Pythonu a grafické knihovny Qt. Díky TouchPadu jsem se také podrobnˇejiseznámil s platformou webOS38, která v praxi funguje velmi dobˇre,je však viditelnˇepoznamenaná ukonˇce- ním svého vývoje a nedostatkem aplikací tˇretíchstran.

2.13.1 Architektura Základ webOS se velmi podobal bˇežnélinuxové distribuci a byl vytváˇren s pomocí systému Openembedded[91]. Pro práci s grafikou nebyl použit X server, ale vlastní systém, založený na knihovnˇeDirectFB[92]. Ve verzi 3.0 byla ˇcástuživatelského rozhraní implementována s využitím grafické knihovny Qt39, která však ke škodˇevˇecinení dostupná pro aplikace tˇretích

38. Android jsem nainstaloval v režimu dualboot 39. odhadem verze v intervalu od 4.6 do 4.7

35 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

Obrázek 2.12: webOS na tabletu HP TouchPad stran. Webový prohlížeˇcje postaven na vykreslovacím jádˇreWebkit[93].

2.13.2 Otevˇrenost webOS zaˇcalsv ˚ujvývoj jako proprietární operaˇcnísystém, který však obsa- hoval mnoho ˇcástípod otevˇrenoulicencí jako napˇr.linuxové jádro nebo ba- líˇckovacísystém ikpg. Vývoj distribuce probíhal tzv. za zavˇrenýmidveˇrmi. V pr ˚ubˇehuroku 2012 však byl kompletní zdrojový kód webOS zveˇrejnˇen pod svobodnou licencí. Další vývoj nyní probíhá pod taktovkou projektu Open webOS již zcela veˇrejnˇeprostˇrednictvímprojektu na Githubu[94].

2.13.3 Balíˇckování

Jako balíˇckovacísystém slouží platformˇewebOS ipkg[95], používaný rov- nˇežnˇekolikadalšími embedded distribucemi. Kromˇevýchozího aplikaˇc- ního repositáˇre,zvaného App Catalog, lze na webOS zaˇrízenídoinstalovat komunitní repositáˇr,zvaný Preware[96]. Od verze 0.9.4 podporuje Preware dokonce závislosti mezi balíky[97], což je funkcionalita málokdy dostupná na poli mobilních platforem.

36 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.13.4 Vývojové prostˇredí Pro vývojáˇreaplikací je k dispozici SDK, která umožˇnujetvorbu aplikací založených na webových technologiích, Javascriptu a na prostˇredíchMojo a Enyo. Tzv. PDK umožˇnujetaké vývoj nativních aplikací s využitím multime- diální knihovny SDL. Vˇetšinuaplikací, vyvinutých pomocí PDK, tvoˇrily až na nˇekolikvýjimek hry. Mezi výjimky patˇrilynapˇr.emulátor terminálu, ˇcteˇckae-knih nebo port X serveru pro bˇehv aplikaˇcnímoknˇe. Vývojáˇrské komunitˇese rovnˇežna platformˇewebOS podaˇrilo rozjet knihovnu PyGame40 a nˇekolikjednoduchých her napsaných v Pythonu a založených na PyGame[98][99][100].

2.13.5 Firefox OS Firefox OS je operaˇcnísystém pro mobilní zaˇrízení spoleˇcnostiMozilla, která je známé pˇredevšímvývojem internetového prohlížeˇceFirefox, emai- lového klienta Thunderbird nebo systému pro sledování chyb Bugzilla. Základ systému tvoˇrívelmi jednoduchá linuxová distribuce, založená ˇcásteˇcnˇena Androidu. Nízkoúrovˇnovákompatibilita s Androidem umož- ˇnujeplatformˇeFirefox OS využít již existující binární ovladaˇceurˇcenépro Android. Souˇcástídistribuˇcníhozákladu je dále vrstva, poskytující abs- traktní rozhraní pro pˇrístupk hardwaru41. Veškeré vysokoúrovˇnovéfunkce Firefox OS, vˇcetnˇesystémových apli- kací, jsou implementovány pomocí W3C[101] standardizovaných rozhraní v HTML 5 a v Javascriptu. V HTML5 a Javascriptu musí být napsány též aplikace tˇretíchstran, protože vývoj nativních aplikací není v souˇcasnosti v ˚ubecpodporován. Zaˇrízeníplatformy Firefox OS mají být podle zatím do- stupných informací pomˇernˇelevná a k dostání by mˇelabýt nejdˇrívev ménˇe vyspˇelýchzemích. Uvedení prvních zaˇrízenís Firefox OS na trh je pˇredpo- kládáno v pr ˚ubˇehuroku 2013. Bˇehemkonference OpenMobility 2013 v Bratislavˇejsem mˇelmožnost se s vývojovou verzí Firefox OS osobnˇeseznámit a mohu konstatovat, že na mˇetento systém dobrý dojem nezanechal. Firefox OS podporuje totiž pouze standardizovaná webová API. Žádný jiný mobilní operaˇcnísystém však tato rozhraní v souˇcasnostinepodporuje a je otázkou, jestli je nˇekdy v budoucnu plnˇepodporovat bude. Aplikace napsané pro Firefox OS proto v souˇcasnostinefungují na žádném jiném mobilním OS.

40. rozhraní jazyka Python pro SDL 41. tzv. HAL – Hardware Abstraction Layer

37 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

Rozhodnutí vývojáˇr˚uFirefox OS neumožnit vývoj nativních aplikací znamená, že pˇritvorbˇeaplikace nelze využít ani jednu z nepˇreberného množství existujících nativních knihoven. Veškerá funkcionalita knihoven tak musí být pro využití v aplikaci pˇrepsánado Javascriptu. Implemen- tace nˇekterýchfunkcí bˇežnýchpro nativní aplikace nemusí být kv ˚uliome- zenému rozsahu „webových“ rozhraní možná. Pˇríklademtakové funkcio- nality m ˚užebýt správce soubor ˚u,kterého kv ˚ulichybˇejícímu„webovému“ rozhraní pro pˇrímoupráci se soubory na této platformˇenelze v ˚ubecimple- mentovat. Dalším aspektem Firefox OS, který mne osobnˇevelmi znepokojuje, je použití bezpeˇcnostníhoframeworku[102], který aplikace rozdˇelujedo 3 ka- tegorií podle d ˚uvˇeryhodnosti.Nejd ˚uvˇeryhodnˇejší,tzv. certifikované, apli- kace, ke všem podporovaným hardwarovým rozhraním jako SMS, Blueto- oth nebo telefonie plný pˇrístup.Za certifikované aplikace jsou považovány pouze ty, které ovˇeˇril operátor nebo výrobce zaˇrízení a které jsou ve výcho- zím stavu systému pˇredinstalovány. Další ménˇed ˚uvˇeryhodnoukategorií jsou tzv. privilegované aplikace, mající pˇrístupk podmnožinˇeménˇekritických rozhraní z množiny tˇech, která jsou dostupná certifikovaným aplikacím. Aby se aplikace stala privi- legovanou, musí být provˇeˇrenaa digitálnˇepodepsána autorizovaným apli- kaˇcním„tržištˇem“. Nejménˇed ˚uvˇeryhodnéjsou tzv. „webové“ aplikace, které nepotˇrebují ovˇeˇrenítˇretístrany. Webové aplikace mají pˇrístuppouze k omezené mno- žinˇe„bezpeˇcných“ API. V dokumentu, který toto rozdˇelenípopisuje[102], není nikde uvedeno, jestli m ˚užeuživatel s výchozím nastavením d ˚uvˇeryhodnostijednotlivých aplikací manipulovat ˇcine. Když jsem se na to zeptal vývojáˇreze spoleˇc- nosti Mozilla bˇehemjeho pˇrednáškyna OpenMobility 2013, nebyl mi scho- pen jasnˇeodpovˇedˇet.Pokud uživatel opravdu nem ˚užes úrovnˇemiopráv- nˇenípro aplikace manipulovat, je Firefox OS walled garden podobná plat- formˇeiOS ˇciWindows Phone. Na rozdíl od nich by však absolutní kontrolu nad platformou nemˇeljejí výrobce, jak je to mu u iOS a Windows Phone, ale výrobce zaˇrízenídaného zaˇrízenía pˇrípadnˇemobilní operátor distribuující zaˇrízenís Firefox OS. Z tohoto úhlu pohledu se Firefox OS podobá platformˇeiOS také tím, že se snaží omezit, které technologie mohou vývojáˇriaplikací používat. Plat- forma iOS se pokouší prosadit Objective C na úkor všech ostatních tech- nologií, Firefox OS pak vyloženˇeupˇrednostˇnujepouze a jen HTML 5 + Ja- vascript. Aplikace používající jiné technologie jsou na obou platformách v zásadˇezakázány, pˇrestožehardware jejich zaˇrízenípoužití alternativních

38 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM technologií nebrání.

2.14 Další mobilní platformy

2.14.1 SHR SHR[103]42 je mobilní linuxová distribuce pro otevˇrenýchytrý telefon Ope- nMoko Neo FreeRunner (GTA02)[104]. Podporuje i další mobilní telefony, jako je napˇr.Nokia N900[105]. Jako grafické prostˇredína SHR slouží Illume 2, postavené na EFL[106]. Sestavení distribuce probíhá za použití systému Openembedded[91] a pro vytvoˇreníjednotného API k hardwaru mobilních aplikací slouží middleware FSO[107]. Projekt SHR se v souˇcasnostinezdá být pˇrílišaktivní.

2.14.2 QtMoko QtMoko[108] je linuxová distribuce urˇcenápro otevˇrenéchytré telefony: • Neo FreeRunner (GTA02)[104] • OpenPhoenux (GTA04)[109][110]. Distribuce QtMoko je založená na Debianu a na modifikovaném grafickém prostˇredíQtopia, které vyvinula firma Trolltech43. QtMoko vyvíjí nezávislá vývojáˇrskákomunita. Vývoj QtMoko je velmi aktivní a nová verze distri- buce vychází pˇribližnˇejednou za mˇesíc.

2.14.3 Cordia Mobilní operaˇcnísystém Cordia[111] byl založený na grafické knihovnˇe Hildon a na prostˇredíHildon desktop, používaném na zaˇrízeníNokia N900 v systému Maemo. Zdrojový kód Hildonu byl proˇcištˇena upraven tak, aby Hildon fungoval s novými verzemi GTK a akcelerované grafické knihovny Clutter. Jako distribuˇcnízáklad byl použit Mer. Cordia byla primárnˇezamˇeˇrenána tablety a prvním zaˇrízenímmˇelbýt pˇreznaˇcenýsedmipalcový tablet ˇcínsképrovenience. Tv ˚urc ˚umdistribuce se ale nepodaˇrilonajít žádného ˇcínskéhovýrobce, který by byl ochotný pˇri relativnˇemalém objemu objednávaných zaˇrízenídodat všechny potˇrebné ovladaˇceˇcidokumentaci nutnou pro jejich vytvoˇrení. V souˇcasnostije projekt Cordia neaktivní: poslední aktualizace stránek projektu je z kvˇetna2012.

42. Simple Hybrid Release 43. p ˚uvodnítv ˚urce grafické knihovny Qt

39 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.14.4 Seadot Seadot[112] je komunitní distribuce urˇcenápro zaˇrízenítypu tablet-pc jako napˇr.x86 tablet ExoPC[113](prodávaný tˇežpod názvem WeTab). Distri- buce je založená na Meru, ke kterému pˇridávávlastní uživatelské rozhraní, zvané Enigma[114].

2.14.5 iOS Mobilní operaˇcnísystém iOS[115], který vytvoˇrilafirma Apple[116], bˇežína chytrých telefonech iPhone, tabletech iPad a multimediálních pˇrehrávaˇcích iPod Touch. Jedná se o velmi uzavˇrenouplatformu pod absolutní kontro- lou firmy Apple. iOS je ukázkovým pˇríkladem walled garden, protože na zaˇrízeníchs iOS nelze instalovat aplikace mimo hlavní aplikaˇcnírepositáˇr, zvaný AppStore. Veškeré aplikace tˇretíchstran tak musí splˇnovatdrastické podmínky, které firma Apple stanovila pro pˇrijetíaplikace do AppStore. Do záˇríroku 2010 napˇríkladaplikace nesmˇelyobsahovat žádný intepre- tovaný kód[117] a pravidla pro pˇrijetíaplikace také zakazují pˇrijetíaplikací licencovaných pod GPL[118]. Do iOS ve verzi 4.0 nepodporoval systém multitasking pro aplikace tˇre- tích stran a rovnˇežve verzi 5.0 jsou možnosti bˇehuvíce aplikací souˇcasnˇe velmi omezené.

2.14.6 Windows Phone Windows Phone je mobilní platforma pro chytré telefony, kterou vyvinula firma . Jedná se o plnˇeuzavˇrenouplatformu, která stejnˇejako iOS dokonale splˇnujedefinici walled garden. SpoleˇcnostNokia se v únoru 2011 po opuštˇeníprojektu MeeGo rozhodla pˇrijmoutWindows Phone ja- kou svou hlavní mobilní platformu. Zaˇrízenís Widnows Phone nabízí No- kia pod oznaˇcenímLumia.

40 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.15 Tabulkové srovnání platforem

Nápad udˇelattabulkové srovnání mobilních platforem vznikl na základˇe tabulky sestavené Thomasem Perlem v roce 2012[119]. Nˇekterádata pou- žitá v následujících tabulkách pocházejí z této tabulky. Platformy jsou v tabulkách uvedeny ve stejném poˇradí,ve kterém jsou v této kapitole popsány. Pokud pro danou tabulku platforma není rele- vantní, je vynechána.

platforma vznik uvedení na trh vývoj MeeGo 2010 2010 netbooky neaktivní Mer 2011 2011 aktivní Nemo Mobile 2011 2011 aktivní Sailfish 2012 2013 aktivní Plasma Active 2011 2011 aktivní Maemo 5 2009 11.11.2009 komunita MeeGo 1.2 Harmattan 2011 záˇrí2011 neaktivní Android 2005 2007 aktivní Tizen 2011 2013 ? aktivní Ubuntu Touch 2013 2013 ukázka aktivní BlackBerry 10 2011 30.1.2013 aktivní webOS 209 2009 komunitní Firefox OS 2012 2013 aktivní SHR 2009 2009 aktivní QtMoko 2009 2009 aktivní iOS 2007 2007 aktivní Windows Phone 2010 2010 aktivní

Tabulka 2.1: Pˇrehledovátabulka se základními údaji o popisovaných mo- bilních platformách

41 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.15.1 Architektura

platforma grafický systém IPC vstup multimedia libc MeeGo X server DBUS Maliit GStreamer glibc Mer X server DBUS Maliit GStreamer glibc Nemo Mobile X server DBUS Maliit GStreamer glibc Sailfish X server DBUS Maliit GStreamer glibc Plasma Active X server DBUS Maliit GStreamer glibc Maemo 5 X server DBUS Hildon GStreamer glibc MeeGo 1.2 Harmattan X server DBUS Maliit GStreamer glibc Android SurfaceFlinger binder ano ano Bionic Tizen X server ? ? ? glibc Ubuntu Touch SurfaceFlinger ? Maliit ? libhybris BlackBerry 10 ? QNX ? ? WebOS DirectFB Luna Enyo GStreamer glibc SHR X server DBUS EFL ne glibc QtMoko framebuffer ? ? ne glibc Cordia X server DBUS Hildon GStreamer glibc

Tabulka 2.2: Tabulka popisující typ hlavních systémových komponent jed- notlivých mobilních platforem

42 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.15.2 Otevˇrenost platforma otevˇrenýkód otevˇrenývývoj MeeGo ano ˇcásteˇcnˇe Mer ano ano Nemo Mobile ano ano Sailfish ˇcásteˇcnˇe ˇcásteˇcnˇe Plasma Active ano ano Maemo 5 ˇcásteˇcnˇe ne MeeGo 1.2 Harmattan ˇcásteˇcnˇe ne Android ano ne Tizen ano ne Ubuntu Touch ano ˇcásteˇcnˇe BlackBerry 10 ne ne WebOS ano ano SHR ano ano QtMoko ano ano Cordia ano ano

Tabulka 2.3: Tabulka otevˇrenostijednotlivých mobilních platforem

43 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.15.3 Balíˇckování platforma formát podpora závislostí tvorba balík ˚u MeeGo RPM - OBS Mer RPM - OBS Nemo Mobile RPM ano OBS Sailfish RPM ? OBS Plasma Active RPM ? OBS Maemo 5 deb ano autobuilder MeeGo 1.2 Harmattan deb ˇcásteˇcnˇe OBS Android APK ne - Tizen RPM ? OBS Ubuntu Touch „click“ ne - BlackBerry 10 bar ne - WebOS ipkg ne/Preware ano Openembedded SHR ipkg ano Openembedded QtMoko deb ano - Cordia RPM ano OBS

Tabulka 2.4: Tabulka balíˇckovacíchsystém ˚ujednotlivých platforem

44 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.15.4 Distribuce softwaru

platforma hlavní repositáˇr kontrola kvality GPL pˇrímáinstalace Mer Mer OBS komunitní ano ano Nemo Mobile Nemo OBS komunitní ano ano Plasma Active Plasma OBS komunitní ano ? Maemo 5 Extras komunitní ano ano MeeGo 1.2 Harmattan Ovi Store ano ano ano Android Google Play automatická ano ano BlackBerry 10 World ano ano ano WebOS Preware komunitní ano ano SHR ano komunitní ano ano QtMoko ano komunitní ano ano iOS App Store ano ne ne Windows Phone Marketplace ano ano ne

Tabulka 2.5: Tabulka popisující zp ˚usobdistribuce aplikací tˇretíchstran ke koncovým uživatel ˚um.Sloupeˇcek GPL znaˇcí,jestli hlavní repositáˇrdané platformy pˇrijímáaplikace, jejichž zdrojový kód je licencován pod GPL. Pˇrímáinstalace vyjadˇruje,jestli je na dané platformˇemožné instalovat apli- kace i mimo hlavní repositáˇr.

45 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.15.5 Vývojové prostˇredí platforma Qt GTK SDL HTML5 Python MeeGo ano ne ano ano ano Mer ano ne ano ano ano Nemo Mobile ano komunitní ano ano ano Sailfish ano ne ? ano ano Plasma Active ano ne ? ? ? Maemo 5 ano ano ano ano ano MeeGo 1.2 Harmattan ano komunitní ano ano ano Android ano ne ano ano ano Tizen ne ne ne ano ne Ubuntu Touch ano ne ne ne ne BlackBerry 10 ano ne ano ano komunitní WebOS ne ne ano ano komunitní SHR ne ano ne ne ano QtMoko ano ano ne ne ano Cordia ? ano ? ? ano

Tabulka 2.6: Tabulka dostupnosti hlavních knihoven a programovacích ja- zyk ˚una jednotlivých mobilních platformách

46 2. SROVNÁNÍMOBILNÍCHLINUXOVÝCHPLATFOREM

2.15.6 Hardware

platforma telefony tablety další zaˇrízení MeeGo - WeTab netbooky Mer - - - Nemo Mobile N900, N950, N9 Nexus 7, WeTab VirtualBox Sailfish zatím ne - simulátor na PC Plasma Active - Tablet PC + Archos netbooky Maemo 5 N900 - simulátor MeeGo 1.2 Harmattan N9, N950 - simulátor na PC Android mnoho mnoho r ˚uzné Tizen prototyp - simulátor na PC Ubuntu Touch ˇradaNexus ˇradaNexus - BlackBerry 10 Z10, Q10 PlayBook simulátor na PC WebOS Pre & Veer TouchPad simulátor na PC SHR GTA02 a jiné - - QtMoko GTA02, GTA04 - - Cordia - prototyp -

Tabulka 2.7: Tabulka dostupnosti hardwaru pro jednotlivé mobilní plat- formy

47 3 Specifika mobilních linuxových platforem

Mobilní linuxové platformy se od klasických linuxových distribucí, použí- vaných na osobních poˇcítaˇcícha serverech, v mnohém liší. Aby byl vývoj multiplatformní aplikace efektivní, musí vývojáˇrtyto odlišnosti znát a bˇe- hem vývoje je zohledˇnovat.

3.1 Grafické rozhraní

3.1.1 Vysoké rozlišení Moderní mobilní zaˇrízenídosahují rozlišení HD-ready ˇcidokonce full-HD, ˇcímždohánˇejí,pˇrípadnˇepˇrekonávají,klasické stolní poˇcítaˇce.Pˇrestoje fy- zická velikost obrazovky mobilních zaˇrízeníve srovnání s monitorem stol- ního poˇcítaˇcestále velmi omezená. Obrazovky chytrých telefon ˚umají vˇet- šinou úhlopˇríˇckuod 3 do 4 palc ˚u,u tablet ˚uje to 7 až 10 palc ˚u.To je mnohem ménˇe,než je velikost obrazovky u vˇetšinyNotebook ˚ua je to pouze zlomek velikosti bˇežnˇepoužívaných stolních monitor ˚u. Vysoké rozlišení obrazovky v kombinaci s její malou úhlopˇríˇckoumá za následek velké rozlišení na jednotku plochy, bˇežnˇeudávané pomocí jed- notky DPI12. Takto vysoké a navíc promˇenlivéDPI (takto vysoké DPI ne- mají všechna mobilní zaˇrízení)pˇrinávrhu grafického rozhraní prakticky znemožˇnujepoužití absolutních hodnot v pixelech. Velikost prvk ˚ugrafic- kého rozhraní pro dosažení konzistentního výsledku na r ˚uznýchzaˇrízeních musí proto být pˇrímoˇcinepˇrímozávislá na rozlišení obrazovky a DPI. Pˇrímouzávislost lze implementovat tak, že velikostí prvk ˚ubude v po- mˇernézávislosti na aktuálním rozlišení, s pˇrihlédnutímk DPI fyzické obra- zovky. Nepˇrímá závislost naopak využívá nˇekolikarozvržení s absolutními hodnotami v pixelech, která byla vytvoˇrenapro konkrétní kombinace roz- lišení a DPI. Z tˇechtokombinací je vždy vybrána ta nejvhodnˇejšípro kon- krétní zaˇrízení. První metoda je flexibilní v tom, že by mˇelafungovat na zaˇrízeníchs li- bovolnou kombinací rozlišení a DPI. Druhá metoda zase umožˇnujeúpravu velikosti všech prvk ˚ugrafického rozhraní pˇrímona míru konkrétním zaˇrí- zením. Nejlepších výsledk ˚ulze dosáhnout kombinací tˇechtodvou metod, tedy návrhem rozvržení na míru pro nejpoužívanˇejšícílová zaˇrízení.Pro

1. Dots Per Inch 2. napˇr.obrazovka zaˇrízeníBlackBerry Z10 dosahuje 356 DPI (1280 x 768 na 4.2’)

48 3. SPECIFIKA MOBILNÍCH LINUXOVÝCH PLATFOREM ostatní zaˇrízeníje pak použito flexibilní rozvržení s pomˇernýmihodnotami.

3.1.2 Promˇenlivýpomˇerstran

Dalším aspektem, který je tˇrebavzít v úvahu, je promˇenlivýpomˇerstran obrazovky. Mobilní zaˇrízeníumožˇnujena rozdíl od notebook ˚ua vˇetšiny stolních monitor ˚usnadné otáˇceníobrazovky na výšku a na šíˇrku.Na tuto skuteˇcnostje tˇrebadbát pˇrinávrhu grafického rozhraní aplikace. Implementace této funkce se také na r ˚uznýchzaˇrízenícha operaˇcních systémech m ˚uževzájemnˇelišit. V nˇekterýchpˇrípadechzastˇrešujetuto ˇcin- nost operaˇcnísystém, jinde je rotace obrazovky plnˇev režii aplikace, anebo platí kombinace pˇredchozího.Promˇenlivýpomˇerstran lze jednoduše vy- ˇrešituzamˇcenímaplikace pouze do jediné orientace. Toho využívá mnoho aplikací, zejména her. Je-li to však možné, mˇelaby aplikace podporovat variabilní pomˇerstran, zejména pokud je tato funkce široce podporována ostatními aplikacemi na cílové platformˇe.

3.2 Uživatelské rozhraní

Pˇritvorbˇeuživatelského rozhraní urˇcenéhopro mobilní zaˇrízeníje d ˚ule- žité vzít v úvahu specifika interakce uživatele s mobilním zaˇrízením.Pˇri tvorbˇeaplikací pro stolní poˇcítaˇcelze pˇredpokládaturˇcitoupomˇernˇejed- notnou základní výbavu. Uživatel mívá ve vˇetšinˇepˇrípad˚uk dispozici mo- nitor vˇetšínež 15 palc ˚ua s rozlišením alespoˇn1024x768. Aplikaci ovládá pomocí klávesnice s pˇribližnˇe100 tlaˇcítkya pomocí pˇresnéhopolohování prostˇrednictvímpoˇcítaˇcovémyši nebo ekvivalentního polohovacího zaˇrí- zení3. Spoleˇcnýmˇcinitelemvˇetšinysouˇcasnýchmobilních zaˇrízeníbude nao- pak nepˇresnákapacitní dotyková obrazovka s pomˇernˇenízkým rozlišením a malými fyzickými rozmˇery. Vˇetšinamobilních zaˇrízenínemá klávesnici a v nˇekterýchpˇrípadechu nich dokonce zcela chybí jakákoli hardwarová tlaˇcítka,kterých by aplikace mohla využít. Specifika mobilních zaˇrízeníznamenají pro vývoj mobilní aplikace pˇre- devším to, že ovládací prvky musí být vˇetší,aby se na nˇeuživatel pohodlnˇe trefil prstem. Vhodné je také použití vˇetšíhopísma, aby byly nápisy na malé obrazovce dobˇreˇcitelné.Vˇetšinoutaké na mobilních zaˇrízeníchnelze pou- žít: klávesové zkratky, akce spouštˇenépravým tlaˇcítkemmyši4 nebo nápo-

3. trackball, touchpad, trackpoint, atd. 4. tyto akce je možné spouštˇetpomocí tap-and-hold

49 3. SPECIFIKA MOBILNÍCH LINUXOVÝCH PLATFOREM vˇeduaktivovanou, když je kurzor delší dobu na jednom místˇe5. Na rozdíl od stolních poˇcítaˇc˚uvšak vývojáˇrm ˚uževyužít exkluzivních funkcí, poskytovaných mobilními zaˇrízenímijako jsou multitouch gesta, kamery, senzory zrychlení, gravitace, úrovnˇesvˇetla,atd.

3.3 Knihovny a utility

Na mobilních zaˇrízeníchse vyskytuje mnoho knihoven, bˇežnˇeznámých ze stolních linuxových distribucí. Pokud knihovna potˇrebnápro vývoj apli- kace k dispozici není a pokud platforma podporuje vývoj nativních apli- kací, bývá zpravidla možné danou knihovnu s vˇetšímˇcimenším úsilím zkompilovat a použít. Složitˇejšísituace je na poli grafických knihoven; zatímco u stolních dis- tribucí bývá témˇeˇrvšude použit X server, používá mnoho mobilních plat- forem sv ˚ujvlastní nekompatibilní systém pro správu grafiky. D ˚usledkemje tak paleta grafických knihoven, omezená pouze na takové knihovny, které dokážou pracovat bez X serveru a jsou souˇcasnˇekompatibilní s grafickým systémem dané platformy. Pˇríklademtakových grafických knihoven jsou napˇr.Qt a SDL.

3.4 Balíˇckování

Balíˇckovacíformáty používané na mobilních platformách se velmi podobají tˇem,které používají stolními linuxové distribuce. Odlišují se hlavnˇetím, že vˇetšinamobilních platforem v ˚ubecnepodporuje závislosti mezi balíˇcky, a každá aplikace si tak sama musí zaˇríditdostupnost všech dependencí. Nejobvyklejším ˇrešenímtohoto problému je „pˇribalení“ všech depen- dencí do instalaˇcníhobalíˇcku.„Pˇribalování“ však nejen zbyteˇcnˇezvyšuje nároky na úložný prostor díky tomu, že aplikace používající stejnou kni- hovnu ji nemohou sdílet, ale zastaralé knihovny „pˇribalené“ k aplikaci mo- hou rovnˇežznamenat bezpeˇcnostníriziko. Další možností jak chybˇejícípodporu závislostí obejít, je nainstalování speciální aplikace, která supluje ˇcinnostsprávce balík ˚u.Pˇríklademtéto apli- kace je Ministro pro Android, vyvinutá projektem Necessitas.

5. tzv. hover

50 3. SPECIFIKA MOBILNÍCH LINUXOVÝCH PLATFOREM

3.5 Multitasking

Multitaskingu na mobilních platformách omezuje pˇredevšímchybˇejícípod- pora pro souˇcasnézobrazení více aplikaˇcníchoken. Vˇetšinaplatforem pod- poruje pouze zobrazení jediného aplikaˇcníhookna v režimu plné obra- zovky. Nˇekteréplatformy manipulují s bˇehemaplikací, jejichž okno není v da- ném okamžiku viditelné: systém napˇríkladpozastaví jejich bˇehnebo apli- kaci automaticky ukonˇcíza úˇcelemuvolnˇenísystémových prostˇredk˚u. Systém chovající se tímto zp ˚usobem,je pak v zásadním rozporu se situ- ací na linuxovém desktopu, kde systém do fungování aplikaˇcních proces ˚u v zásadˇev ˚ubecnezasahuje. Výjimku tvoˇríuživatelem vynucené ukonˇcení procesu a mezní situace jako je aktivace omkiller mechanismu v linuxovém jádˇre. Automatické ukonˇcováníaplikací ˇcásteˇcnˇeospravedlˇnujeskuteˇcnost,že vˇetšinamobilních zaˇrízenínemá swapovací oddíl, na který stolní poˇcítaˇce bˇežnˇe„odklízejí“ po delší dobu neaktivní aplikace. Pˇrestose však nˇekteré mobilní platformy bez automatického ukonˇcováníaplikací dovedou obejít6 Možnost automatického ukonˇceníaplikace vyžaduje od vývojáˇredobré zvládnutí práce se stavem aplikace. Aplikace musí být schopná kdykoli uložit sv ˚ujstav a pˇristartu jej co nejrychleji obnovit. Pokud práce s aplikaˇc- ním stavem není dobˇrezvládnutá, m ˚užedojít jak ke ztrátˇedat, tak k nekon- zistentnímu chování aplikace, která se z uživatelského pohledu po pˇrepnutí na pozadí a zpˇetchová nekonzistentnˇe.

3.6 Hardware

Kromˇejiž výše zmínˇenýchhardwarových omezení, co se týˇcevelikosti ob- razovky a omezených vstupních metod, je d ˚uležitési pˇrivývoji aplikace uvˇedomit,že mobilní zaˇrízeníjsou vˇetšinuˇcasunapájena z baterie. Na mobilním zaˇrízeníspotˇrebujenejvíc energie obrazovka. Na zaˇríze- ních s LCD displayem nem ˚užeaplikace energii spotˇrebovávanoudispla- yem pˇrílišovlivnit, naopak na zaˇrízeníchs OLED displayem, kde je spo- tˇrebazávislá na poˇctujasných pixel ˚u,ovlivˇnujevzhled aplikace do urˇcité míry spotˇrebu. Címˇ ménˇesvˇetlýchploch v aplikaci bude, tím menší bude spotˇreba. Velké množství energie také spotˇrebovávajíbezdrátové datové pˇrenosy – at’ už se jedná o pˇrenosdat pˇresWiFi ˇcimobilní sít’. Aplikace by tedy mˇela

6. Maemo 5 (má swap) & Harmattan (1GB RAM)

51 3. SPECIFIKA MOBILNÍCH LINUXOVÝCH PLATFOREM pˇrenášetdata jen, když je to nezbytnˇenutné. Pokud aplikace potˇrebujepˇres sít’ periodicky kontrolovat stav urˇcitéhoon-line zdroje (emailová schránka, RSS, nové IM zprávy), nemˇelaby být tato perioda pˇríliškrátká. Pokud ope- raˇcnísystém podporuje sdružování periodických požadavk ˚u,tzv. systém PUSH, mˇelaby aplikace být schopná využít jej pro úsporu energie. Jednot- livé technologie bezdrátového pˇrenos˚udat mají r ˚uznouenergetickou spo- tˇrebuzávislou zpravidla na vzdálenosti, kterou musí data pˇrekonat.Tuto skuteˇcnostje možné pˇrinávrhu aplikace vzít v potaz a odložit napˇríklad velké datové pˇrenosyprostˇrednictvímmobilní sít’, dokud se zaˇrízeníne- pˇripojína WiFi. Velkou roli hraje pˇri spotˇrebˇeenergie rovnˇežvyužití CPU. Aplikace by se mˇelaprimárnˇevyvarovat tzv. aktivního ˇcekání7, tzn. periodického provádˇenívýpoˇctuve smyˇcces krátkou periodou. Na stolních poˇcítaˇcích, pˇripojenýchna externí zdroj napájení, nepˇredstavujeaktivní ˇcekánípro- blém. Naopak na mobilních zaˇrízeníchvyvolává zbyteˇcnéprobouzení CPU z úsporného režimu, což vede k razantnímu zkrácení výdrže zaˇrízenípˇri provozu z baterie. Aplikace by tedy mˇelyreagovat pouze na události, jako jsou vstupy od uživatele nebo zmˇenastavu zaˇrízení(napˇr.zmˇenaaktuálních souˇradnic, pˇríchodSMS, odemknutí obrazovky, atd.). Pokud okno aplikace není vidˇet, nemˇelaby aplikace provádˇetjeho pˇrekreslování. Veškeré nároˇcnˇejšívýpo- ˇctyna pozadí by mˇelyprobíhat pouze na pokyn uživatele. Nezanedbatelnou spotˇrebuenergie má rovnˇežzjišt’ování polohy s vy- užitím systému GPS. Výdrž vˇetšinymobilních zaˇrízeníse po aktivací GPS modulu zkracuje na pouhých nˇekolikhodin. Pokud tedy aplikace nevyža- duje GPS po celou dobu svého bˇehu(jako je tomu v napˇr.v pˇrípadˇenavi- gaˇcníhosystému nebo GPS loggeru), mˇelaby aplikace vždy zapnout GPS pouze na nezbytnˇedlouhou dobu (napˇr.pro oznaˇcenífotografie geografic- kými souˇradnicemi).Moderní mobilní zaˇrízenízpravidla používají techno- logii AGPS, která umožˇnujezjištˇeníaktuálních souˇradnicv ˇrádusekund od aktivace GPS pˇrijímaˇce,takže zapnutí/vypnutí GPS pˇrílišnezdržuje.

7. anglicky busy waiting

52 4 Tvorba multiplatformní aplikace

Kapitola se zabývá plánováním vývoje multiplatformní aplikace. Nejprve je popsán výbˇervhodných nástroj ˚ua zvolena vhodná struktura projektu. Další kapitola pak popisuje konkrétní aplikaci, která vznikla na základˇe tˇechtopoznatk ˚u.

4.1 Výbˇerprogramovacího jazyka

Aby aplikace fungovala na mnoha r ˚uzných platformách, je tˇrebavybrat vhodný programovací jazyk. Pokud se jedná o jazyk kompilovaný, je nutné, aby kompilátory tohoto jazyka byly dostupné pro co nejvˇetšípoˇcetplatfo- rem. Pokud p ˚ujdeo jazyk interpretovaný, je zásadní zajistit pˇrenositelnost interpretru. Hlavní výhodou interpretovaných jazyk ˚uje, že program není nutné pro každou platformu zvlášt’ kompilovat. Postaˇcí,když pro každou platformu bude k dispozici intrepretr. Pokud intrepretr ve výchozím stavu k dispozici není, je nutné zkompi- lovat jej pro danou platformu. Kompilace intrepretru m ˚užesice na první pohled p ˚usobitjako krok zpˇet,ale je tˇrebasi uvˇedomit,že staˇcípro danou platformu interpretr zprovoznit pouze jednou. Jakmile se jej podaˇrízkom- pilovat a zprovoznit, mohou jej využívat veškeré programy, které použí- vající daný intepretovaný jazyk. Široce používané interpretry1 bývají po- mˇernˇesložité, ale také pomˇernˇerobustní, a to díky široké uživatelské ko- munitˇepokrývající mnoho r ˚uznýchplatforem. Pro implementaci multiplatformní aplikace jsem vybral intepretovaný jazyk Python.

4.2 Výbˇergrafické knihovny

Tvorba aplikací, které nevyžadují uživatelské rozhraní, se v pˇrípadˇemobil- ních platforem pˇrílišneliší od tvorby podobných aplikací pro PC. Mnoho klasických utilit pˇríkazovéˇrádkylze na mobilních zaˇrízeníchpoužívat bez modifikace zdrojového kódu, staˇcíje pouze zkompilovat pro architekturu daného zaˇrízení. Tvorba multiplatformních mobilních aplikací s grafickým rozhraním je výraznˇesložitˇejší.Zatímco linuxové distribuce na PC používají témˇeˇruni- verzálnˇepro práci s grafikou dlouhodobˇeprovˇeˇrenýX server, u mobil-

1. jako je napˇr.interpretr jazyka Python

53 4. TVORBA MULTIPLATFORMNÍ APLIKACE ních platforem tento jednotící prvek chybí. X server je sice použit na nˇeko- lika mobilních linuxových platformách, vˇetšinamobilních OS však používá r ˚uzné,vzájemnˇenekompatibilní metody práce s grafikou. Vˇetšinaexistujících grafických knihoven podporuje X server, ale pouze málokterá podporuje grafické systémy používané mobilními platformami. Jediné dvˇegrafické knihovny, které jsou široce dostupné na vˇetšinˇemobil- ních platforem, jsou vlastnˇeQt a SDL. Další multiplatformní alternativou ke klasickým grafickým knihovnám m ˚užebýt webové rozhraní.

4.2.1 Qt

Qt[120][121] je grafická knihovna napsaná v programovacím jazyce C++ a dostupná pod LGPL[122]. Byla p ˚uvodnˇevytvoˇrenapro použití na PC nor- skou firmou Trolltech. V roce 2008 koupila Trolltech firma Nokia[123] a od té doby zaˇcalabýt knihovna Qt více smˇeˇrovánapro použití na mobilních zaˇrízeních.V létˇeroku 2012 koupila Qt od Nokie spoleˇcnostDigia[124]. Díky tomu, že Digia na rozdíl od Nokie nevyrábí vlastní mobilní zaˇrízení, byl odstranˇenstˇretzájm ˚u,který bránil oficiální podpoˇreQt pro mobilní platformy nespadající pod Nokii. Qt podporuje ˇcetnéplatformy jako napˇr.: • Linux (PC) • Windows • Mac OS • Maemo & MeeGo 1.2 Harmattan • [125] • BlackBerry 10 • Android – oficiální pokraˇcováníkomunitního portu firmou Digia • iOS – oficiální port firmou Digia • Windows RT – oficiální port firmou Digia • Tizen – komunitní portu firmou Digia[126] Z hlediska využití Qt pro tvorbu aplikací urˇcenýchna mobilní zaˇrízení je zajímavá technologie Qt Quick, která díky svým vlastnostem umožˇnuje snadnou a rychlou tvorbu mobilních aplikací. Jedná se pˇredevšímo tyto vlastnosti: • deklarativní paradigma • podpora automatického provázání promˇenných (tzv. property bin- ding) • základní grafické stavební prvky pro tvorbu dotykového rozhraní • možnost využít Javascriptu • podpora rozšíˇrenínapsaných v jiném programovacím jazyce (napˇr.

54 4. TVORBA MULTIPLATFORMNÍ APLIKACE

v C++ ˇciPythonu) • podpora grafické akcelerace s možnosti pˇrepnutína softwarové vy- kreslování Pokud jde o mou osobní zkušenost, jedná se o dosud nejlepší technolo- gii pro tvorbu grafických aplikací urˇcenýchpro mobilní zaˇrízení. Co se týˇcepodpory programovacích jazyk ˚ugrafickou knihovnu Qt, pri- márnˇeje podporován programovací jazyk C++, je však možné použít i další programovací jazyky. Python je dokonce podporován dvˇemaprojekty, které se v zásadˇeliší pouze svou licencí, pod kterou jsou distribuovány: PyQt pod GPL a PySide pod LGPL. Žádný z nich však zatím plnˇenepodporuje Qt 5. Je nutné si také uvˇedomit,že Qt není pouhou grafickou knihovnou, po- skytuje totiž vývojáˇr˚ummnoho praktických modul ˚upro zpracování dat, paralelní programování, práci se systémovou sbˇernicí,získávání dat ze sen- zor ˚u,lokalizaci, zobrazování webových stránek, pˇrehrávánívidea ˇcipráci se zvukem. Pro implementaci grafického rozhraní multiplatformní aplikace jsem na základˇetˇechtovýhodných vlastností zvolil grafickou knihovnu Qt.

4.2.2 SDL SDL[127] je multiplatformní multimediální knihovna, která zpˇrístupˇnuje grafiku, audio, vstupní zaˇrízenía 3D akceleraci. Je napsaná v programova- cím jazyce C a dostupná pod licencí LGPL. Ve srovnání s Qt operuje SDL na mnohem nižší úrovni abstrakce, která však zato umožˇnujeplnou kontrolu nad všemi detaily fungování aplikace. Nízkoúrovˇnovost SDL znamená, že neobsahuje žádné složitˇejšístavební bloky2 pro tvorbu aplikací. Z tohoto d ˚uvodubývá knihovna SDL používána zejména pro tvorbu her. S ohledem na nízkou úroveˇnabstrakce a chybˇejícízákladní stavební prvky jsem se rozhodl knihovnu SDL nepoužít k implementaci aplikace. To však neznamená, že by SDL použít nešlo, jen by bylo potˇreba znovu im- plementovat ˇraduprvk ˚u,které jsou v Qt k dispozici již ve výchozím stavu. Použitelnost SDL pro vývoj navigaˇcníhosystému demonstruje napˇríklad projekt Cloud GPS[128].

4.2.3 Webové rozhraní Pˇrestožese nejedná o grafickou knihovnu v klasickém slova smyslu, m ˚uže rozhraní aplikace napsané v HTML pˇredstavovat zajímavou alternativu k rozhraní vytvoˇrenému s pomocí nativní grafické knihovny. Je to také

2. tlaˇcítka,vstupní pole, seznamy, layout, webview, atd.

55 4. TVORBA MULTIPLATFORMNÍ APLIKACE o zajímavý doplˇnkovýzp ˚usobprezentace nˇekterýchinformací z aplikace. Webové rozhraní aplikace funguje tak, že aplikace provozuje webový ser- ver na lokálním rozhraní, který nabízí webové stránky, tvoˇrícígrafické roz- hraní aplikace. Uživatel pouze otevˇrelibovolný webový prohlížeˇc,nasmˇe- ruje jej na lokální rozhraní a port webového serveru aplikace. Poté uživatel s rozhraním interaguje jako s každou jinou webovou stránkou. Mnoho mo- bilních zaˇrízenípodporuje vytváˇreníikon odkazujících na webové stránky, takže lze aplikace s webovým rozhraním pomˇernˇedobˇredo systému zaˇcle- nit. Sít’ová transparentnost je další zajímavou vlastností konceptu webo- vého rozhraní. Pˇrisprávném nastavení sítˇelze na webové rozhraní pˇristu- povat z jiných zaˇrízení,nacházejících se na lokální sítí; pokud má zaˇrízení veˇrejnouIP adresu, je možné na webové zaˇrízenípˇristupovati pˇresInter- net. Hlavní nevýhodou webového rozhraní však je to, že se vývojáˇrpˇrijeho tvorbˇemusí podˇríditlimit ˚umwebových technologií. Vytvoˇrit jednoduchou textovou stránku s nˇekolikatlaˇcítkyby nemˇelobýt složité. Tvorba gra- ficky bohatého interaktivního rozhraní, které by bylo ekvivalentní nativ- nímu rozhraní, bude s použitím webových technologií na mobilním zaˇrí- zení vˇetšinoukomplikovaná ˇcidokonce nerealizovatelná.

4.3 Struktura aplikace

I když je vybrán vhodný programovací jazyk a grafická knihovna, které dokáží spoleˇcnˇeeliminovat vˇetšinuplatformnˇezávislého kódu, budou jed- notlivé platformy stále obsahovat odlišnosti, na které musí aplikace zvlád- nout. Je také možné, že na nˇekterýchplatformách vybraná grafická knihovna nebude fungovat. Vývojáˇrtaké musí vzít v úvahu alternativní pˇrístupy k tvorbˇegrafického rozhraní, jako napˇr.textové ˇciwebové rozhraní. Aplikaci je proto vhodné pojmout jako modulární celek, se kterým lze pracovat jako s kombinací tˇríˇcástí,propojených jasnˇedefinovaným rozhra- ním: • jádro – obsahuje vˇetšinukódu a musí být plnˇenezávislé jak na gra- fických knihovnách, tak na platformnˇezávislých funkcích • platformní modul – obsahuje všechna nastavení a kód potˇrebnýpro fungování aplikace na dané platformˇe • grafický modul – na základˇedatových model ˚u jádra vytváˇríuživa- telské rozhraní s pomocí konkrétní grafické knihovny

56 4. TVORBA MULTIPLATFORMNÍ APLIKACE

Takto navržená aplikace bude obsahovat jedno jádro, alespoˇnjeden gra- fický modul a jeden platformní modul pro každou podporovanou plat- formu. Pˇristartu aplikace dojde nejdˇríveke spuštˇeníjádra, které na základˇe autodetekce ˇcispouštˇecíchparametr ˚uvybere a naˇcteplatformní a grafický modul. Platformní modul je naˇctenjako první, protože vˇetšinouposkytuje d ˚uležitáplatformnˇespecifická nastavení3, bez kterých nelze grafický mo- dul korektnˇespustit.

4.3.1 Výbˇermodul ˚upro danou platformu Nejjednodušším ˇrešenímje pˇríméurˇcení,které platformní a grafické mo- duly mají být použity. Toho lze dosáhnout napˇr.nastavením parametr ˚u pˇríkazovéˇrádkyze spouštˇecíhoskriptu nebo vložením konfiguraˇcníhosou- boru, který urˇcujevhodné moduly. Další možností je automatická detekce platformy a naˇcteníodpovídají- cích modul ˚upodle zjištˇenýchparametr ˚u.Automatická detekce je vhodná zejména bˇehemtestování, kdy staˇcíaplikaci jednoduše stáhnout a spustit bez nutnosti provádˇetvšechny kroky balíˇckovacíhoprocesu. Pˇrímýstejnˇejako automatický výbˇermodul ˚ulze zkombinovat tak, že když aplikace pˇristartu neobdrží informace o tom, které moduly má naˇcíst, tak provede automatickou detekci platformy. Další výhodou modulární aplikace je možnost distribuce pouze tˇech modul ˚u,které jsou pro danou platformu k dispozici. Tato výhodná vlast- nost m ˚užepˇredevšímv pˇrípadˇegrafických modul ˚upˇrinéstvýrazné úspory co do velikosti instalaˇcníchbalíˇck˚u.

4.3.2 Platformní modul Jedná se o samostatný modul, naˇcítanýjádrem aplikace pˇristartu, který ob- sahuje všechna nastavení a kód nutný pro fungování aplikace na dané plat- formˇe.Platformní modul nesmí obsahovat závislosti na jiných platformních modulech a musí být schopen fungovat i bez naˇctenéhografického modulu, který je naˇctenaž jako další v poˇradí. Jedním z úkol ˚uplatformního modulu je nastavení vhodných cest v sys- tému soubor ˚udané platformy. M ˚užese jednat napˇríklado: • cestu k profilovému adresáˇri • cestu pro ukládání doˇcasnýchdat • cestu pro ukládání vˇetšíchobjem ˚udat

3. rozlišení obrazovky, d ˚uležitécesty, dostupné senzory, atd.

57 4. TVORBA MULTIPLATFORMNÍ APLIKACE

• cesty pro ukládání specifických druh ˚udat • výchozí cestu dialogu pro práci se soubory Cestu pro profil a doˇcasnádata jde naštˇestívˇetšinouzískat z promˇen- ných prostˇredízvaných $HOME a $TMP. Na tˇechplatformách, kde tyto pro- mˇennédefinované nejsou, ˇcijsou špatnˇenastaveny, je nutné tyto cesty na- stavit v platformním modulu. Správné nastavení cesty pro ukládání velkého objemu dat je velmi d ˚ule- žité zejména na mobilních platformách. Zde totiž ve vˇetšinˇepˇrípad˚u4 bývá úložný prostor rozdˇelenna oddíl pro aplikace (kam bývá uložen rovnˇež profil) a oddíl pro skladování velkých objem ˚u(zejména multimediálních) dat. Úložištˇepro velké objemy dat v nˇekterýchpˇrípadechpodléhá zvlášt- ním požadavk ˚um,protože se m ˚uženacházet napˇr.na pamˇet’ové kartˇeˇci není dostupné v pˇrípadˇe,že je zaˇrízenípˇripojenopˇresUSB v režimu mass storage. Aplikace by mˇelana tento zvláštní režim umˇetreagovat. Neménˇed ˚uležitýje dále výbˇersprávné výchozí cesty pro dialog práce se soubory. Zde je tˇrebase vyhnout ˇcastose vyskytující chybˇe,kdy apli- kace pˇriprvním spuštˇenídialogu práce se soubory otevˇreaktuální adresáˇr. Vývojáˇrby mˇelnaopak zvolit vhodnou cestu podle toho, s jakými soubory bude uživatel aplikace s nejvˇetšípravdˇepodobnostípracovat. Tato cesta se mezi jednotlivými platformami velmi liší 5 a je tedy v kompetenci platform- ního modulu.

4. Maemo, Android, BB10 5. napˇríklad /sdcard na Androidu, /home/user/MyDocs na Maemo ˇci share/downloads v BB10

58 5 modRana – pˇríkladmultiplatformní aplikace

ModRana[129] je flexibilní GPS navigaˇcnísystém pro mobilní zaˇrízení,po- stavený na principech tvorby multiplatformní aplikace, popsaných v pˇred- chozí kapitole.

5.1 Implementace jádra

Jádro modRany bylo navrženo tak, aby obsahovalo všechen zdrojový kód, který není závislý na použité grafické knihovnˇea konkrétní platformˇe.Jedi- nou závislostí jádra je Python a jeho standardní knihovna. Velkou výhodou tohoto pˇrístupuje, že veškeré funkce jádra jsou dostupné na všech platfor- mách a všem uživatelským rozhraním. Když jsem pˇridávalnové funkce, snažil jsem se, aby co nejvˇetšíˇcástimplementaˇcníhokódu byla v jádˇre(zís- kávání a zpracování dat, datový model) a grafický modul obsahoval pouze kód nutný ke správné prezentaci dat. Vzhledem k tomu, že modRana dokáže fungovat i v režimu „utilita“, ve kterém vrací data na základˇeargument ˚uz pˇríkazovéˇrádky, musí jádro modRany fungovat i na takovém operaˇcnímsystému, který nemá žádnou z podporovaných grafických knihoven k dispozici. Dalším aspektem jádra je podpora široké škály verzí programovacího jazyka Python. Ne všechny platformy, které modRana podporuje, mají stej- nou verzi Pythonu. Viz následující pˇrehled: • Python 2.5 – Maemo 5 (nejstarší podporovaná verze Pythonu) • Python 2.6 – MeeGo 1.2 Harmattan, SHR • Python 2.7 – desktopové distribuce, Android1 • Python 3.2 – BlackBerry 10 ModRana dokáže fungovat na všech tˇechtoverzích Pythonu bez nutnosti provádˇetmodifikace zdrojového kódu.

5.1.1 Struktura jádra

Jádro modRany tvoˇrítˇríˇcásti: • hlavní skript modrana.py • jednoduché moduly v adresáˇri core • „funkˇcní“ moduly v adresáˇri modules

1. pro pˇrenosimplementace na Android byl využit projekt pydroid

59 5. MODRANA – PRÍKLADˇ MULTIPLATFORMNÍ APLIKACE

Pˇristartu modRany dojde ke spuštˇeníhlavního skriptu modrana.py, ten zvolí2 a naˇcte platformní a poté grafický modul. Následnˇedojde k postup- nému naˇctenívšech „funkˇcních“ modul ˚u. Jednoduché moduly obsahují základní funkcionalitu potˇrebnoupro bˇeh modRany a složitˇejšíchmodul ˚u.Jedná se napˇr.o modul pro naˇcítáníkon- figuraˇcníchsoubor ˚u,pro práci s vlákny, pro geografické výpoˇctynebo pro zpracování argument ˚upˇríkazovéˇrádky. Funkˇcnímoduly jsou složitˇejšía nejsou pro bˇehmodRany nezbytné. Po- kud se nˇekterýfunkˇcnímodul nepodaˇrínaˇcíst,modRana by pˇrestomˇeladál fungovat, a to samozˇrejmˇebez funkcionality poskytované daným modu- lem. Každý funkˇcnímodul je zamˇeˇrenýna jednu konkrétní ˇcinnost,jsou to napˇr.routování, správa mapových dílc ˚u,práce s body zájmu nebo správa záznam ˚utrasy. Moduly mezi sebou mohou komunikovat bud’to pˇrímým pˇrístupema voláním metod, posíláním zpráv nebo s pomocí signál ˚u. Velká modularita umožˇnujemodRanˇefungovat jak v režimu aplikace s grafickým rozhraním, tak v režimu utility, která vyˇrizujícídotazy na zá- kladˇeargument ˚upˇríkazovéˇrádky. V režimu utility naˇctemodRana pouze ty moduly, které jsou pro vyˇrízení konkrétního dotazu nezbytnˇenutné. Zodpovˇezenídotazu díky tomu probíhá velmi rychle.

5.2 Implementace platformního modulu

Platformní modul je v modRanˇez historických d ˚uvod˚uoznaˇcovánoznaˇco- ván jako device module, všechny moduly mají jednotné rozhraní dané rodi- ˇcovskoutˇrídou, DeviceModule. Moduly pro jednotlivé platformy pak toto rozhraní implementují – ale pouze ty metody, kde se chování platformy liší od výchozího chování specifikovaného tˇrídou DeviceModule. Platformní moduly mají na starost napˇr.pˇrístupk GPS a k ovládání obrazovky, nastavují také d ˚uležitécesty a poskytují modRanˇeinformace o vlastnostech dané platformy3. Platformní modul je modRanou naˇcten jako první funkˇcnímodul.

5.3 Implementace grafického modulu

Grafický modul je více ˇciménˇetenkou prezentaˇcnívrstvou nad datovými modely v jádˇremodRany. Kromˇeprezentace informací má grafický modul

2. automaticky nebo podle argument ˚upˇríkazovéˇrádky 3. informace o tom, zda má být aplikace spuštˇenav režimu plné obrazovky, zda je podpo- rována minimalizace aplikaˇcníhookna, zda jsou k dipozici hardwarová tlaˇcítka,atd.

60 5. MODRANA – PRÍKLADˇ MULTIPLATFORMNÍ APLIKACE také za úkol korektní inicializaci grafické knihovny. Jedná se také o jediný modul, který m ˚užeimportovat grafickou funkcionalitu. Dostupnost grafic- kých knihoven se mezi platformami liší, což však díky naˇctenígrafického modulu až po detekci platformy není problém. Pokud by však spoléhaly i další moduly na dostupnost jedné z grafických knihoven, mohlo jejich na- ˇcteníselhat. Podobnˇejako u platformního modulu vycházejí jednotlivé grafické mo- duly z rozhraní rodiˇcovskétˇrídy, která pro grafické moduly nese název GUIModule. Grafický modul je modRanou naˇctenjako druhý modul v poˇradí,tedy hned po platformním modulu. Poté následuje postupné naˇctenívšech ostat- ních funkˇcníchmodul ˚u. ModRana obsahuje dva moduly, z nich jeden využívá grafickou kni- hovnu GTK a druhý používá kombinaci Qt/QML.

5.4 Podporované platformy

ModRana podporuje mnoho r ˚uznýchplatforem.

platforma rozhraní Maemo 5 GTK & QML rozhraní MeeGo 1.2 Harmattan QML rozhraní stolní poˇcítaˇce GTK & QML rozhraní Android QML rozhraní BlackBerry 10 QML rozhraní Nemo Mobile QML rozhraní SHR na OpenMoko Neo FreeRunner GTK rozhraní OpenPandora GTK rozhraní

Tabulka 5.1: Tabulka platforem podporovaných modRanou

Všechny tyto platformy podporuje modRana jednotnou sadou zdrojo- vých kód ˚u,což pˇrinášítu výhodu, že jakákoli nová funkce je na všech plat- formách ihned k dispozici. Tvorba instalaˇcníchbalík ˚upro jednotlivé plat- formy je do znaˇcnémíry zautomatizována. Není tedy problém vydat kaž- dou novou verzi modRany souˇcasnˇepro všechny podporované operaˇcní systémy a zaˇrízení. ModRana tak názornˇedemonstruje, jak je možné s minimem prostˇredk˚u vyvíjet multiplatformní aplikace, které podporují vˇetšinusouˇcasnýchnej- populárnˇejšíchmobilních platforem.

61 5. MODRANA – PRÍKLADˇ MULTIPLATFORMNÍ APLIKACE

Obrázek 5.1: modRana bˇežícína chytrých telefonech Nokia N900, N950, N9 a tabletu HP TouchPad

5.5 Popis pˇrenosuimplementace na novou platformu

Tato sekce pˇribližuje,jak probíhal pˇrenosimplementace modRany na nˇeko- lik nových mobilních platforem. Tento postup je založený na jednoduchém principu: nejprve je nutné se- známit se s cílovou platformou a zjistit, které komponenty nezbytnˇenutné pro fungování modRany jsou k dispozici. Komponenty, které k dispozici nejsou, je poté tˇrebana danou platformu pˇrenést.Pˇrenoskomponent ne- musí být jednoduchý, ale staˇcíjek provést pro každou kombinaci kompo- nenty a platformy pouze jednou. Komponentu pak na dané platformˇemo- hou využít i další projekty. Jakmile jsou všechny závislosti modRany pro danou platformu k dis- pozici, je nezbytné ošetˇrenípˇrípadnýchnekompatibilit modRany s danou platformou. V zásadˇese jedná o napsání nového platformního modulu. Po- kud je potˇrebaprovést zmˇenyve zdrojovém kódu, který se nachází se mimo platformní modul, je d ˚uležitézajistit, aby zmˇenynezp ˚usobilyregrese na ji- ných platformách. Posledním krokem pˇriportování modRany je vytvoˇreníinstalaˇcního ba- líˇckua jeho odeslání do aplikaˇcníchrepositáˇr˚u(pokud je daná platforma má). Je vhodné balíˇckováníco nejvíce zautomatizovat a zapojit do stávají- cích multiplatformních balíˇckovacíchskript ˚u. Pˇredpopisem nˇekoliknedávných pˇrenos˚uimplementace ˇcitaké tzv.

62 5. MODRANA – PRÍKLADˇ MULTIPLATFORMNÍ APLIKACE

„port ˚u“ modRany na nové mobilní platformy, je tˇrebaupozornit, že po- jmem „portovat“ je v tomto kontextu znamená úpravu zdrojového kódu modRany takovým zp ˚usobem,aby fungoval na nové platformˇe– a to pˇri zachování funkˇcnostina všech ostatních podporovaných platformách ! Ne- jedná se o jednorázovˇeupravenou a samostatnˇeudržovanou vývojovou vˇetev. Stejný zdrojový kód modRany, který napˇr.funguje na Androidu, fun- guje rovnˇežna BlackBerry 10 nebo na PC.

5.5.1 Android

Platformu Android byla pro port modRany vybrána pˇredevšímproto, že se v souˇcasnostijedná o v ˚ubecnejrozšíˇrenˇejšímobilní platformu. Android jinak niˇcímnevyniká a obsahuje ˇradunedostatk ˚u.Pˇrenosimplementace modRany na Android nˇekteré z nich odhalil a bylo nutné je vyˇrešitnebo obejít. Android ve výchozím stavu neobsahuje Python ani žádnou z grafických knihoven, které modRana momentálnˇepodporuje(GTK a Qt). Existují však komunitní porty Pythonu[130][131] a také port grafické knihovny Qt[132]. Již v roce 2011 Thomas Perl experimentoval[133] s použitím Pythonu a Qt na Androidu prostˇrednictvímprojektu Pyside, který umožˇnujepoužívání grafické knihovny Qt v Pythonu. Musel jsme tedy „pouze“ sjednotit jednotlivé komponenty a využít je pro bˇehmodRany. Nejvˇetšíproblémy byly s kompilací PySide v ˚uˇcimo- derní verzi Pythonu a Necessitas4. I ty se mi však podaˇrilopˇrekonat,ˇcás- teˇcnˇedíky tomu, že jsem v té dobˇeparalelnˇepracoval na portu modRany na BlackBerry 10, kde bylo rovnˇežnutné PySide kompilovat. Zbyla poslední pˇrekážka:vytvoˇrenísamostatného balíˇcku,který bude obsahovat modRanu, Python a všechny další závislosti. Zjistil jsem však, že tento problém se již v pr ˚ubˇehuroku 2012 podaˇrilovyˇrešitprojektu android- python27[130]. Rešeníˇ spoˇcíváve vytvoˇreníAPK balíku, který obsahuje dva zip archívy. Jeden archív obsahuje závislosti: v pˇrípadˇemodRany je to Python, PySide a Qt Components, druhý archiv obsahuje aplikaci, což je v tomto pˇrípadˇemodRana. Balík obsahuje upravený javový kód, bˇežnˇepo- užívaný pro inicializaci aplikaˇcníhookna pro aplikace využívající knihoven Qt na Androidu. Úprava spoˇcíváv tom, že kód pˇriprvním spuštˇenírozbalí dva dˇríveuvedené archívy do instalaˇcníhoadresáˇre. Výsledkem je jediný soubor typu APK, který po bˇežnéinstalaci na zaˇrí- zení pˇripravívše tak, že modRanu lze spustit stejným zp ˚usobemjako bˇežné

4. Necessitas je název portu Qt pro Android

63 5. MODRANA – PRÍKLADˇ MULTIPLATFORMNÍ APLIKACE aplikace pro Android. Dokonce rychlost spuštˇeníi bˇehumodRany na An- droidu je v podstatˇestejná jako u nativních aplikací pro Android. ModRana je na Androidu zatím ve stádiu testování, v plánu je její zaˇcle- nˇenído Google Play a dalších aplikaˇcníchrepositáˇr˚upro Android.

5.5.2 MeeGo 1.2 Harmattan

Port na platformu MeeGo 1.2 Harmattan byl pomˇernˇejednoduchý. Plat- forma se od operaˇcníhosystém ˚uMaemo, který modRana podporuje již velmi dlouhou dobou, pˇrílišneliší. Pˇrímove výchozích aplikaˇcníchreposi- táˇríchbyla k dispozici hlavní závislost modRany – Python. Dostupná byla také grafická knihovna Qt a její rozhraní pro Python zvané PySide. Hlavním tˇežištˇemtohoto pˇrenosuimplementace modRany tak bylo vy- lepšování QML rozhraní a pˇridánípodpory pro novou metodu pˇrístupu k GPS. Na Maemo 5 používá modRana liblocation a na ostatních platfor- mách dosud pracovala s gpsd. Pro Harmattan jsem pˇridalpodporu pro po- užití knihovny Qt Mobility. Také jsem mírnˇeupravil instalaˇcníbalíˇcektak, aby obsahoval mani- fest pro bezpeˇcnostnísystém Aegis. Bez platného Aegis-manifestu by totiž modRana nemˇelapˇrístupk GPS a také by nemohla ˇríditstmívání obra- zovky. Bylo také tˇreba,abych abych vyrobil novou, vˇetšíikonu.

5.5.3 BlackBerry 10

Mobilní platforma BlackBerry 10 obsahuje pomˇernˇemnoho prerekvizit pro bˇehmodRany: pˇrímona zaˇrízeníchje k dispozici jak Python, tak grafická knihovna Qt. Nejnároˇcnˇejšíˇcástíportace tak byla kompilace knihovny Py- Side a adaptace modRany pro Python ve verzi 3.2, ve které je Python na zaˇrízeníchs BlackBerry 10 k dispozici. Tˇrebažejiž v minulosti probˇehlpˇrenosimplementace PySide na Blac- kBerry PlayBook[134], nebylo portování PySide na operaˇcnísystém Blac- kBerry 10 právˇejednoduché. Bˇehemkompilace se objevilo mnoho esote- rických chyb, vyskytly se také pády pokusných aplikací s nejasnými chy- bovými hláškami. Vytrval jsem však ve svém snažení a s vítanou pomocí z ˇradvývojáˇr˚uprojektu BlackBerry-Py[135] jsem celou vˇecdostal do po- užitelného stavu. Ve výsledku tak Pyside nyní funguje na BlackBerry 10, což otevˇrelodveˇretéto platformy nejen modRanˇe,ale i dalším aplikacím napsaným v Pythonu a používajícím grafickou knihovnu Qt. Dalším netriviálním úkolem bylo pˇrizp˚usobenímodRany tak, aby fun-

64 5. MODRANA – PRÍKLADˇ MULTIPLATFORMNÍ APLIKACE govala s Pythonem trojkové ˇrady. ModRana pro BlackBerry 10 je souˇcasné dobˇeve stádiu testování a plánuji její zaˇclenˇenído hlavního repositáˇreplat- formy, známého pod názvem (BlackBerry)World.

5.6 Kompatibilita s Pythonem verze 2.5 až 3.2

Všechny dosud modRanou podporované platformy nabízely pouze Python dvojkové ˇrady. Python 3 obsahuje ˇradunekompatibilních zmˇena navíc ce- lou snahu dále komplikuje potˇrebazachovat podporu pro Python 2.5 na platformˇeMaemo 5. Celou proceduru se mi nakonec podaˇriloprovést za jeden jediný den, rád bych však dodal, že jsem se celý den nevˇenovalni- ˇcemujinému. V pozdních veˇcerníchhodinách jsem však již mˇelhotovou verzi modRany, která funguje jak s Pythonem 2.5 na Maemo 5, tak s Py- thonem 2.7 a 3.2. Pˇritommi velmi pomohl kompatibilitní modul six[136] (2x3=6), který umožˇnujevelmi zjednodušit úpravy stávajících aplikací tak, aby fungovaly jak s Pythonem dvojkové, tak trojkové ˇrady. PˇrestožemodRana používá Python 3 zatím pouze na platformˇeBlac- kBerry 10, podpora pro Python 3 se bude jistˇev budoucnu hodit, protože je jen otázkou ˇcasu,kdy na Python trojkové ˇradyzaˇcnepˇrecházettaké vˇetšina dalších stolních a mobilních platforem. O úpravách zdrojového kódu tak, aby byl kompatibilní jak s Pythonem 2.5, tak 3.2 i všemi mezilehlými verzemi, jsem rovnˇežnapsal ˇclánek[137]na wiki projektu modRana. Vˇeˇrím,že se tyto informace budou pˇrinadcházející migraci na Python 3 mnoha projekt ˚umhodit.

65 6 Vyhodnocení a ovˇeˇrenívýsledk ˚udiplomové práce

6.1 modRana

6.1.1 Uživatelská komunita

Nejvíc uživatel ˚umá modRana zatím stále ještˇena první podporované plat- formˇe,kterou je Maemo 5 Fremantle. GTK GUI je na Maemo 5 výchozím uživatelským rozhraním a podporuje v zásadˇeveškerou funkcionalitu já- dra modRany. QML GUI je rovnˇežmožné použít, po instalaci balíˇckuje k dispozici paralelnˇes GTK GUI. Hlavním kanálem pro komunikaci s uži- vateli modRany na Maemo 5 je diskuzní vlákno[47] na talk.maemo.org. Toto diskuzní vlákno mˇelozaˇcátkemkvˇetna2013 pˇres 230 tisíc shlédnutí a celkem 1371 pˇríspˇevk˚u na 138 stranách. Vzhledem k tomu, že podpora nˇekterévˇetšinudalších dalších platfo- rem byla do modRany pˇridánarelativnˇenedávno a vzhledem k tomu, že QML GUI zatím nepodporuje všechny funkce jádra, je uživatelská komu- nita na novˇepodporovaných platformách1 zatím pomˇernˇemalá. Lze však pˇredpokládat,že s postupným vylepšováním QML GUI a hlavnˇepo zveˇrej- nˇenímodRany v centrálních aplikaˇcníchrepositáˇríchdojde k nár ˚ustupoˇctu uživatel ˚umodRany na tˇechtoplatformách.

6.1.2 Statistiky stažení

U otevˇrenéhosoftwaru je odhad poˇctuuživatel ˚uvelmi složitý. Kdokoli si m ˚užestáhnou zdrojové kódy a dále je distribuovat. Urˇcitýobraz o množ- ství uživatel ˚ulze získat z poˇctustažení instalaˇcníchbalíˇck˚u.Je však tˇreba si uvˇedomit,že zde pˇrímáúmˇera– jedno stažení, jeden uživatel – neplatí. Povýšení balíˇckuse totiž ve statistice projeví jako jeho další stažení, uživa- telé také mohou aplikaci provozovat na více zaˇrízeních.Stažené balíky lze dále distribuovat, takže jedno stažení balíˇckum ˚užeznamenat i >1 reálných uživatel ˚u. Jako nejlepší se jeví sledování špiˇckyv poˇctustažených balíˇck˚upo vy- dání nové verze. Tyto špiˇckytrvají obvykle nˇekolikdn ˚u– do té doby než vˇetšinauživatel ˚uprovede povýšení aplikace. Poˇcetstažení za tento ˇcasový úsek je možné seˇcísta od výsledku odeˇcístpr ˚umˇernémnožství stažení krát daný poˇcetdn ˚ušpiˇcky. Výsledkem pak bude hrubý odhad poˇctuaktivních instalací aplikace.

1. Nemo Mobile, Android, BlackBerry 10

66 6. VYHODNOCENÍAOVEˇ RENÍVÝSLEDKˇ UDIPLOMOVÉPRÁCE˚

Další možností, kterou využívá ˇradamobilních aplikací, by bylo pˇridání sledovací funkcionality, která by na centrální server hlásila každé spuštˇení aplikace a pˇrípadnˇei další data o jejím bˇehu.Tento pˇrístupby jistˇeumož- nil získat velmi pˇresnádata o uživatelích modRany, podle mého názoru by se však jednalo o hrubé narušení jejich soukromí. Sledování uživatelské aktivity jsem tedy do modRany neimplementoval a nikdy je také imple- mentovat nehodlám.

6.2 Mieru

Mieru je flexibilní ˇcteˇckamangy a komiksu, která byla vytvoˇrenapodle stejných zásad pro tvorbu multiplatformní aplikace jako modRana. Tvoˇrí ji tedy rovnˇežjádro a platformní a grafické moduly. Vzhledem k tomu, že se jedná o podstatnˇejednodušší aplikaci než jakou je modRana, byla Mieru použita pro prvotní pˇrenosimplementace komponent na nové platformy. Mieru již byla také zveˇrejnˇenav nˇekolikacentrálních repositáˇríchr ˚uzných mobilních platforem. Díky tomu si tak lze udˇelatpˇredstavuo tom, jaká data o uživatelích aplikace je na tˇechtoplatformách možné získat.

platforma rozhraní Maemo 5 Clutter & QML rozhraní MeeGo 1.2 Harmattan QML rozhraní stolní poˇcítaˇce Clutter & QML rozhraní Android QML rozhraní BlackBerry 10 QML rozhraní Nemo Mobile QML rozhraní

Tabulka 6.1: Tabulka platforem podporovaných aplikací Mieru

6.2.1 Mieru v Ovi Store

Mieru byla v Ovi Store zveˇrejnˇenazaˇcátkemroku 2012. K datu 8.5.2012 mˇelaaplikace Mieru z Ovi Store celkem 15806 stažení. Nejvíc stažení se vyskytlo ihned po vydání (bylo jich nˇekolikset dennˇe),poté se poˇcetstažení rychle snížil, až se stabilizoval na souˇcasnýchpˇribližnˇe10 staženích dennˇe. Co do celkového poˇctustažení vede bezkonkurenˇcnˇe Cína,ˇ na druhém místˇeje Vietnam a na tˇretímIrák. Tˇretímísto ponˇekudvzbuzuje pochyby o pˇresnostigeografických statistik v Ovi store.

67 6. VYHODNOCENÍAOVEˇ RENÍVÝSLEDKˇ UDIPLOMOVÉPRÁCE˚

Obrázek 6.1: Mieru bˇežícína PC, chytrých telefonech Nokia N900, N9, Blac- kBerry Dev Alpha a tabletu HP TouchPad

6.2.2 Mieru v BlackBerry World

Mieru byla v BlackBerry World zveˇrejnˇenav únoru 2013. Od té doby byla aplikace stažena pouze celkem 269 krát a pr ˚umˇernýpoˇcetstažení za den je 4 až 5. Co tomuto repositáˇrichybí na objemu stažení, to dohání svou geografickou pestrostí. Nejvíc stažení probˇehlopochopitelnˇez Kanady2, ale také napˇr.z Indie, Jihoafrické republiky, Singapuru, Indonésie, Nigérie nebo Ekvádoru. Podobnˇejako v Ovi Store nastává otázka, jestli opravdu nˇekdoˇctemangu ˇcikomiks s pomocí Mieru v tˇesnéblízkosti rovníku, nebo jestli má firma BlackBerry rovnˇežproblémy se správnou lokalizací p ˚uvodu jednotlivých stažení.

6.2.3 Mieru v Maemo Extras

Podobnˇejako modRana je i Mieru k uživatel ˚umke stažení k dispozici z re- positáˇreMaemo Extras. Bˇehemmigrace platformy Maemo 5 do rukou uži- vatelské komunity na konci roku 2012 však pˇrestalyfungovat statistiky sta- žení pro aplikace v Maemo Extras. V souˇcasnostitedy nelze odhadnou, ko- lik uživatel ˚usi Mieru z Maemo Extras stáhlo.

2. BlackBerry je kanadská firma a její zaˇrízeníjsou v Kanadˇevelmi populární

68 6. VYHODNOCENÍAOVEˇ RENÍVÝSLEDKˇ UDIPLOMOVÉPRÁCE˚

6.3 Python & Qt na Androidu

Když jsem zaˇcalpracovat na tom, aby bylo možné vytváˇretgrafické apli- kace v Pythonu pro Android, stanovil jsem si dva cíle: • umožnit bˇehmodRany a Mieru na Androidu • celý proces co nejvíce zjednodušit a zdokumentovat a otevˇríttak An- droid pro aplikace v Pythonu Jsem toho názoru, že oba cíle se mi podaˇrilosplnit.

6.3.1 Pyside for Android Po otestování, že vše funguje jak má, jsem vytvoˇrilpodrobný návod, po- pisující jak kompilaci PySide pro Android, tak vnitˇrní fungování celého projektu a ukázkové aplikace. Návod jsem nejdˇrívezveˇrejnilna wiki pro- jektu modRana a následnˇe– na popud PySide komunity – na wiki Qt- Projectu[138].

6.3.2 Projekt pydroid Po zveˇrejnˇenímého návod na vývoj aplikací v Pythonu a Qt pro platformu Android a oznámení tohoto návodu na emailovou konferenci projektu Py- Side, mne kontaktoval Aaron Richiger ze Švýcarska. M ˚ujpokrok s vývojem aplikací v Pythonu pro Android ho zaujal, a proto se rozhodl celý proces vylepšit a ještˇevíc pro vývojáˇreaplikací zjednodušit. Výsledkem jeho inici- ativy je projekt pydroid[69], vyvinutý primárnˇeAaronem Richigerem. Z mé strany pocházely rady a pomáhal jsem mu pˇriˇrešenínˇekterýchnízkoúrov- ˇnovýchzáležitostí. Projekt pydroid je silným vývojáˇrskýmnástrojem, umožˇnujícímvelmi jednoduchou tvorbu aplikací pro Android v Pythonu. Umožˇnujesnadné vytvoˇreníkostry projektu nebo pˇrejmenováníjiž existujícího projektu3. Vý- voj aplikace umožˇnujepydroid jak s pomocí Qt Creatoru, tak i pˇrímoz pˇrí- kazové ˇrádky. Archívy s knihovnami a aplikaˇcnímidaty projekt pydroid vytváˇrízcela automaticky a aplikace bˇeheminstalace knihoven a aplikaˇc- ních dat zobrazuje názorný procentuální pr ˚ubˇeh. Pydroid také podporuje tzv. rychlé spuštˇeníaplikace, které je možné díky tomu, že jak Python, tak QML není nutné pˇredspuštˇenímkompilovat. Pydroid v tomto režimu jednoduše zkopíruje pouze aplikaˇcnídata na za- ˇrízenía spustí aplikaˇcníaktivitu. Projekt pydroid má však i mnoho dalších užiteˇcnýchfunkcí jako jsou napˇr.podpora pro logování do systémového

3. jméno aplikace pro Android musí být jedineˇcné

69 6. VYHODNOCENÍAOVEˇ RENÍVÝSLEDKˇ UDIPLOMOVÉPRÁCE˚ logu na Androidu, instalaci balíˇck˚uz PIP, zabudované ukázkové aplikace, podpora pro automatické doplˇnovánípˇríkaz˚uatd.. Nejlepší pˇrehledo do- stupných funkcích lze získat po spuštˇenípydroidu s parametrem -help.

6.4 BlackBerry 10

6.4.1 Využití Qt Components aplikací AeroTests Mieru a modRana používají grafický framework Qt Components. Pˇripor- tování Mieru a modRany na platformu BlackBerry 10 bylo nutné tento fra- mework upravit pro fungování na zaˇrízeníchs vysokým DPI. Takto upra- vený framework již od té doby našel využití v aplikaci Aerotests[139], která slouží jako pom ˚uckapro výuku pilot ˚uultralehkých letadel.

70 7 Závˇer

Vývoj v oblasti mobilních platforem je velmi rychlý. Stále se objevují nové skuteˇcnosti,a proto bylo nutné text této diplomové práce pr ˚ubˇežnˇeaktua- lizovat. Jakmile však práce p ˚ujdedo tisku, nebude již možné ji dále aktu- alizovat. Je pravdˇepodobné,že ˇcástinformací, které byly aktuální v dobˇe, kdy diplomová práce vznikala, již po jejím dokonˇceníaktuální být nemusí. ModRana a její pˇríbuznéprojekty sice v souˇcasnostipodporují velké množství platforem, pˇrestovšak existují nˇekterézajímavé platformy, které modRanou podporovány nejsou. Jedná se napˇríklado platformu Ubuntu Touch, která zaˇcalabýt pro modRanu potenciálnˇedostupnou teprve zaˇcát- kem kvˇetna2012, a to díky zveˇrejnˇeníPyQt5. Dále se jedná o platformu Sailfish, která je díky podpoˇrepro Nemo Mobile již ˇcásteˇcnˇemodRanou podporována. Vzhledem k tomu, že první zaˇrízenís operaˇcnímsystémem Sailfish již bylo oficiálnˇeoznámeno, bylo by vhodné pˇridatplnohodnotnou podporu i pro tuto platformu. Hlavním cílem dalšího rozvoje modRany je vylepšování QML GUI ta- kovým zp ˚usobem,aby bylo dosaženo funkˇcníparity s GTK GUI. Pak bude možné zveˇrejnˇenímodRany s QML GUI do hlavních aplikaˇcníchrepositáˇr˚u platforem Android a BlackBerry 10. Z dalších funkci, které by bylo vhodné do modRany pˇridat,patˇrínapˇr. podpora pro vektorové vykreslování mapových podklad ˚u,podpora pro pˇrekladynavigaˇcníchpokyn ˚u,vylepšené offline routování nebo možnost kreslení do mapy. Aˇckoliprojekt pydroid vznikl velmi nedávno, jedná se v souˇcasnépo- dobˇejiž o velmi funkˇcnínástroj, jak dokazuje využití projektu pydroid pˇripˇrenosu implementace modRany na platformu Android. K dokonalosti scházejí pydroidu dvˇevˇeci:možnost pˇríméhovyužívání API platformy An- droid a dokumentace. Vyˇrešeníprvního problému je na dobré cestˇe,a to díky nástroji pro pˇrímévolání JNI API, který nese název Pyjnius. Pokud jde o dokumentaci, obsahuje pydroid pomˇernˇepodrobnou nápovˇedu,která chybˇejícídokumentaci do znaˇcnémíry nahrazuje. Vše tak naznaˇcuje,že jakmile budou tyto dva drobné nedostatky odstra- nˇeny, zaznamená projekt pydroid velké úspˇechy.

71 Literatura

[1] Ed Burnette. Hello, Android: introducing Google’s mobile develop- ment platform. Pragmatic Bookshelf, 2009.

[2] Open Headset Alliance [online]., [citováno 19. 4. 2013]. Dostupný z WWW: http://www.openhandsetalliance.com.

[3] Aaftab Munshi, Dan Ginsburg, and Dave Shreiner. OpenGL ES 2.0 programming guide. Addison-Wesley Professional, 2008.

[4] C Patauner, H Witschnig, D Rinner, E Maier, A and Merlin, and E Leit- geb. High Speed RFID/NFC at the Frequency of 13.56 MHz. In The First International EURASIP Workshop on RFID Technology, RFID, 2007.

[5] NFC Forum : About NFC [online]., [citováno 1. 4. 2013]. Dostupný z WWW: http://www.nfc-forum.org/aboutnfc/.

[6] Ibrahim Haddad. Introduction to the MeeGo software platform. Li- nux Journal, 2010(198):5, 2010.

[7] Shannon Schroeder. Introduction to MeeGo. Pervasive Computing, IEEE, 9(4):4–7, 2010.

[8] Mer Project [online]., [citováno 28. 4. 2013]. Dostupný z WWW: http://merproject.org/.

[9] gerrit - Gerrit Code Review - Google Project Hosting [online]., [cito- váno 28. 4. 2013]. Dostupný z WWW: http://code.google.com/p/gerrit/.

[10] Open Build Service [online]., [citováno 22. 5. 2013]. Dostupný z WWW: http://openbuildservice.org/.

[11] Image Creation - Mer Wiki [online]., [citováno 28. 4. 2013]. Dostupný z WWW: https://wiki.merproject.org/wiki/Image_Creation.

72 7. ZÁVERˇ

[12] Platform SDK - Mer Wiki [online]., [citováno 28. 4. 2013]. Dostupný z WWW: https://wiki.merproject.org/wiki/Platform_SDK.

[13] Nemo Mobile [online]., [citováno 28. 1. 2013]. Dostupný z WWW: https://wiki.merproject.org/wiki/Nemo.

[14] pˇrehled projekt ˚udistribuce Nemo Mobile na Mer OBS [online]., [citováno 12. 4. 2013]. Dostupný z WWW: https://build.merproject.org/project/subprojects? project=nemo.

[15] Mer Bugzilla [online]., [citováno 12. 4. 2013]. Dostupný z WWW: https://bugs.merproject.org/.

[16] Welcome - Mer Project Open Build Service [online]., [cito- váno 12. 4. 2013]. Dostupný z WWW: https://build.merproject.org/.

[17] SailfishOS.org [online]., [citováno 10. 3. 2013]. Dostupný z WWW: https://sailfishos.org/.

[18] We are Jolla. We are Unlike. [online]., [citováno 10. 3. 2013]. Dostupný z WWW: http://jolla.com/.

[19] Sailfish Silica 1.0: Creating applications with Sailfish Silica [online]., [citováno 10. 3. 2013]. Dostupný z WWW: https://sailfishos.org/sailfish-silica/.

[20] QA - SailfishOS [online]., [citováno 10. 3. 2013]. Dostupný z WWW: https://sailfishos.org/wiki/QA.

[21] Oracle VM VirtualBox [online]., [citováno 10. 3. 2013]. Dostupný z WWW: https://www.virtualbox.org/.

[22] The first Jolla phone: 4.5-inch display, Android app compliant, 399 euros [online]., [citováno 21. 5. 2013]. Dostupný z WWW: http://www.engadget.com/2013/05/20/jolla-phone/.

[23] The Movement - Jolla [online]., [citováno 21. 5. 2013]. Dostupný z WWW: https://join.jolla.com/.

73 7. ZÁVERˇ

[24] Plasma Active [online]., [citováno 13. 4. 2013]. Dostupný z WWW: http://plasma-active.org/.

[25] KDE - Experience Freedom! [online]., [citováno 13. 4. 2013]. Do- stupný z WWW: http://www.kde.org/.

[26] Plasma Active Core Development[online]., [citováno 18. 4. 2013]. Dostupný z WWW: http://community.kde.org/Plasma/Active/ Development#Plasma_Active_Core_Development.

[27] emailová konference projektu Plasma Active [online]., [cito- váno 18. 4. 2013]. Dostupný z WWW: https://mail.kde.org/mailman/listinfo/active.

[28] Plasma Active SDK [online]., [citováno 18. 4. 2013]. Dostupný z WWW: http://community.kde.org/Plasma/Active/ Development#Plasma_SDK:_Plasmate.

[29] Developing Active Apps [online]., [citováno 18. 4. 2013]. Dostupný z WWW: http://community.kde.org/Plasma/Active/ Development#Developing_Active_Apps.

[30] Spark: Tablet s Linuxem a bohatou konektorovou výbavou [online]., [citováno 18. 4. 2013]. Dostupný z WWW: http://smartmania.cz/bleskovky/spark-tablet-s- linuxem-a-bohatou-konektorovou-vybavou-1949.

[31] Vivaldi tablet s KDE za 200 EUR [online]., [citováno 18. 4. 2013]. Dostupný z WWW: http://www.root.cz/zpravicky/vivaldi-tablet-s-kde- za-200-eur/.

[32] Plasma/Active/Devices [online]., [citováno 18. 4. 2013]. Dostupný z WWW: http://community.kde.org/Plasma/Active/Devices.

[33] Vivaldi KDE open source Linux tablet gets new hardware, could launch this spring [online]., [citováno 18. 4. 2013]. Dostupný z WWW:

74 7. ZÁVERˇ

http://liliputing.com/2013/02/vivaldi-kde-open- source-linux-tablet-gets-new-hardware-could- launch-this-spring.html.

[34] Plasma/Active/Devices [online]., [citováno 18. 4. 2013]. Dostupný z WWW: http://community.kde.org/Plasma/Active/Devices.

[35] maemo.org:Home of the Maemo community [online]., [cito- váno 21. 4. 2013]. Dostupný z WWW: http://maemo.org/.

[36] The GTK+ Project [online]., [citováno 22. 5. 2013]. Dostupný z WWW: http://www.gtk.org/.

[37] Gnu general public license v3.0 - gnu project - foun- dation (fsf) [online]., [citováno 8. 3. 2013]. Dostupný z WWW: http://www.gnu.org/licenses/gpl.html.

[38] Hildon Reference Manual [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://maemo.org/api_refs/5.0/beta/hildon/.

[39] Kernel Power [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://wiki.maemo.org/Kernel_Power.

[40] Clutter Project | Have fun! [online]., [citováno 22. 5. 2013]. Dostupný z WWW: http://blogs.gnome.org/clutter/.

[41] Documentation/Maemo 5 Developer Gu- ide/Architecture/Multimedia Domain - maemo.org wiki [online]., [citováno 19. 4. 2013]. Dostupný z WWW: http://wiki.maemo.org/Documentation/Maemo_5_ Developer_Guide/Architecture/Multimedia_Domain.

[42] GStreamer: open source multimedia framework [online]., [cito- váno 19. 4. 2013]. Dostupný z WWW: http://gstreamer.freedesktop.org/.

[43] Software/PulseAudio [online]., [citováno 19. 4. 2013]. Dostupný z WWW: http://www.freedesktop.org/wiki/Software/ PulseAudio.

75 7. ZÁVERˇ

[44] Extras [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://wiki.maemo.org/Extras.

[45] Community SSU [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://wiki.maemo.org/Community_SSU.

[46] gpodder, a free podcast aggregator for linux, mac os x, windows, fre- ebsd and [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://gpodder.org/.

[47] Announce] modRana: a flexible GPS navigation system[online]., [ci- továno 21. 4. 2013]. Dostupný z WWW: http://talk.maemo.org/showthread.php?t=58861.

[48] Nokia N900 - maemo.org wiki [online]., [citováno 19. 4. 2013]. Do- stupný z WWW: http://wiki.maemo.org/Nokia_N900.

[49] Tracker [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://projects.gnome.org/tracker/features.html.

[50] MeeCoLay - maemo.org wiki [online]., [citováno 20. 4. 2013]. Do- stupný z WWW: http://wiki.maemo.org/MeeCoLay.

[51] Elena Reshetova and Casey Schaufler. Mobile simplified security fra- mework overview. In MeeGo Conference, 2010.

[52] INCEPTION 0.2.5: Assume direct control with PR1.3! - maemo.org - Talk [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://talk.maemo.org/showthread.php?t=85238.

[53] Nokia Store [online]., [citováno 19. 4. 2013]. Dostupný z WWW: http://store.ovi.com/.

[54] Apps for MeeGo [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://apps.formeego.org/applications/.

[55] QtSDK 1.2.1 [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://www.developer.nokia.com/info/sw.nokia.com/ id/da8df288-e615-443d-be5c-00c8a72435f8/Qt_SDK. html.

[56] Veli Mankinen and Valtteri Rahkonen. Cross-Compiling tutorial with Scratchbox, 2005.

76 7. ZÁVERˇ

[57] Qt Creator 2.7 | Documentation | Qt Project [online]., [cito- váno 22. 5. 2013]. Dostupný z WWW: http://qt-project.org/doc/qtcreator-2.7/.

[58] Nokia N9-00 Specifications - Nokia [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://www.nokia.com/global/products/phone/n9/ specifications/.

[59] Martin Kolman. N950 development kit. Openmobility.cz.

[60] Maemo Wiki, Nokia N950 [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://wiki.maemo.org/Nokia_N950.

[61] Android Mainlining Project [online]., [citováno 30. 1. 2013]. Do- stupný z WWW: http://elinux.org/Android_Mainlining_Project.

[62] Edward J Naughton. The Bionic Library: Did Google Work Around the GPL. Brown Rudnick Advisory, 2011.

[63] [Learn to Fish] - General Structure of an APK [online]., [cito- váno 21. 4. 2013]. Dostupný z WWW: http://forum.sdx-developers.com/index.php?topic= 3472.0.

[64] JAR File Specification [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://docs.oracle.com/javase/6/docs/technotes/ guides/jar/jar.html.

[65] Google Play [online]., [citováno 21. 4. 2013]. Dostupný z WWW: https://play.google.com/store.

[66] Android SDK | Android Developers [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://developer.android.com/sdk/index.html.

[67] Eclipse - The Eclipse Foundation open source community website [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://www.eclipse.org/.

77 7. ZÁVERˇ

[68] Necessitas/InstallSDK [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://community.kde.org/Necessitas/InstallSDK.

[69] raaron/pydroid · github[online]., [citováno 21. 4. 2013]. Dostupný z WWW: https://github.com/raaron/pydroid.

[70] Google: 500 million Android devices activated [online]., [cito- váno 21. 4. 2013]. Dostupný z WWW: http://news.cnet.com/8301-1035_3-57510994- 94/google-500-million-android-devices-activated/.

[71] Tizen | an open source, standards-based software platform for mul- tiple device categories [online]., [citováno 5. 4. 2013]. Dostupný z WWW: https://www.tizen.org/.

[72] [Tizen General] Samsung clobbering all of Intel/others work?? [online]., [citováno 4. 5. 2013]. Dostupný z WWW: https://lists.tizen.org/pipermail/general/2012- October/001074.html.

[73] [Phoronix] Intel: Samsung Clobbering Others With Tizen [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://www.phoronix.com/scan.php?page=news_ item&px=MTIwMDU.

[74] libhybris/libhybris · GitHub [online]., [citováno 5. 5. 2013]. Dostupný z WWW: https://github.com/libhybris/libhybris.

[75] Touch/Contribute - Ubuntu Wiki [online]., [citováno 4. 5. 2013]. Do- stupný z WWW: https://wiki.ubuntu.com/Touch/Contribute.

[76] Touch/Devices - Ubuntu Wiki [online]., [citováno 26. 4. 2013]. Do- stupný z WWW: https://wiki.ubuntu.com/Touch/Devices/.

[77] BlackBerry 10 - See The New BlackBerry Z10 & BlackBerry Q10 - Glo- bal [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://global.blackberry.com/blackberry-10.html.

78 7. ZÁVERˇ

[78] BlackBerry Z10 - The New BlackBerry Z10 is Here - Global [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://global.blackberry.com/smartphones/ blackberry-z10/en.html.

[79] BlackBerry Q10 With QWERTY Keyboard - BlackBerry Q10 Release - Global [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://global.blackberry.com/smartphones/ blackberry-q10.html.

[80] Aaron Weiss. WebOS: say goodbye to desktop applications. Networ- ker, 9(4):18–26, 2005.

[81] Mitch Allen. Palm webOS. O’Reilly Media, 2009.

[82] Palm Pre Specifications [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://www.weboshelp.net/webos-mojo-development- resources/palmprespecifications.

[83] HP TouchPad Wi-Fi 16 GB 9.7-inch Review and Specifications | TechCrunch [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://tablets.techcrunch.com/l/58/HP-TouchPad-Wi- Fi-16-GB-9-7-inch.

[84] BREAKING: HP shutting down webOS device operations, will "continue to explore options"| webOS Nation [online]., [cito- váno 4. 5. 2013]. Dostupný z WWW: http://www.webosnation.com/breaking-hp-shutting- down-webos-device-operations-will-continue- explore-options.

[85] Open webOS [online]., [citováno 10. 3. 2013]. Dostupný z WWW: http://www.openwebosproject.org/.

[86] HP News - LG Electronics Acquires webOS from HP to Enhance Smart TV [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://www8.hp.com/us/en/hp-news/press-release. html?id=1375489.

[87] Darren McCarra. Defunct HP TouchPad now an bestseller. 2011.

79 7. ZÁVERˇ

[88] freedreno open source graphics drivers [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://freedreno.github.io/.

[89] Adaptation/Touchpad - Mer Wiki [online]., [citováno 4. 5. 2013]. Dostupný z WWW: https://wiki.merproject.org/wiki/Adaptation/ Touchpad.

[90] HP Touchpad running Ubuntu Touch - xda-developers [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://forum.xda-developers.com/showthread.php?t= 2175277.

[91] Openembedded.org [online]., [citováno 26. 4. 2013]. Dostupný z WWW: http://www.openembedded.org/.

[92] directfb.org | Main [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://directfb.org/.

[93] The WebKit Open Source Project [online]., [citováno 4. 5. 2013]. Do- stupný z WWW: http://www.webkit.org/.

[94] openwebos (Open webOS) [online]., [citováno 4. 5. 2013]. Dostupný z WWW: https://github.com/openwebos.

[95] Pierluigi Frullani, Carl Worth, and Steve Ayer. ipkg–Itsy Package Ma- nagement System http://handhelds. org/moin/moin. cgi.

[96] Preware [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://preware.org/#/index/.

[97] Twitter / webosinternals: Preware 0.9.4, with full package ... [on- line]., [citováno 4. 5. 2013]. Dostupný z WWW: https://twitter.com/webosinternals/status/ 4779885909.

[98] webOS hacks, Python on webOS and the python-webos module (thp.io) [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://thp.io/2011/webos/.

80 7. ZÁVERˇ

[99] pygame_touchpad – gps navigace [online]., [citováno 4. 5. 2013]. Do- stupný z WWW: http://modrana.org/trac/wiki/pygame_touchpad.

[100] Pygame on the [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://www.modrana.org/touchpad_pygame/.

[101] World Wide Web Consortium (W3C) [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://www.w3.org/.

[102] Firefox OS security overview - Mozilla | MDN [online]., [cito- váno 19. 4. 2013]. Dostupný z WWW: https://developer.mozilla.org/en-US/docs/Mozilla/ Firefox_OS/Security/Security_model#Trusted_and_ Untrusted_Apps.

[103] SHR [online]., [citováno 26. 4. 2013]. Dostupný z WWW: http://shr-project.org.

[104] Neo FreeRunner [online]., [citováno 26. 4. 2013]. Dostupný z WWW: http://wiki.openmoko.org/wiki/Neo_FreeRunner.

[105] Devices/NokiaN900 – SHR [online]., [citováno 26. 4. 2013]. Do- stupný z WWW: http://www.shr-project.org/trac/wiki/Devices/ NokiaN900.

[106] Enlightenment Foundation Libraries [online]., [citováno 26. 4. 2013]. Dostupný z WWW: http://www.enlightenment.org/?p=about/efl.

[107] Freesmartphone.org [online]., [citováno 26. 4. 2013]. Dostupný z WWW: http://www.freesmartphone.org/.

[108] QtMoko [online]., [citováno 26. 4. 2013]. Dostupný z WWW: http://qtmoko.sourceforge.net/.

[109] OpenPhoenux - Open Pho(n)e (w. Li)nux - The independent Open Mobile Tool community [online]., [citováno 26. 4. 2013]. Dostupný z WWW: http://projects.goldelico.com/p/openphoenux/.

81 7. ZÁVERˇ

[110] GTA04 - Master page for the next generation Openmoko motherbo- ard [online]., [citováno 26. 4. 2013]. Dostupný z WWW: http://projects.goldelico.com/p/gta04-main/.

[111] Cordia Hildon-Desktop [online]., [citováno 26. 4. 2013]. Dostupný z WWW: http://cordiahd.org/.

[112] Seadot - Home [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://www.seadot.org/.

[113] ExoPC [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://www.exopc.com/.

[114] Enigma [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://enigma-project.org/.

[115] Apple - iOS [online]., [citováno 26. 4. 2013]. Dostupný z WWW: http://www.apple.com/ios/.

[116] Apple [online]., [citováno 26. 4. 2013]. Dostupný z WWW: http://www.apple.com/.

[117] Daring Fireball: A Taste of What’s New in the Updated App Store License Agreement and New Review Guidelines [online]., [cito- váno 3. 5. 2013]. Dostupný z WWW: http://daringfireball.net/2010/09/app_store_ guidelines.

[118] No GPL Apps for Apple’s App Store | ZDNet [online]., [cito- váno 3. 5. 2013]. Dostupný z WWW: http://www.zdnet.com/blog/open-source/no-gpl-apps- for-apples-app-store/8046.

[119] Mobile Matrix (thp.io) [online]., [citováno 3. 5. 2013]. Dostupný z WWW: http://thp.io/2012/mobile-matrix/.

[120] Qt Project [online]., [citováno 8. 3. 2013]. Dostupný z WWW: http://qt-project.org/.

[121] Jozef Mlich, Pavel Zemˇcík,and Aleš Láník. Vývoj aplikací v Qt pro mobilní zaˇrízení. Sborník pˇrízpˇevk˚u, (41):93–104, 2012.

82 7. ZÁVERˇ

[122] GNU Lesser General Public License v3.0 - GNU Project - Free Soft- ware Foundation (FSF) [online]., [citováno 8. 3. 2013]. Dostupný z WWW: http://www.gnu.org/copyleft/lesser.html. [123] Mobilní Telefony a Dotykové Mobily - Nokia - Ceskᡠrepublika [on- line]., [citováno 8. 3. 2013]. Dostupný z WWW: http://www.nokia.com/. [124] Digia Plc [online]., [citováno 8. 3. 2013]. Dostupný z WWW: http://www.digia.com/. [125] Ben Morris. The Symbian Os Architecture Sourcebook: Design and Solution of a Mobile Phone Os. John Wiley & Sons, 2007. [126] Qt for Tizen Blog: Qt Launches on Tizen with Standard Look and Feel [online]., [citováno 21. 5. 2013]. Dostupný z WWW: http://qtfortizen.blogspot.cz/2013/05/1.0alpha1. html. [127] Simple DirectMedia Layer [online]., [citováno 9. 3. 2013]. Dostupný z WWW: http://www.libsdl.org/. [128] Cloud GPS [online]., [citováno 4. 5. 2013]. Dostupný z WWW: http://store.ovi.com/content/222534. [129] GPS Navigace [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://www.modrana.org. [130] android-python27 [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://code.google.com/p/android-python27/. [131] python-for-android [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://github.com/kivy/python-for-android. [132] Welcome to KDE Necessitas project [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://necessitas.kde.org/. [133] PySide for Android [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://thp.io/2011/pyside-android/.

83 7. ZÁVERˇ

[134] Building PySide [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://hg.microcode.ca/blackberry-py/wiki/ Building%20PySide.

[135] BlackBerry-Py Project [online]., [citováno 21. 4. 2013]. Dostupný z WWW: http://blackberry-py.microcode.ca/.

[136] Six: Python 2 and 3 Compatibility Library [online]., [cito- váno 21. 4. 2013]. Dostupný z WWW: http://pythonhosted.org/six/.

[137] Making an application compatible with Python 2.5 to 3.2 at the same time [online]., [citováno 9. 5. 2013]. Dostupný z WWW: http://modrana.org/trac/wiki/ python2and3CompatiblityEN.

[138] PySide for Android [online]., [citováno 20. 5. 2013]. Dostupný z WWW: http://qt-project.org/wiki/PySide_for_Android_ guide.

[139] BlackBerry World - Aerotests [online]., [citováno 20. 5. 2013]. Do- stupný z WWW: /http://appworld.blackberry.com/webstore/content/ 24422931/.

[140] kumadasu/tizen-history · github [online]., [citováno 20. 5. 2013]. Do- stupný z WWW: https://github.com/kumadasu/tizen-history/.

84 85 A.RODOKMENMOBILNÍCHLINUXOVÝCHPLATFOREM A Rodokmen mobilních linuxových platforem Bada Samsung SLP TizenMobile 2.0 Magnolia TizenMobile Linux Foundation Linux TizenMobile 1.0 Larkspur TizenMobile Toyota Tizen Association Tizen LiMo LiMo4 LiMoFoundation SeveralManufacturers Car TizenIVI Preview TizenIVI ARM and several ARMand manufacturers Nemo GENIVI Alliance GENIVI Jolla Canonical sh OS fi sh Sail Intel Moblin MeeGo Mer Core Mer Moblin2 MeeGo 1.1 MeeGo 1.2 Fedora Ubuntu Mer Mer 0.17Mer Ubuntu IVI Remix 1.0 Remix IVI Ubuntu Ubuntu IVI Remix pre-release Remix IVI Ubuntu Nokia OS2005 OS2006 OS2007 OS2008 Maemo5 MeeGo 1.2 Harmattan

86 Ubuntu 9.04 Ubuntu Ubuntu Touch Ubuntu Ubuntu 11.10 Ubuntu 12.10 Ubuntu Ubuntu 11.04 Ubuntu past 2006 2007 2008 2009 2010 2011 2012 2013 2005

Obrázek A.1: Rodokmen mobilních linuxových platforem[140] B Galerie navigaˇcníhosystému modRana na r ˚uzných mobilních platformách

Obrázek B.1: modRana s GTK rozhraním na chytrém telefonu Nokia N900 s Maemo 5 Fremantle

Obrázek B.2: modRana s QML rozhraním na stejném zaˇrízenía platformˇe

87 B.GALERIE NAVIGACNÍHOSYSTÉMUMODˇ RANANARUZNÝCHMOBILNÍCHPLATFORMÁCH˚

Obrázek B.3: modRana s QML rozhraním na chytrém telefonu Nokia N9 s MeeGo 1.2 Harmattan

Obrázek B.4: modRana s GTK rozhraním na chytrém telefonu Nokia N950 s Nemo Mobile

88 B.GALERIE NAVIGACNÍHOSYSTÉMUMODˇ RANANARUZNÝCHMOBILNÍCHPLATFORMÁCH˚

Obrázek B.5: modRana s QML rozhraním na tabletu HP TouchPad s An- droidem 4.0

Obrázek B.6: modRana s QML rozhraním na vývojáˇrskémzaˇrízeníBlac- kBerry Dev Alpha s platformou BlackBerry 10

89 C Obsah DVD

PˇriloženéDVD obsahuje: • text diplomové práce v elektronické podobˇe • zdrojové kódy diplomové práce • zdrojové kódy multiplatformní aplikace modRana • instalaˇcníbalíˇckymodRany pro r ˚uznéplatformy • prezentace a ukázkové materiály z konferencí OpenMobility 2012 a 2013

90