Привет.
для тех, кто пропустил, Google работает над новой операционной системой FuchsiaOS.

Как было объявлено в 2016 году, FuchsiaOS не является преемником Android, по крайней мере, это не ее намерение. В официальной документации команда Fuchsia описывает, что она будет фокусироваться не на «пользовательском опыте», а на множественном опыте.

Это означает, что больше, чем может быть Android, Fuchsia будет более отзывчивой и многоплатформенной, «нацеленной» на несколько платформ, таких как: смартфоны, телевизоры, HomeCasts, речи, настольные компьютеры, часы и, возможно, любые другие.

С момента последней статьи о системе, которую я написал два года назад, многое изменилось, но все это мы увидим в этой статье и некоторых других новостях.

Модульный

FuchsiaOS, к настоящему времени просто Fuchsia, была разработана как полностью модульная система, позволяющая полностью удалять, обновлять и добавлять ее библиотеки и приложения, не затрагивая систему.

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

Технологии / Стек (?)

Технологии, используемые при разработке Fuchsia, — это, конечно же, C и C++, Rust, GO и Dart. Таким образом, при разработке для Fuchsia разработчик сможет выбрать язык, используемый в бэкенде — поскольку Fuchsia является полностью модульной системой, с этим проблем нет.

Его нативные внешние приложения разработаны в Dart/Flutter, что значительно облегчит переход с платформы Android на Fuchsia и все еще находится на рынке, поскольку Flutter — одна из самых успешных технологий последних лет!

Интересным моментом для проверки является то, что сегодня вполне жизнеспособно разрабатывать приложения с использованием Dart/Flutter и низкоуровневых языков — языков, которые напрямую взаимодействуют с операционной системой, таких как C/C++ и Rust — с помощью Dart. :ffi library, и что я написал статью об интеграции Rust с Flutter и рекомендую ее прочитать.

Архитектура

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

Система больше не является «Экспериментом», как ее считали ранее, а системой производственного уровня. Например, новый Google Nest Hub, который уже поставляется с версией Fuchsia, работающей изначально.

Безопасный

Это означает, что все программное обеспечение, работающее на Fuchsia, включая приложения и компоненты самой системы, следуют принципу наименьших привилегий (принцип наименьших привилегий), что вкратце требует, чтобы в слое абстракции среды операционной системы каждый Модуль — такой как процесс, пользователь или приложение — может получить доступ только к информации и ресурсам, необходимым для его выполнения.

Обновляемый

Возможность обновления подразумевает, что пакеты Fuchsia предназначены для независимого обновления, или даже Instant Delivery, или Enphemery, что означает, что пакеты предназначены для разъединения, поэтому они приходят и уходят с устройства по мере необходимости, а система всегда поддерживается в актуальном состоянии.

Модульный/Инклюзивный

Модульность означает, что система не зависит от языка. Поскольку он разработан с возможностью расширения и позволяет интегрировать программное обеспечение, написанное на нескольких языках и средах выполнения, вы можете разрабатывать с использованием C, C++, Rust, Go, Python или Dart/Flutter.

ядро

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

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

Итак, у нас есть возможная проблема: если все ядро ​​​​системы изолировано от пользовательского пространства, как мы можем разрабатывать приложения, которым нужна информация или даже «разговор» с системой?

Таким образом, наш код выполняет такие взаимодействия, как: ручное управление памятью, системные задачи или процессы, IPC, ввод-вывод устройства и т. д.; мы можем использовать системные вызовы. Эти процессы, выполняющие системные вызовы, выполняются библиотекой vDSO (виртуальный динамический общий объект — libzircon.so), которая считывает сгенерированный образ ядра вместо непосредственного чтения файлов в ядре. При чтении этого изображения коду пользовательского пространства даются только необходимые привилегии, — как управлять этими привилегиями мы можем обсудить в другой статье.

Но зачем мне это знать?

Краткий ответ: вы этого не сделаете.

Но вообще, если вы разработчик, подавляющее большинство приложений, которые вам могут понадобиться для разработки Fuchsia, вы, вероятно, будете использовать события, потоки, канал, сокет и т. д. И все это является частью Межпроцессное взаимодействие (IPC), поэтому, если это ваш случай, вот с чего вам следует начать изучение для разработки Fuchsia 😉.

(Дорожная карта разработчиков Fuchsia скоро)

Почему фуксия такая интересная

