«Android — это опе­раци­онная сис­тема с откры­тым исходным кодом» — имен­но таким был глав­ный аргу­мент Google в поль­зу сво­ей опе­раци­онной сис­темы. «Кор­порация доб­ра» заяви­ла, что любой про­изво­дитель может не толь­ко исполь­зовать Android в сво­их смар­тфо­нах без вся­ких лицен­зион­ных отчисле­ний, но и менять его на свой вкус, вно­ся прав­ки в исходный код. Дол­гождан­ная откры­тая мобиль­ная опе­раци­онка? Как бы не так!
 

Open Source Android

Google всег­да позици­они­рова­ла Android как откры­тую аль­тер­нативу гос­подс­тво­вав­шим в момент ее появ­ления на рын­ке Windows Mobile и Symbian. Чуть ли не сра­зу пос­ле выпус­ка пер­вого смар­тфо­на для раз­работ­чиков ADP1 (T-Mobile G1) ком­пания выложи­ла в сво­бод­ный дос­туп поч­ти все исходни­ки опе­раци­онной сис­темы, начиная от модифи­циро­ван­ного ядра Linux и закан­чивая набором встро­енно­го ПО.

Впос­ледс­твии такая модель рас­простра­нения при­вела к появ­лению боль­шого чис­ла раз­личных модифи­каций не толь­ко от энту­зиас­тов, но и от ком­паний — про­изво­дите­лей смар­тфо­нов. Поч­ти каж­дый про­изво­дитель ста­рал­ся выделить свой смар­тфон сре­ди дру­гих и добав­лял в про­шив­ку допол­нитель­ный фун­кци­онал, изме­нял внеш­ний вид и поведе­ние сис­темы. Мно­жес­тво энту­зиас­тов взя­лись за раз­витие сво­бод­ных про­шивок на осно­ве офи­циаль­ных исходни­ков, и некото­рые из них дос­тигли в этом деле пре­вос­ходных резуль­татов (дос­таточ­но вспом­нить хотя бы CyanogenMod и Paranoid Android).

Paranoid Android — одна из самых известных модификаций Android
Paranoid Android — одна из самых извес­тных модифи­каций Android

Ко­личес­тво модифи­каций рос­ло, про­изво­дите­ли все глуб­же внед­ряли в ОС собс­твен­ный фун­кци­онал, переса­жива­ли поль­зовате­лей на собс­твен­ные сер­висы, и в опре­делен­ный момент в Google приш­ли к выводу, что, если ничего не пред­при­нимать, они потеря­ют кон­троль над сво­ей же опе­раци­онной сис­темой. Пер­вым шагом в решении этой проб­лемы ста­ло доведе­ние Android до такого уров­ня, что­бы необ­ходимость в модифи­кации не воз­никала. Так появил­ся интерфейс Holo в Android 4.0, Project Butter в Android 4.1, штор­ка с панелью быс­трых нас­тро­ек и мно­жес­тво дру­гих модифи­каций, которые хотели видеть юзе­ры и поэто­му при­меня­ли в сво­их про­шив­ках про­изво­дите­ли смар­тфо­нов (с выходом Android L эта тен­денция ста­ла замет­на даже блон­динкам).

Вто­рой шаг зак­лючал­ся в соз­дании такой эко­сис­темы, при которой Android ста­новил­ся бы бес­полез­ным без сер­висов поис­ковика. Google с самого начала делила Android на две час­ти: AOSP, то есть та часть Android, исходни­ки которой находи­лись в откры­том дос­тупе, и так называ­емые Google Apps — набор зак­рытых при­ложе­ний, которые допол­няли AOSP и завязы­вали его на Google. Но если рань­ше Google Apps сос­тавля­ли лишь неболь­шое количес­тво при­ложе­ний (мар­кет, Gmail, YouTube...), без которых мож­но было впол­не обой­тись, то сегод­ня это боль­шой кусок самой ОС.

