Впервые исходники новой загадочной ОС Google всплыли в Сети в августе 2016 года. К маю 2017-го они обросли кое-какой документацией и обзавелись альфа-версией интерфейса. Сегодня «Фуксия» — хорошо документированная и активно развиваемая, но не ОС, а нечто гораздо большее.
 

В далеком-далеком 2008-м

Когда в 2007 году стало известно о работе Google над мобильной операционной системой, немногие поняли, зачем это нужно. Тогда существовали вполне успешная Symbian, Windows Mobile, стремительно развивался мобильный Linux (MeeGo). Android не вписывался в ряды существующих ОС, да и было не совсем понятно, зачем он вообще нужен «Гуглу».

Истинная цель стала известна только в 2008 году с появлением первого смартфона на Android. Тогда уже существовала iOS (а точнее, iPhone OS), и в целом Android был на нее похож, но имел одно очень интересное и важное отличие — бесшовную интеграцию с сервисами Google. Купивший телефон человек вводил свой email и пароль в ходе начальной настройки — и вуаля, на телефон начинали сыпаться уведомления о новых письмах, событиях в календаре, приходили сообщения в Google Talk, система синхронизировала адресную книгу с облаком.

Для Google Android был способом завлечения и закрепления пользователей в собственной экосистеме. Если ты покупал телефон на Android, ты вряд ли стал бы тратить время на настройку остальных аккаунтов и установку дополнительных приложений. Гораздо проще один раз ввести пароль от Gmail и пользоваться стандартным софтом «Гугла».

В дальнейшем Google все больше интегрировала себя в телефоны пользователей. Появилась возможность доступа к вкладкам Chrome, открытым на стационарном компе, появилась интеграция с Google Drive, голосовой поиск, был запущен Google Now, который автоматически выводил на экран подсказки в зависимости от местоположения юзера, его предыдущих поисковых запросов, событий в календаре и других действий. Позже Google Now был расширен до Now On Tap, который показывал подсказки в зависимости от отображаемой на экране информации, а на смену ему в итоге пришел Google Assistant — своего рода единая система поиска и подсказок.

Теперь Google работает над технологией интеграции частей других приложений в Google Assistant (технология Slices), что позволит еще глубже внедрить себя в телефоны пользователей. Проблема только в том, что все это они делают в отношении не предназначенной для этого операционной системы.

Конечная цель Google больше не в том, чтобы интегрировать ОС со своими сервисами, а в том, чтобы сделать саму ОС «Гуглом» и избавиться от набившего оскомину воркфлоу, когда для выполнения задачи пользователю нужно найти, скачать и запустить приложение. Операционная система должна просто выполнять просьбы пользователя и подстраиваться под него. И Android плохо подходит для решения такой задачи.

Fuchsia на PixelBook. Фото: Ars Technica
Fuchsia на PixelBook. Фото: Ars Technica
 

Google в каждом кармане

Ни в одном макете интерфейса Fuchsia нет и намека на меню приложений, сетку иконок или что-либо похожее. Интерфейс Fuchsia — это нечто вроде ленты Google Feed со строкой поиска. Здесь ты можешь увидеть события календаря, письма, сообщения из мессенджеров и многое другое. Это мало чем отличается от того же Google Feed, с той разницей, что в этом случае ты видишь не результат работы одного из приложений, а своего рода визуальное представление того, как работает ОС.

Главный экран Fuchsia. Фото: 9To5Google
Главный экран Fuchsia. Фото: 9To5Google

Ключевые компоненты Fuchsia — это не файлы и приложения, как в классических операционных системах, а сущности и агенты. Сущностями в «Фуксии» может быть все что угодно: место, человек, событие, вещь, email и так далее. Это единицы информации, которые позволяют операционной системе «понимать», с чем имеет дело пользователь.

Генерацией сущностей занимаются агенты — специальные компоненты приложений, предназначенные для анализа потоков информации. Простейший агент — это maxwell_btl. Его задача — сканировать отображаемый на экране текст на наличие email-адресов, генерировать на их основе сущности и отдавать их операционной системе, а точнее подсистеме Maxwell.

Благодаря такому простому агенту ОС всегда знает, с какими email-адресами и в каких ситуациях сталкивался пользователь, и в дальнейшем может давать подсказки на основе этой информации. Но есть и более интересные примеры. Представь, что друг присылает тебе ссылку на YouTube-ролик. Ты открываешь его в плеере, и, пока смотришь ролик, агент YouTube, как бы странно это ни звучало, собирает об этом ролике различные метаданные, создает из них сущность и отдает ее Maxwell. А тот, в свою очередь, отдает ее ленте, отображаемой на рабочем столе. И вот, один раз прослушав трек Хаски, ты уже видишь на рабочем столе и в своем плеере предложение скачать и заценить его новый альбом.

Браузер Fuchsia. Фото: 9To5Google
Браузер Fuchsia. Фото: 9To5Google

Как и сама Google, ее новая ОС будет знать все, чем бы ты ни занимался, но на гораздо более глубоком уровне. Она сможет составлять для тебя плей-листы по настроению, подсказывать, куда сходить сегодня вечером, на основе твоего расписания и обсуждений в почте. Она предложит тебе купить билеты, зная, что ты запланировал слетать в Сызрань через два дня. Все необходимые технологии будут заложены в самой операционной системе.

Просто представь: ты открываешь браузер, заходишь на сайт одного из ресторанов, затем добавляешь событие в свой календарь и говоришь: «Окей, Google, пригласи Ирину на ужин». И Google Assistant понимает, о чем речь. Он находит в списке сущностей событие календаря, просматривает предшествующие ему сущности, связывает все вместе и отправляет Ирине сообщение с приглашением в такой-то ресторан в такое-то время.

 

Поистине облачная ОС

Как и любая современная ОС, Fuchsia полагается в своей работе на облачные технологии, но опять же идет намного дальше других ОС. Сегодня облака для мобильных ОС понимаются как нечто вроде склада файлов, контактов, сообщений и другой ерунды, которую ФБР покупает за миллион долларов, чтобы побольше узнать о владельце.

Быстрые настройки. Фото: 9To5Google
Быстрые настройки. Фото: 9To5Google

В Fuchsia облако станет не просто местом бэкапа данных, оно превратится в связующее звено для всего. Представь, что ты сидишь с ноутбуком, набираешь текст на клавиатуре, попутно общаясь с кем-то в «Телеграме» под звуки синтвейва. Внезапно звонит начальник, ты срываешься с места с одним телефоном, а затем разблокируешь его и видишь все тот же воркфлоу: редактор, «Телеграм» и музыкальный плеер.

Система синхронизировала твои устройства и даже доустановила на телефон текстовый редактор — минимальную часть, необходимую для базовой работы с текстом, — все-таки канал не резиновый, а понадобится ли весь интерфейс на телефоне, неясно. Сохранилось даже содержимое буфера обмена и расположение открытых окон (а точнее, «историй», о которых мы поговорим позже).

Та же панель настроек в телефонном варианте. Фото: Ars Technica
Та же панель настроек в телефонном варианте. Фото: Ars Technica

Всем, что связано с облаками, в «Фуксии» заправляет Ledger — распределенное хранилище, выступающее в роли «второй памяти» устройства. Туда дублируется все: данные приложений, сами приложения (а точнее, компоненты), документы, настройки, истории, твои фотографии с солнышком в руках. Это не аналог Google Drive или iCloud, это аналог второго жесткого диска в рейд-массиве. При этом он совсем не обязателен к использованию.

Ledger — модульная система. По умолчанию он базируется на гугловском сетевом хранилище Firestore, но производители смартфонов смогут переоборудовать его на собственное облачное хранилище. Не исключен вариант и Ledger, который использует твой домашний сервак в качестве хранилища.

Архитектура Ledger
Архитектура Ledger
 

Модульная и масштабируемая

Начиная с самых базовых уровней и заканчивая видимыми пользователю элементами, компоненты Fuchsia максимально изолированы и логически отделены друг от друга. Fuchsia базируется на микроядре Zircon, которое, в свою очередь, представляет собой надстройку над минималистичным ядром LK.

Zircon обеспечивает такие возможности, как управление памятью, создание и уничтожение процессов, а также выступает в качестве мультиплексора для драйверов, файловых систем и сетевого стека, которые не являются частью ядра, а, как и положено микроядрам, выполняются в обособленных процессах.

Zircon — это первый слой пирога под названием Fuchsia. Над ним располагается Garnet, прослойка, обеспечивающая возможности запуска приложений. Сюда входят драйверы, библиотеки, графический рендерер Escher, система обновления Amber (основана на The Updater Framework), менеджер пакетов и система виртуализации Guest, которая позволяет, например, запустить Linux-окружение внутри Fuchsia.

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

Благодаря унифицированному IPC системе абсолютно неважно, на каком языке написаны отдельно взятые компоненты. Fuchsia поддерживает Dart, Go, Rust, Swift, Java и JavaScript; все эти языки могут общаться через единый интерфейс. Философия Fuchsia в том, чтобы компоненты были как можно более компактного размера. Например, плеер может состоять из множества написанных на разных языках компонентов, которые работают как единое целое.

Все компоненты упакованы в пакеты, которые могут быть синхронизированы или скачаны по требованию с помощью Ledger. Пакетом в Fuchsia может быть не только компонент или набор компонентов, но и что угодно вообще. На манер современных дистрибутивов Linux «Фуксия» вся состоит из пакетов, начиная от загрузчика и заканчивая конфигурационным файлом видеодрайвера.

Модульный дизайн позволит Google избежать ада, в который она попала с Android. Теперь производителю не нужно будет обновлять всю ОС целиком, чтобы исправить баг в мультимедиадекодере или обновить драйвер.

 

Истории из будущего

Armadillo — так называется, а точнее назывался графический интерфейс Fuchsia до того, как разработчики выпилили его из исходников буквально несколько дней назад. Armadillo представляет собой нечто вроде того самого фида Google и панели последних задач (а точнее, панели «историй»), разделенных информационной строкой (своего рода строка состояния, вынесенная в середину экрана).

Две важные вещи, которые нужно знать об Armadillo:

  • рабочий стол контекстно зависимый;
  • пользователь имеет дело не с приложениями и их окнами, а с историями.

Контекстно зависимую природу Fuchsia мы уже обсуждали. Это тот самый фид в стиле Google Feed, который формируется за счет работы агентов Maxwell, анализирующих все и вся на своем пути.

С историями все несколько интереснее. Дело в том, что в Armadillo нет так называемого freeform-режима расположения окон, привычного нам по Windows, OS X или Linux. Интерфейс заточен на множество разных устройств с различными размерами экрана, поэтому и управление окнами здесь организовано совершенно другим образом, больше напоминающим фреймовые оконные менеджеры. Ты можешь открыть приложение (а точнее, модуль) на весь экран, можешь добавить к нему еще один модуль, разделив экран, либо, наоборот, сложить модули друг на друга на манер вкладок в браузере.

История из двух приложений. Фото: 9To5Google
История из двух приложений. Фото: 9To5Google

Каждый модуль в Fuchsia снабжен информацией о том, какую функцию он выполняет и, как следствие, с какими типами сущностей его можно связать. ОС активно использует эту информацию, чтобы избавить пользователя от необходимости иметь дело с приложениями.

Допустим, друг делится с тобой электронной книгой (а точнее, сущностью, в которой прописано, что это за электронная книга). Fuchsia автоматически находит эту книгу в Сети, скачивает модуль для ее просмотра/покупки и демонстрирует пользователю. При этом сам модуль может быть максимально простым, а полноценное приложение может быть докачано по мере надобности.

 

Один за всех

Fuchsia — операционная система для всех типов устройств одновременно. Она может работать на смартфонах, планшетах, компьютерах, системах умного дома и даже на микроконтроллерах (если снять все лишнее и оставить только ядро LK). Ее интерфейс может растягиваться, сжиматься и произвольно изменять геометрию. Armadillo в целях отладки позволяет делать это прямо на лету.

Google заявляет, что уже в ближайшие три года Fuchsia будет работать на устройствах типа Google Home, а в течение пяти лет заменит Android. Это могут быть слишком амбициозные планы, но, если верить журналисту Ars Technica, который делал обзор Fuchsia год назад, на его Pixel-буке уже работала сеть, сенсорный экран, трекпад, клавиатура, USB-порты, а сама операционка хоть и напоминала макет, но уже была работоспособной.

Совсем недавно также появилась информация, что в Fuchsia будет полноценная поддержка приложений Android. И запускаться они будут не в эмуляторе, как это происходит в Chrome OS, а в полноценной среде исполнения Android, встроенной в «Фуксию».

К слову, о приложениях. По умолчанию для написания графических приложений в Fuchsia используется фреймворк Flutter, который примечателен тем, что позволяет создавать приложения уже сейчас, но используя Android и iOS в качестве целевых платформ. Flutter полюбился программистам за простоту и эффективность, и они уже создают на нем софт, а значит, к моменту выхода в свет Fuchsia будет иметь комплект из миллионов приложений для Android и сотен тысяч нативных приложений, написанных на Flutter.

Flutter-приложения можно писать в Android Studio
Flutter-приложения можно писать в Android Studio

 

Scenic

Говоря о Fuchsia, нельзя не упомянуть об еще одной очень интересной особенности. Fuchsia, как и все с логотипом Google, использует Material Design в своем интерфейсе. Интересная особенность этого языка дизайна в экстенсивном использовании идеи слоев и теней. Интерфейс в стиле Material Design — это не просто стопки графических элементов с черной обводкой под ними, а сложная композиция с многими уровнями и несколькими источниками света, которые дают разные тени.

В Android и в веб-приложениях вся эта сложная сцена просто эмулируется, но в Fuchsia она реальна. Движок Scenic, который используется для отрисовки интерфейса ОС, — это 3D-движок. Он строит настоящую 3D-сцену, располагает элементы интерфейса и источники света под правильными углами, а затем использует виртуальную камеру, чтобы сделать из всего этого 2D-картинку.

Еще одна причина использования Scenic — ориентация на применение Fuchsia также в качестве ОС для систем виртуальной реальности, которые требуют создания различных изображений с разных углов для достижения эффекта глубины.

 

Выводы

Чем можно подытожить этот рассказ? Fuchsia определенно очень интересный и амбициозный проект с множеством интереснейших идей и находок. В ней продуманное и современное ядро, правильные средства изоляции и взаимодействия приложений, прекрасный графический движок и фреймворк создания приложений.

Но это Google во всей своей красе.

Каждый раз, когда я покупаю новый телефон, я полностью отключаю в нем все голосовые ассистенты и всевозможные средства синхронизации, кроме адресной книги и календаря. У меня есть специальный телефон, в котором вообще нет сервисов Google. Позволит ли Fuchsia сделать мне то же самое? Действительно ли она настолько модульная, что я смогу выпилить из нее всю интеллектуальщину и оставить только то, что мне нужно? Посмотрим — в конце концов, ждать осталось недолго.

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

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

    Подписаться

  • Подписаться
    Уведомить о
    12 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии