Что не так с Sailfish?

Аватар пользователя Иван Помидор

В последнее время на афтершоке было множество восторженных статей про Sailfish OS, инфоповодом для которых выступила Почта России. Не разделяя восторженность этих статей сначала хотел ворваться с шашкой в комментарии, но потом понял, что написать придётся много и обстоятельно, поэтому решил в отдельную заметку оформить.

Немного обо мне. По образованию инженер, последние 17 лет занимаюсь разработкой коммерческих продуктов. Последние пять лет в связи с производственной необходимостью активно и глубоко копаюсь в внутренностях различных мобильных операционных систем. Много удалось покопаться в Android и iOs, но и во все остальные залазить приходилось.

Итак, оформлю статью как набор тезисов, которые буду раскрывать. А в конце напишу, что за на самом деле надо делать, а не то, что все пытаются делать.

Sailfish не Российская ОС

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

Sailfish не полноценная ОС

У термина "полноценная ОС" может быть множество толкований (для кого-то и сто строчек на asm это уже ОС), поэтому я опишу своё видение почему Sailfish не ОС. Есть ключевые компоненты любой современной ОС. Условно можно их разделить: ядро, слой доступа к оборудованию (HAL – hardware abstraction layer), инфраструктура выполнения, пользовательские приложения. Так вот у всех операционных систем самое важное и самое сложное это именно ядро и HAL.  Всё остальное либо уже давно написано и есть в open source (см. проект www.gnu.org), либо очевидно и не сложно для воспроизведения.

Так вот у Sailfish OS нет своего полноценного ядра и своего HAL. Про HAL я напишу ниже, а про ядро раскрою. Тут есть нюанс у Sailfish ядро есть, но оно загружается после того как было загружено ядро Android. Да, да, вы не ослышались для того, чтобы заработал Sailfish на устройстве, ему нужно оригинальное ядро Android для этого устройства.

У Sailfish нет своего HAL

HAL это такая достаточно большая программная компонента, которая обеспечивает взаимодействие между оборудованием и, условно, пользовательскими программами. Под оборудованием, поскольку у нас речь про мобильные устройства, понимается, например, сенсорный экран, или камера, или радиомодем. Этот слой очень специфичен не только для определённого процессора мобильного устройства, но и для конкретной версии, конкретной платы. Один из самых сложных для написания и отладки компонент. От этой компоненты зависит скорость и стабильность работы всей остальной операционной системы.

Так вот, в Sailfish OS слой HAL используется опять же от оригинального Android. То есть у Sailfish нет своего слоя HAL. А это, между прочим, с точки зрения обеспечения безопасности ОС один из самых важных компонент системы. И если, потенциально, где-то в Android устройствах есть закладки, то они будут располагаться именно в ядре и слое HAL.

Sailfish не open source система

Как я писал выше, в Sailfish используются два компонента (ядро и HAL), исходных кодов которых у самой Sailfish нет. Кроме этого, движок, обеспечивающий выполнение Android приложений, написан компанией Myriad и называется Alien Dalvik. Исходные коды, естественно, закрыты полностью. Множество других компонент тоже имеют закрытые исходники. Да на самом деле если сравнивать с Android, то в Sailfish гораздо больше объём закрытых исходником чем в том же aosp.

Вот хорошая картинка с официального сайта Sailfish, показывающая компоненты с закрытым исходным кодом:

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

Слабое железо

Первый шок при знакомстве с Sailfish получаешь когда видишь характеристики телефонов, на которых она работает. Это аппараты с 3-4 летней давности, не ясно откуда они такие устаревшие компоненты в 2017 году умудряются покупать. Но вот когда осознаешь то, что я написал выше, то становится ясно почему оно так.

На самом деле нет ни одного телефона, который был бы сделан специально для Sailfish. Все телефоны, на которых работает Sailfish это были изначально модели, которые проектировались, и производитились для Android. Но потом в них ещё и Sailfish поставили, сохранив весь слой взаимодействия с оборудованием от оригинального Android.

Сертификат у Sailfish ничего не значит