Сей­час это не толь­ко мар­кет и Gmail, но и рабочий стол, кла­виату­ра, камера, Google Now вмес­те с поис­ковым движ­ком, диалер, при­ложе­ние для обме­на SMS (да, ско­ро оста­нет­ся толь­ко Hangouts). Это мно­гочис­ленные API, в том чис­ле для дос­тупа к кар­там, поис­ковику, движ­ку рас­позна­вания речи и рас­позна­вания лица. Это мно­жес­тво низ­коуров­невых биб­лиотек и сер­висов.

Как и рань­ше, в сос­таве AOSP сох­ранились откры­тые вари­анты этих ком­понен­тов, но подав­ляющее боль­шинс­тво из них более не раз­вива­ется. API уста­рели или фраг­ментар­ны, кла­виату­ра не под­держи­вает метод вво­да swype, камера не уме­ет делать сфе­ричес­кие панора­мы, экран бло­киров­ки не под­держи­вает фун­кцию рас­позна­вания лица, а поис­ковый дви­жок в пря­мом смыс­ле находит­ся в сос­тоянии раз­вития Android 1.5 — сто­ит толь­ко взгля­нуть на «заг­лушку» поис­ковика в некото­рых сво­бод­ных про­шив­ках. Это не что иное, как реали­зация поис­ка в пер­вых вер­сиях Android, интерфейс которо­го даже не при­вели к виду Android 4.X.

Но самое глав­ное, что сегод­ня Google Apps — это не прос­то при­ложе­ния, это часть API опе­раци­онной сис­темы, которые необ­ходимы вну­шитель­ному чис­лу при­ложе­ний сто­рон­них раз­работ­чиков. Без Google Apps перес­тают работать при­ложе­ния, исполь­зующие фун­кцию отоб­ражения положе­ния объ­ектов на кар­те, без Google Apps не работа­ют внут­рииг­ровые покуп­ки в при­ложе­ниях, фун­кции поис­ка, авто­риза­ция через акка­унт Google.

С каж­дым релизом Android сос­тав Google Apps все боль­ше рас­ширя­ется, а количес­тво воз­можнос­тей для соз­дания пол­ноцен­ного фор­ка ОС, сов­мести­мого со сто­рон­ними при­ложе­ниями, умень­шает­ся. Все боль­ше ком­понен­тов сис­темы «зак­рыва­ются», все мень­ше оста­ется путей для рас­ширения воз­можнос­тей сис­темы сооб­щес­тва­ми CyanogenMod и дру­гих сво­бод­ных про­шивок. Хочешь, что­бы коман­да CyanogenMod добави­ла в Google Now воз­можность нас­трой­ки рас­позна­ваемых команд? Забудь. Хочешь swype в рас­ширен­ной кла­виату­ре CyanogenMod? Забудь. Хочешь рабочий стол в сти­ле Google Home, но с воз­можнос­тями нас­трой­ки? Забудь. Забудь, забудь, забудь.

Набор библиотек, включенных в состав пакета gapps
На­бор биб­лиотек, вклю­чен­ных в сос­тав пакета gapps
Почти все приложения пакета gapps можно найти в Google Play
Поч­ти все при­ложе­ния пакета gapps мож­но най­ти в Google Play
 

Apache License Version 2.0

Но и это еще не все. На самом деле в Android изна­чаль­но заложе­но все, что­бы в любой момент сде­лать его зак­рытым. AOSP рас­простра­няет­ся под тре­мя откры­тыми лицен­зиями: GPL, BSD и Apache 2.0. Пер­вая пок­рыва­ет толь­ко ядро и очень неболь­шое количес­тво низ­коуров­невых ком­понен­тов (wpa_supplicant, нап­ример), вто­рая — боль­шую часть низ­коуров­невых ком­понен­тов сис­темы, третья — всю осталь­ную часть ОС (боль­ше 90% кода).

Во всех этих лицен­зиях есть сущес­твен­ные отли­чия, одна­ко для нас важ­но лишь то, что зак­рыть исходни­ки пов­торно не допус­кает толь­ко GPL. Код, лицен­зирован­ный под BSD и Apache, может быть без вся­ких пос­ледс­твий переве­ден в раз­ряд зак­рытых в любой момент. Имен­но поэто­му про­изво­дите­ли поч­ти всег­да откры­вают код ядра для сво­их смар­тфо­нов и никог­да не откры­вают код самой про­шив­ки. Они име­ют пра­во так пос­тупать.

