Android – путь к десктопу

25 январь, 2016 - 11:23Андрей Зубинский

В качестве преамбулы могу сказать только неинтересное, увы (зато сразу, потом будет интереснее). Опыт и успех разработчиков ОС Android прямым текстом подсказывал «дистрибутивостроителям» Unix-подобных ОС готовый проверенный путь. Не один раз и очень долго об этом писал, и всё равно позволю себе повториться.

Проблема Unix-подобных ОС отлично всем известна – фрактальный хаос на пользовательском уровне (userspace). Это уже даже не «проблема», а унаследованная от специфики разработки особенность фактически любого дистрибутива, будь он из мира Linux или *BSD. Попытки сформировать «цельную экосистему» пользовательского уровня, например, Gnome или KDE, остаются попытками, не более. Любая реальная инсталляция нужного и полезного пользователям ПО приводит к диковинному разнообразию технологических библиотек и целых «миров» подсистем, которые или плохо, или вообще никак не согласуются друг с другом, при этом разработка их также никак не согласована.

Справедливости ради, это особенность не только мира FreeNix, та же самая ОС Windows с её огромной историей эволюции и централизованным контролем технологического стека показывает, насколько трудно решается задача спасения от технологического хаоса в ходе продолжительной эволюции большой программной системы (потому если у вас установлен .NET 4, а приложение требует .NET 2, не удивляйтесь загрузке и инсталляции «всего сверху вниз»).

Виртуализированный пользовательский уровень, главная и уникальная для мобильных приложений архитектурная особенность Android, была в своё время (и убедительно доказанно стала) сильнодействующим лекарством от этой «болячки». Очень давно корпорация Sun, косвенно имеющая отношение и к истории Android, пыталась использовать это лекарство в проекте Sun Java Desktop, но использование было очень преждевременным (вычислительные мощности и оперативная память были слишком дорогими), и вообще гомеопатическим (потому что сохраняло унаследованные громадные подсистемы, например, X Window, с соблазнами бесконечного числа технологических библиотек).

В общем, было бы очень странным, если бы всё это понимал один человек. И если бы не было попыток использовать или опыт Android, или вообще кодовую базу этой ОС, для создания ориентированных на «настольные приложения» дистрибутивов. Так что подобные дистрибутивы есть, причём речь идёт уже не о единичном уникальном явлении. Забавно, что в этом направлении идут сразу несколько китайских разработчиков (в чём, а в прагматичности, китайцам отказать трудно).

Здесь надо сделать небольшое отступление. Давайте мельком посмотрим, чем располагает ОС Android образца 2016 года. Даже взгляд с высоты птичьего полёта на архитектуру ОС говорит о том, что перед нами высокоразвитая операционная система, надстроенная над интересным высокоуровневым уровнем абстракции (заметно, что HAL, Hardware Abstraction Layer, расположен над ядром ОС Linux):

Android – путь к десктопу

Так как система сравнительно «молода», она проектировалась на базе опыта предыдущих разработок, и потому, например, в части построения пользовательских интерфейсов, куда совершеннее, чем «настольные ОС», за которыми тянется очень долгая предыстория. То, что в пользовательских ОС переложено на уровень инструментальных средств (например, высокоуровневые описания интерфейса на основе XML), здесь архитектурный элемент. С другой стороны, быстрая эволюция и ограниченность целевых платформ носимыми с тактильным интерфейсом, сформировали определённые «провалы», например, в технологической поддержке характерных «настольных» возможностей, например, drag and drop.

Графическая подсистема (как одна из самых важных в пользовательской ОС) Android также очень высокого уровня и основана на стандарте OpenGL ES – подмножестве OpenGL для встраиваемых систем. Отличия между «взрослой» OpenGL (на возможностях которой в «настольном мире» или в рабочих станциях основываются практически все большие профессиональные программные пакеты) и OpenGL ES описаны в огромном сложном документе, но совместимость этих систем гарантируется. Что значит – принципиально задача расширения ОС полноценной, класса рабочих станций, графической подсистемой, решаема. Более того, решаема так, что «родное» ПО немодифицированной Android сохранит свою работоспособность. Это очень большой и тяжёлый проект, но кто может знать, что получится в итоге из всех попыток, о которых пойдёт речь дальше. Совершенно не исключен вариант, что такая задача покажется кому-то интересной.

Отступление было сделано просто для того, чтобы предельно кратко пояснить – задача трансформации Android в «настольную ОС» (что сейчас ассоциируется и с рабочими станциями) не является ни нерешаемой, ни бессмысленной. Второе хотя бы потому, что две доминирующих на «настольном» рынке ОС, Windows и Mac OS X (на деле – NeXTSTEP с доработками графической подсистемы), действительно стары, а дистрибутивы ОС Linux не являются цельными системами с вытекающими из этого факта особенностями. И "свежая кровь" всегда была нужна рынку, всё сегодня старое когда-то было "свежей кровью".

Remix OS