Из предыдущих пунктов можно сделать очевидный вывод, что никакую серьёзную сертификацию Sailfish пройти не мог. Так как для любого более-менее серьёзного допуска нужно предоставлять в сертификационную лабораторию исходных коды абсолютно всех компонент. Без этого сертификат не получить.

У Sailfish два сертификата АК1 и КС1. Очень сложно найти информацию, что же значат эти сертификаты, но на сколько я понимаю первый это про защиту от несанкционированного доступа (условно пароль можно поставить на устройство), а второй это про поддержку всяких крипто-протоколов. Причём оба сертификата базового уровня, при сертификации на который проверяется теоретическое соответствие. То есть, эти сертификаты не гарантируют отсутствие каких-либо закладок или уязвимостей ОС, за это отвечают сертификаты класса НДВ1-4

 

Хорошо, скажет пытливый читатель, закрытые компоненты откроют, сертификаты получат, недостающее напишут. Зато у sailfish отличная архитектура!  Спешу расстроить, с архитектурой у них всё ещё хуже.

Нет изоляции приложений

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

Так вот в Sailfish никакой изоляции для пользовательских программ не предусмотрено от слова совсем. Все программы равнозначны и имеют практически полный и мало чем ограниченный доступ ко всему.

Нет разграничения прав

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

В Sailfish OS всем пользовательским приложениям доступно всё, никаких ограничений. Есть небольшая разница между системными приложениями и пользовательскими, но она косметическая. И нет никакой возможности ограничить в чём-либо приложения.

Ребята из Sailfish проблему то эту понимают и даже планируют внедрить мандатную систему прав SELinux, но вот только планируют они это уже минимум два года, а реализации как-то не видно. Да и не поможет особо SELinux в разграничении прав.

Нет единого API

Если вы дочитали до этого абзаца, то должны удивляться как же так получилось, что ключевых систем обеспечения безопасности нет. Причина простая – отсутствие единого API (программный интерфейс приложения) для доступа к функциям системы и к оборудованию. Фактически приложения представляют собой обычные Linux исполняемые файлы, написанные на C++ (можно ещё и на python писать, но это не основной способ), которые через множество различных (но при этом стандартных для мира *nix) интерфейсов получают доступ ко всему.

 

Можно ещё долго топтать Sailfish за всякие более мелкие недостатки, но даже этих, как мне кажется, вполне достаточно для того, чтобы не воспринимать эту систему в сегодня серьёз. Потом - может быть, но не сейчас. Фактически, на текущем этапе развития, Sailfish представляет собой графическую надстройку над андроидом.

Да, большинство проблем в системе решаемо, но на решение этих проблем надо потратить годы упорной работы большой команды профессионалов. А текущее положение Sailfish эквивалентно версии 1.0 Android.

 

Всё плохо, что же делать?

Если рассматривать проблематику истинно российских мобильных устройств, то большинство людей рассуждает следующим образом: «Google и Apple плохие, они встраивают в свои системы следилки, закладки и т.д.». Но на самом деле всё не так. То есть, утверждение про Google и Apple, я не оспариваю, но вот тот же Google, в плоскости мобильных операционных систем, абсолютно белый и пушистый и принёс кучу пользы миру в целом. Исходные тексты Андроида доступны полностью (см. проект aosp), и для серии устройств Nexus можно собрать из исходников эталонные образы операционной системы, которые будут отлично работать на устройстве. При этом у вас будут исходники почти все, кроме HAL уровня. Можно как угодно модифицировать андроид и не платить ни копейку Гуглу. Заплатить придётся в тот момент, когда вы заходите использовать в своём андроиде магазин приложений Google.Play, но вы его можете и не использовать.

А на самом деле, вот кто главные злодеи мобильного мира, так это производители чипов. Сейчас их три основных: Qualcomm (США), MediaTek (Китай) и Samsung (Корея). Есть ряд ещё более мелких, но их объёмы на уровне шума.

Почему же они злодеи?

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

Есть и другие проблемы с чипами, но всех их описывать – очень большая статья получится.

Куда надо двигаться?

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

То есть, России надо не российскую мобильную операционную систему разрабатывать, а свой мобильный чип, открыв при этом в свободный и ничем не ограниченный доступ информацию по нему. И я вас уверяю, что очень быстро, и даже без какой-либо поддержки государства, в течении полугода появятся полностью свои операционные системы. Да, они будут собраны на базе AOSP, Tizen или того же Sailfish, но зато все слои операционной системы будут подконтрольны и их можно будет по-настоящему сертифицировать. И их можно будет по настоящему развивать в нужную России сторону.

Авторство: 
Авторская работа / переводика

Комментарии

Аватар пользователя Иван Помидор
Иван Помидор(6 лет 11 месяцев)

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

Аватар пользователя progserega
progserega(11 лет 8 месяцев)

И это тоже. Там да - огромный "блоб" непонятно какого сложного кода. Это надо переписывать.
Если я не ошибаюсь, то вообще GSM - сильно перегруженный протокол. И по-хорошему от него надо отходить постепенно.
А вообще - море работы тут :-)

Аватар пользователя sendel
sendel(6 лет 7 месяцев)

почесал руки, вот возмёмся сейчас... Посмотрел вокруг, почесал репу и понял, нужен бедный энтузиаст и богатый мечтатель чтобы это осуществить:) А вокруг только бедные мечтатели:)

Аватар пользователя utx
utx(8 лет 3 месяца)

А ведь людям невдомек, почему после введения LTE качество голосовой связи так упало, все грешат на малое количество базовых станций smiley

Аватар пользователя Jimmz
Jimmz(6 лет 11 месяцев)

Вы забываете, что на российском рынке Sailfish OS представлена только для корпоративных заказчиков и разрабатывается под их нужды. Никаких общих целей с нуждами обычных потребителей операционная система не преследует. А вот холивар у вас в комментариях получился отличный, продолжайте спорить. а мы продолжим дальше работать и развивать операционную систему :)

Аватар пользователя Иван Помидор
Иван Помидор(6 лет 11 месяцев)

Корпоративным  заказчикам в первую очередь нужна безопасность. А с этим у Sailfish бяда, бяда. Да, написать можно (раз другие смогли, значит эти орлы смогут), но только зачем это делать на деньги государства при наличии готовых и хороших решений, которые можно развивать под нужды корпоративных заказчиков - мне не понятно.

Аватар пользователя sendel
sendel(6 лет 7 месяцев)

что есть "безопасность"? Это довольно размытое понятие, нга Windows например оно размыто, но при этом куча корпораций/фирм/ИП работают на ней, да проблемы возникают, но не так чтобы "прям ужас". Так что с безопасностью у Sailfish всё нормально, не надо беспочвенный гон устраивать. Android безопасность ввёл совсем не давно, до этого и так не плохо жилось, пока "вирусня" в магазине не начала распространяться. При том, что для Sailfish приложений пока раз-два, то и сильно заморачиваться не стоит.

Аватар пользователя sendel
sendel(6 лет 7 месяцев)

купи Xiaomi Redmi Note 4 (sd625) поставь и радуйся, за те же деньги что хотят за нынешнюю "разработку" получишь Sailfish на мощном железе...

Аватар пользователя kivankov
kivankov(7 лет 6 месяцев)

Спасибо. Очень грамотно.

Аватар пользователя sendel
sendel(6 лет 7 месяцев)

У термина "полноценная ОС" может быть множество толкований (для кого-то и сто строчек на asm это уже ОС), поэтому я опишу своё видение почему Sailfish не ОС. Есть ключевые компоненты любой современной ОС. Условно можно их разделить: ядро, слой доступа к оборудованию (HAL – hardware abstraction layer), инфраструктура выполнения, пользовательские приложения. Так вот у всех операционных систем самое важное и самое сложное это именно ядро и HAL.  Всё остальное либо уже давно написано и есть в open source (см. проект www.gnu.org), либо очевидно и не сложно для воспроизведения.

 

Ужас, выше было написано что автор занимался изучением внутреностями iOS (можно и MacOS взять)... А там как раз ядро то и свободно, а вот интерфейс и является самым сложным и закрым...

Страницы