И хоть в этой модели лицен­зирова­ния нет никако­го загово­ра (лицен­зия Apache выб­рана для того, что­бы про­изво­дитель мог вно­сить прав­ки, не раз­гла­шая при­меня­емых в них тех­нологий), она дает Google огромные воз­можнос­ти регули­рова­ния всей эко­сис­темы. Ком­пания уже исполь­зовала их для зак­рытия Android 3.X, для перево­да стан­дар­тных при­ложе­ний в раз­ряд зак­рытых (в рам­ках Google Apps), для выпус­ка Android L Preview.

В теории лицен­зии BSD и Apache могут поз­волить Google сде­лать гораз­до боль­ше. Нап­ример, раз­делить ОС на две вет­ки: пол­ноцен­ную зак­рытую и уре­зан­ную откры­тую. Или дер­жать код новой вер­сии ОС зак­рытым нас­толь­ко дол­го, нас­коль­ко взду­мает­ся. Ну или наладить коопе­рацию с избран­ными про­изво­дите­лями устрой­ств с целью дать им воз­можность получить дос­туп к коду рань­ше дру­гих (в сущ­ности, с про­изво­дите­лями девай­сов линей­ки Nexus это уже работа­ет). Вари­антов мож­но при­думать мас­су — столь­ко, на сколь­ко хва­тит фан­тазии. Сом­нитель­но, что Google дей­стви­тель­но будет при­менять их на прак­тике, но все воз­можнос­ти для это­го у нее есть.

 

Closed doors development

Дру­гой спо­соб взять власть в свои руки, которым успешно поль­зует­ся Google, — это зак­рытая модель раз­работ­ки. Одна из клю­чевых осо­бен­ностей клас­сичес­кой модели Open Source зак­люча­ется вов­се не в наличии исходни­ков как таковых, а в том, что на про­цесс раз­работ­ки про­дук­та может пов­лиять прак­тичес­ки любая заин­тересо­ван­ная сто­рона, глав­ное — что­бы она смог­ла убе­дить в необ­ходимос­ти изме­нений дру­гих раз­работ­чиков. В такой модели исходни­ки откры­ты на всем про­тяже­нии жиз­ни про­дук­та, а не толь­ко от релиза к релизу.

В слу­чае с Android вся власть скон­цен­три­рова­на в одних руках. Руках самой Google. Раз­работ­ка ведет­ся за зак­рытыми две­рями, и ник­то не зна­ет, в какую сто­рону Google решит раз­вивать сис­тему, ник­то не смо­жет пред­ложить свои идеи и ожи­дать, что они будут реали­зова­ны в сле­дующем релизе сис­темы. На бумаге, конеч­но, сущес­тву­ет спе­циаль­но соз­данный для этих целей аль­янс про­изво­дите­лей OHA, одна­ко, судя по все­му, он носит номиналь­ный харак­тер и нужен толь­ко для того, что­бы, спря­тав­шись от глаз пуб­лики, обсуждать тен­денции раз­вития с круп­ными про­изво­дите­лями гад­жетов.

Всем осталь­ным же при­ходит­ся ждать релиза новой вер­сии ОС и наде­ять­ся, что в резуль­тате перего­воров с условной Samsung Google наконец‑то реали­зует фун­кци­онал, который дей­стви­тель­но нужен поль­зовате­лям. А пока получа­ется, что таким фун­кци­она­лом занима­ются исклю­читель­но раз­работ­чики кас­томных про­шивок, у которых модель раз­работ­ки по‑нас­тояще­му откры­та и каж­дый может пред­ложить идею или код с ее реали­заци­ей.

 

Binary blobs

Драй­веры — еще одна серь­езная проб­лема «откры­тос­ти» Android. Железяч­ные ком­пании, кле­пающие чипы для мобиль­ной тех­ники, очень и очень неохот­но откры­вают драй­веры для сво­его обо­рудо­вания, прик­рыва­ясь прес­ловуты­ми ком­мерчес­кими тай­нами. Собс­твен­но, «неохот­но» здесь не сов­сем под­ходит, а луч­ше ска­зать — не откры­вают вов­се.

В сред­неста­тис­тичес­ком Android зак­рытыми могут быть: драй­вер виде­оадап­тера, драй­вер камеры, драй­вер тачс­кри­на, драй­вер Wi-Fi-адап­тера и GSM-модуля, драй­веры всех дат­чиков и сен­соров, демон rild, отве­чающий за связь с сотовой сетью, биб­лиоте­ка OpenGL ES, биб­лиоте­ка вывода видео и аудио, биб­лиоте­ка уско­рения вос­про­изве­дения видео. Час­то это бинар­ные бло­бы, либо встро­енные в код ядра Linux, либо рас­простра­няемые в виде биб­лиотек без исходни­ков.

По боль­шому сче­ту это нор­маль­ная ситу­ация, к которой все при­вык­ли. Проб­лемы она соз­дает толь­ко тог­да, ког­да про­изво­дитель смар­тфо­на/план­шета отка­зыва­ется от под­дер­жки устрой­ства и оста­ется наде­ять­ся лишь на энту­зиас­тов, которые пор­тиру­ют новый Android на девайс годич­ной дав­ности. Дело в том, что внут­ренне Android меня­ется куда стре­митель­нее внеш­них изме­нений, видимых поль­зовате­лям. В сис­теме пос­тоян­но меня­ются внут­ренние API, заменя­ются низ­коуров­невые ком­понен­ты, объ­явля­ются уста­рев­шими час­ти сис­темы, появив­шиеся два релиза назад.

Как в такой ситу­ации, ког­да код боль­шинс­тва драй­веров и полови­ны сис­темных биб­лиотек зак­рыт, пор­тировать новую вер­сию Android? Пра­виль­но, кос­тыли и вся­чес­кие огра­ниче­ния фун­кци­ональ­нос­ти. Отсю­да и появ­ляют­ся нес­табиль­нос­ти и ошиб­ки в кас­томных про­шив­ках.

Многие из этих системных библиотек закрыты
Мно­гие из этих сис­темных биб­лиотек зак­рыты
 

Replicant

Собс­твен­но, все, что я ска­зал до это­го, лишь прис­казка, ну или вве­дение, которое дол­жно про­яснить смысл сущес­тво­вания таких про­ектов, как Replicant, F-droid, сто­рон­них реали­заций мар­кета и дру­гих «игру­шек для чудако­ватых гиков». Все эти про­екты нап­равле­ны в пер­вую оче­редь на избавле­ние Android от проп­риетар­ных ком­понен­тов и их замену на откры­тые ана­логи. Рядово­му поль­зовате­лю такая задача может показать­ся глу­пой тра­той вре­мени, но одно­го лишь фак­та обна­руже­ния бэк­дора в GSM-модуле смар­тфо­нов Samsung раз­работ­чиками Replicant дос­таточ­но для того, что­бы эта про­шив­ка име­ла пра­во на сущес­тво­вание (да, в Replicant бэк­дор заб­локиро­ван).

Итак, что же такое Replicant? Это про­шив­ка на базе Android, избавлен­ная от всех проп­риетар­ных ком­понен­тов, вклю­чая драй­веры, служ­бы и при­ложе­ния Google. В качес­тве базы про­шив­ки выс­тупа­ет CyanogenMod, а вмес­то Google Play исполь­зует­ся мар­кет F-droid, содер­жащий толь­ко откры­тые при­ложе­ния. Офи­циаль­но про­шив­ка дос­тупна для сле­дующих устрой­ств: HTC Dream / HTC Magic, Nexus One, Nexus S, Galaxy S/S2/S3, Galaxy Note, Galaxy Nexus, Galaxy Tab 2, Galaxy Note 2 и пол­ностью сво­бод­ного смар­тфо­на GTA04.