Начну с самого «свежего» анонса. Буквально на днях появилась альфа-версия принципиально 64-битовой Remix OS «для ПК». Проект, основанный на исходных кодах AOSP, интереcен просто потому, что его основатели – бывшие сотрудники Google. Трое основателей проекта – этнические китайцы c американским образованием университетах класса «из лучших», прошедшие через «школы» таких компаний, как Oracle и Google, стоящая за проектом компания Jide зарегистрирована в Пекине.  Из непродолжительной истории компании интересным является её ошеломляющий успех на Kickstarter – двумя проектами она собрала почти $2 млн.

Вопреки журналистской традиции «пиши о хорошем», начну со строго противоположного. Альфа-версия – это понято что. Это практически «не работающее», или «работающее чудом». С чем, в принципе, все согласны. Но «несчастный случай» (дальше будет понятно, о чём речь и почему так жёстко) Remix OS даёт новые уроки «как нельзя выводить на рынок альфа версии».

Во-первых, дистрибутив рассчитан на запуск на реальной, физической машине. Это, вроде, небольшой нюанс, но. Раз альфа-версия, то она рассчитана на, в первую очередь, разработчиков. А что «святое» у любого разработчика? Его инструмент. Реальная, «физическая» машина. Да, дистрибутив не требует инсталляции, да, он работает с запуском с флэш-накопителя, но даже временно «выводить из строя» физическую «боевую» машину альфа-версией ОС – это немного слишком. Немногие на такое согласятся. Кроме того, дистрибутив устанавливает требование к пропускной способности шины USB-накопителя (более 20 MB/s, это USB 3.0 плюс реально быстрый накопитель). В 2016 году, когда проще «перебросить» любой файл с одной машины на другую с помощью неисчислимых сетевых сервисов, это требование неожиданно оказывается проблемой. Потому что просто или вообще нет USB-накопителя, или имеющийся покрыт пылью и очень стар, потому не соответствует требованию полосы пропускания шины. При этом никаких инструкций инсталляции ОС в популярных виртуальных машинах разработчик не даёт. В итоге получается почти идеальное руководство «как не надо», которое доводится до «как нельзя» особенностями инсталляции. Потому что даже если ваш флэш-накопитель обладает быстродействием, незначительно меньшим 20 MB/s, вы сможете попробовать эту систему (о чём нигде заранее не сказано). Только вам придётся подождать. Первая «инсталляция» ОС требует нечеловеческого терпения. В моём случае процесс длился почти час (несмотря на то, что никакой «установки» нет, это же вроде как live дистрибутив). Ещё хуже, что при инсталляции система «впадает» в загадочное состояние, никакими внешними признаками не обозначающее, что она «жива» и что-то делает. И уж совсем плохо, что об этом нюансе тоже никто ничего нигде не сказал.

К этим неприятностям добавился и небольшой «погром», который разработчикам Jide устроили дотошные аналитики Linux Forefront Project. Во-первых, поставляемый в составе дистрибутива исполняемый файл  remixos-usb-tool-*.exe оказался слегка модифицированной GPL-лицензированной программой UNetbootin (модификации крайне незначительны), при этом никакой информации о происхождении утилиты нет, как и обязательных согласно GPL исходных текстов. Во-вторых, компания Jide очень быстро, но довольно странно и категорично реагирует на запросы раздражённых этим фактом программистов. И, наконец, на фоне таких незначительных деталей совсем уж забавно и неожиданно смотрится собственное лицензионное соглашение ОС, которое почему-то распространяет действие Конституции Китайской Народной Республики на всех пользователей, безотносительно их гражданства, и вообще не упоминает лицензирование базовой системы Android x86 (Apache Public License 2.0) и всё, что оно требует. Впрочем, поднятый в среде разработчиков шум в Jide в итоге не оставили без внимания, и нюансы с лицензированием в итоге компанией были устранены.

Желающим попробовать этот дистрибутив (такое желание может быть подкреплено одним – участием в его разработке) могу порекомендовать инсталляцию в виртуальной машине. Например, в VirtualBox необходимо создать виртуальную машину для 64-битовой ОС семейства Linux (соответственно, лучше всего, если основная ОС вашей машины 64-битовая, а если вы работает в основной ОС Windows, вам вероятно понадобится включение в BIOS Virtualization Technology и VT-d, а в меню Windows Feature – выключение Hyper-V), а при запуске виртуальной ОС вызвать клавишей TAB меню дополнительных параметров и указать строку «VGA=791» без кавычек (иначе будут проблемы с управлением курсором).

Итогом этих увлекательных процедур будет в целом вполне рабочая ОС. И вполне «настольная». Только пока «медленная» и иногда впадающая в «коматозное состояние». Настольно-мультизадачная, с традиционным и привычно невидимым оконным менеджером (перемещаемые окна изменяемых размеров) с таскбаром и панелью нотификаций, с нормальным управлением курсором с точным позиционированием мышкой, с цельным (спасибо Android Lollipop) «материальным» дизайном интерфейса, естественно, с хорошим браузером (Chrome) и с возможностью использовать в этом окружении «родные» приложения Android по принципу «отдельное приложение – в отдельном окне». Выглядит всё это очень мило и цельно, намного «красивее» большинства дистрибутивов Linux.

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

TBC