Помните, что Fuchsia — это не система на базе Linux. Абсолютно в отличие от Android, который работает поверх ядра Linux, Fuchsia полностью независима, вся система и ядро ​​разработаны Google, и полностью с открытым исходным кодом (афаик), вы можете отправлять запросы на включение системы или даже работать параллельно с ней, создавая новая система для вашего удовольствия или необходимости. Хорошим примером этого является dahliaOS, которая представляет собой Zircon/Linux (релизы основаны на Linux), разработанные на основе Fuchsia для настольных компьютеров (я дал ей два цента 😅). Я рекомендую посмотреть Dio Linux video (если вы говорите по-португальски), что немного говорит о системе, это стоит проверить!

Что мне нравится больше всего в системе, так это то, что ее экосистема бесплатна. Я имею в виду, что, хотя вся система разработана Google, их основной язык разработки интерфейса, Dart, тоже! Это обеспечивает большую поддержку разработчиков и свободу роста как для системы, так и для языка. Но также это дает свободу разработки на любом языке, который разработчик считает подходящим.

Фуксия исправить, это не убить

Fuchsia — это не система «убийца Android». Многие ограничения, которые были у Android, с Java или JVM, ядром Linux и т. д., у нас не будет с Fuchsia. Другой момент заключается в том, что ниша Android — это мобильные устройства, которые изначально не являются фокусом Fuchsia, и фактически до сих пор не фокусируются, а являются «фокусами»: несколько экранов, встроенные устройства, IOT, SmartHome и т. д.

Тестирование фуксии

На момент написания этой статьи у нас уже были более простые способы запуска системы на нашей машине без такой большой работы, такие как Fimage.

Fimage — это легкий эмулятор на основе KVM, AEMU (эмулятор Android), эмулятор Android, который поставляется с Android Studio, и FEMU (эмулятор Fuchsia). Разработано командой dahliaOS, чтобы позволить любому запускать и тестировать Fuchsia на своем компьютере без необходимости загружать более 200 гигабайт исходного кода и тратить часы на сборку системы. Так что, если вы хотите протестировать систему аккуратно и без особых проблем, это лучший вариант на данный момент. Инструкции, документация и скачать здесь. Если вы хотите получить весь опыт сборки и запачкать руки, просто следуйте инструкциям на сайте fuchsia.dev.

С другой стороны, если вы хотите испытать полную операционную систему с более совершенным пользовательским интерфейсом, оболочкой и средой рабочего стола, полностью построенной на Flutter и с оттенком Fuchsia, вы можете попробовать dahliaOS. В системе есть как версия с ядром linux, что позволяет устанавливать ее практически на любое железо, так и версия с Цирконом с очень строгой совместимостью (пока только на FIMAGE) .

Все варианты загрузки, инструкции и где найти поддержку находятся на Github dahliaOS. Принимая во внимание, что система находится в стадии разработки и команда в свободное время занимается разработкой системы, поэтому не рекомендуется использовать систему в качестве ежедневного драйвера.

Заключение

Если вы разработчик и хотите начать тестирование разработки на Fuchsia, у вас все еще есть некоторые проблемы. Стандартный SDK Flutter еще не поддерживает отладку для хоста Fuchsia, поэтому необходимо использовать SDK, доступный в репозитории Fuchsia. Как Fimage можно даже отлаживать, но нужны некоторые настройки, а Fimage не поддерживает. Вспоминая, что я уже готовлю руководство для разработчиков Fuchsia, как будто система рушится, так что просто следите за этим 😉.

Я сделал ставку на Fuchsia с тех пор, как познакомился с ней в середине 2018 года. Я считаю, что это революционная система не потому, что она приносит новые вещи, поскольку есть несколько систем с открытым исходным кодом, которые в течение некоторого времени имеют схожие характеристики и концепции, а потому, что она приносит эти концепции. и за то, что он в руках Google. Для тех, кто не помнит Dart, он начался как эксперимент, получил веб-предложение и, наконец, Flutter, и по мере роста Flutter язык рос, чтобы сопровождать разработку Framework.

Но я не говорю, что Flutter будет тянуть развитие Fuchsia, а то, что, имея на руках весь стек системы, возможности ограничены самим Google. Подумайте со мной, система нацелена на несколько пользовательских интерфейсов (несколько платформ), а Flutter разработан для мультиплатформенности, поэтому оба уровня поддерживаются из одного дома. (Не считая оборудования Google: Nest Hub, Google TV, Google Home и т. д.). Конечно, у всего есть свои хорошие и плохие стороны, и да, наличие всего под рукой может принести несколько проблем, которые мы можем обсудить дальше по этому вопросу.

Ну, я надеюсь, что это было хорошее чтение, и я в любом случае готов обсудить эту тему, мнения, предложения. Если вам интересно, не стесняйтесь следить за нами на Github и в социальных сетях, как за мной, так и за командой Fuchsia и dahliaOS, у нас есть Discord и каналы для обмена идеями. Спасибо 😁!.

Гитхаб; Instagram, Twitter, XDA: @allansrc