Про­ект пос­тоян­но раз­вива­ется и, кро­ме того, вклю­чен в спи­сок при­ори­тет­ных для Фон­да сво­бод­ного ПО (а зна­чит, получа­ет финан­сирова­ние), но раз­витие идет не так быс­тро, как мож­но было бы ожи­дать. Пос­ледняя вер­сия про­шив­ки базиру­ется на Android 4.2 (CyanogenMod 10.1), а часть фун­кци­она­ла недос­тупна. Нап­ример, в слу­чае со смар­тфо­ном Galaxy Nexus не работа­ют Wi-Fi, Bluetooth, NFC, 3D-уско­рение, камера и аппа­рат­ное декоди­рова­ние видео. Все эти ком­понен­ты рас­простра­няют­ся в виде зак­рытых драй­веров или заг­ружа­емых в перифе­рий­ные чипы firmware, раз­работать качес­твен­ные откры­тые ана­логи для которых пока не уда­лось.

Си­туация с дру­гими смар­тфо­нами ненам­ного луч­ше. Во всех них недос­тупна та или иная часть фун­кци­ональ­нос­ти смар­тфо­на. Одна из нем­ногих вещей, которую уда­лось зас­тавить работать, — это GSM-модуль, для чего для каж­дого из смар­тфо­нов с нуля была раз­работа­на реали­зация слоя RIL, отве­чающе­го за обще­ние с модемом по выделен­ной шине. В ходе такой раз­работ­ки как раз и был най­ден тот самый сам­сунгов­ский бэк­дор (или баг).

В дан­ный момент Replicant, конеч­но же, не пред­назна­чен для при­мене­ния обыч­ными юзе­рами, но некото­рые из его ком­понен­тов уже переко­чева­ли в CyanogenMod и дру­гие про­шив­ки. Кро­ме того, наработ­ки про­екта могут быть исполь­зованы для соз­дания по‑нас­тояще­му откры­того и защищен­ного от прос­лушива­ния и управле­ния сов­ремен­ного смар­тфо­на (воз­можно, кто‑то соз­даст такой про­ект на Kickstarter). Пока же порт Replicant дос­тупен для единс­твен­ного откры­того, но без­надеж­но уста­рев­шего смар­тфо­на GTA04.

 

F-Droid

В качес­тве пре­дус­танов­ленно­го мар­кета в Replicant исполь­зует­ся F-Droid, раз­работан­ный для пуб­ликации исклю­читель­но откры­тых при­ложе­ний. В нас­тоящее вре­мя в катало­ге F-Droid нас­читыва­ется более 1100 наиме­нова­ний, сре­ди которых мож­но най­ти такие извес­тные при­ложе­ния, как Adblock+, ADW.Launcher, AndroidVNC, Apollo, ConnectBot, FBReader, DashClock, Firefox, VLC, Wikipedia и мно­гие дру­гие.

Ко­неч­но, это не Google Play с его мил­лионом при­ложе­ний и даже не Amazon Appstore, но это по‑нас­тояще­му откры­тый мар­кет, в каж­дом при­ложе­нии которо­го мож­но быть уве­рен­ным на 100%. В дан­ный момент это все­го лишь воп­лощен­ная в реаль­ность идея иметь откры­тый Android с откры­тыми же при­ложе­ниями, но до репози­тори­ев нас­толь­ного Linux с их сот­нями тысяч откры­тых при­ложе­ний ему еще очень далеко.

F-Droid собственной персоной
F-Droid собс­твен­ной пер­соной

Мобильные ОС с открытой моделью разработки

  • Firefox OS — опе­раци­онка раз­вива­ется коман­дой Mozilla, одна­ко весь про­цесс раз­работ­ки проз­рачен, и при желании на него мож­но пов­лиять.
  • Sailfish OS — раз­вива­ется коман­дой быв­ших сот­рудни­ков Nokia на осно­ве MeeGo, раз­работ­чики активно сот­рудни­чают с сооб­щес­твом, код открыт на всем про­тяже­нии раз­работ­ки.
  • Plasma Active — осно­вана коман­дой KDE (гра­фичес­кая сре­да для Linux/UNIX), код открыт на про­тяже­нии раз­работ­ки, при­нима­ются пред­ложения и код от незави­симых раз­работ­чиков.
  • Tizen — ОС от Intel и Samsung, раз­вива­емая под пок­ровитель­ством Linux Foundation, код открыт на про­тяже­нии раз­работ­ки, пат­чи при­нима­ются на осно­ве голосо­вания учас­тни­ков раз­работ­ки.
  • CyanogenMod — репози­торий, в котором идет раз­витие про­шив­ки, открыт для всех, пат­чи от сто­рон­них раз­работ­чиков при­нима­ются с боль­шой охо­той, решение о перера­бот­ке ком­понен­тов про­шив­ки при­нима­ется путем голосо­вания.

info

Наз­вание Replicant — это отсылка к филь­му/кни­ге Blade Runner («Бегущий по лез­вию»), где так име­нова­ли андро­идов.

info

В 2011 году кор­порация Google подари­ла раз­работ­чикам Replicant два смар­тфо­на Google Nexus One, что­бы пос­ледние смог­ли тес­тировать свою про­шив­ку, не опа­саясь «убить» свои собс­твен­ные смар­тфо­ны.

 

MicroG

А как быть с несов­мести­мос­тями, выз­ванны­ми отсутс­тви­ем пакета при­ложе­ний и биб­лиотек Google? В Replicant дан­ная проб­лема не решена вооб­ще, но это не вызыва­ет слож­ностей, так как при­ложе­ния из F-Droid не зависят от проп­риетар­ных ком­понен­тов Google. Для всех осталь­ных (тех, кто исполь­зует, нап­ример, 1Mobile Market) пред­лага­ется откры­тая аль­тер­натива gapps под наз­вани­ем MicroG от незави­симо­го раз­работ­чика mar-v-in с форумов XDA-Developers.

MicroG сос­тоит из нес­коль­ких ком­понен­тов. Клю­чевой из них — GmsCore, откры­тая реали­зация Google Play Services, фрей­мвор­ка, который поз­воля­ет при­ложе­ниям исполь­зовать фун­кции Google Play. Вто­рой ком­понент — Maps API v2, реали­зация API для дос­тупа к Google Maps, которая обма­ныва­ет при­ложе­ния, под­совывая им кар­ты OpenStreetMap (которые зачас­тую даже луч­ше гуг­лов­ских). В сос­тав так­же вхо­дят сер­вис NetworkLocationProvider, поз­воля­ющий опре­делять мес­тополо­жение по IP-адре­сам (исполь­зует­ся откры­тая база), FakeStore, пред­став­ляющий собой пус­тышку, зас­тавля­ющую при­ложе­ния думать, что на устрой­ство уста­нов­лен Play Store, и даже откры­тый ана­лог самого магази­на при­ложе­ний под наз­вани­ем Phonesky (в ори­гина­ле у гуг­ла кли­ент Play Store носит то же наз­вание).

Пос­ледний, одна­ко, исполь­зовать не рекомен­дует­ся, так как Google явно зап­реща­ет работать со сво­им репози­тори­ем при­ложе­ний сто­рон­ним кли­ентам. В качес­тве кары за это может быть заб­локиро­ван акка­унт. В осталь­ном же MicroG — это прек­расная аль­тер­натива для тех, кто не хочет свя­зывать с себя с Google и АНБ, но вынуж­ден исполь­зовать при­ложе­ния, завязан­ные на его сер­висы.

 

Выводы

Мо­дель раз­вития Android — это поис­тине пот­ряса­ющая наход­ка Google. Они умуд­ряют­ся успешно раз­вивать сис­тему, которая при внеш­ней откры­тос­ти вклю­чает в себя мно­жес­тво проп­риетар­ных ком­понен­тов, раз­вива­ется единс­твен­ной ком­пани­ей за зак­рытыми две­рями и пол­ностью ей под­чинена. Я ни в коем слу­чае не пыта­юсь очер­нить Google и ее под­ходы к раз­витию Android. В кон­це кон­цов, эта ком­пания соз­дала пот­ряса­ющую опе­раци­онную сис­тему, в раз­витие которой были вло­жены мил­лионы дол­ларов, и все это дос­талось нам задар­ма вмес­те с исходным кодом. Но, как говорит­ся, если уж наз­вался конем — полезай в стой­ло.

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии