• BlackBerry, которую мы потеряли. Рассказ об одной из лучших ОС прошлого

    В 2017 году на рынке мобильных ОС сложилась фактическая дуополия: Google конкурирует с Apple, Android уверенно вытесняет iOS на большинстве рынков. Но еще несколько лет назад ситуация выглядела иначе. Вполне неплохо себя чувствовала Microsoft с ее Windows Phone, и пусть на четвертом месте, но вполне ощутимо на рынке присутствовала BlackBerry с собственной ОС BlackBerry 10.

    Что это за система и как так получилось, что она практически исчезла с рынка? В этой статье мы обсудим особенности BlackBerry 10 и ее отличия от Android и iOS, полюбуемся на пользовательский интерфейс и проверим заявления маркетологов о безопасности этой ОС.

    Архитектура BlackBerry 10

    Открытый исходный код, регулярные обновления, сообщества разработчиков - все это не про BlackBerry 10. BlackBerry 10 была разработана на основе операционной системы QNX канадской компанией RIM (Research In Motion), позднее переименованной в BlackBerry Inc. QNX (читается «кьюникс») - ОС реального времени, основанная на архитектуре микроядра. Когда-то ее предустанавливали на машинное и телекоммуникационное оборудование, встраивали в бортовые ПК автомобилей, в сетевое оборудование Cisco (IOS XR, до 2013 года), и наконец она оказалась в смартфонах.

    Что такое QNX и что может дать микроядро в применении к мобильной ОС? Возьмем, к примеру, Android. Он построен на ядре Linux, включающем в себя как собственно базовые сервисы ОС (управление процессами и потоками, обмен сигналами и сообщениями, таймеры и синхронизация), так и огромный пласт подсистем и сервисов. В ядро Linux входят все драйверы аппаратной части устройства, драйверы файловой системы, сетевой стек и даже такие вещи, как поддержка CIFS.

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

    В BlackBerry 10 используется очень компактное микроядро QNX Neutrino, внутри которого работают планировщик процессов, система обмена сообщениями, обработчик исключений и таймеры. Все остальное: все драйверы, файловые системы, службы и приложения - исполняется в пространстве пользователя в виде отдельных процессов. И все они общаются друг с другом через микроядро, которое выступает диспетчером сообщений от одного компонента системы к другому.

    В такой архитектуре ошибка в драйвере сетевой карты приведет… да в общем-то, ни к чему не приведет. В лучшем случае драйвер просто упадет, и система его перезапустит и переконфигурирует. В худшем - взломщик окажется в ловушке этого драйвера: сам-то драйвер взломан, но что делать дальше? Хорошо, можно запустить другую службу, чтобы открыть «черный ход», но вот незадача: чтобы это сделать, надо послать сообщение компоненту proc, отвечающему за запуск процессов, а он совсем не захочет принимать сообщения от сетевого драйвера. А может быть, попытаться вклиниться в сетевой поток и подделать трафик? Ну, как говорится, удачи в написании шелл-кода, который все это проделает в динамически меняющемся трафике.


    Минус микроядерной архитектуры только в том, что ядра на ее основе более медлительны в сравнении с монолитными. Однако устройства на BlackBerry 10 работают исключительно плавно в своей базовой функциональности, даже если они оснащены давно устаревшим двухъядерным Snapdragon S4. Даже если запущено приложение, полностью загружающее ресурсы слабенького процессора, свайп от нижнего края экрана - и приложение плавно и без задержек сворачивается в окошко. Подобного уровня оптимизации нет ни в Android, ни даже в iOS - во всяком случае, последних версий.

    Железо

    На основе BlackBerry 10 было выпущено множество устройств. Сенсорные BlackBerry Z10, Z30, Z3, Leap, клавиатурные Q10, Q5, Classic и Passport. Все эти модели, за исключением Passport, собирались на основе устаревшего уже в момент выхода моделей чипсета Snapdragon S4 в разных вариациях. Что заставляло BlackBerry упорно цепляться за устаревшее железо, продолжая выпускать устройства, заведомо проигрывающие конкурентам?

    Дело в драйверах. Если говорить об Android, драйверы для наборов системной логики создают производители микросхем - Qualcomm, MediaTek и другие, причем делают они это за свой счет (разумеется, включая стоимость разработки в стоимость отгруженных микросхем). Но писать драйверы для BlackBerry 10, основанной на QNX, производители не стали, и компании пришлось самостоятельно заниматься этим. Разработка драйверов - процесс дорогой, сложный и небыстрый; неудивительно, что в BlackBerry приняли решение максимально использовать уже написанные драйверы.

    И только в одном из последних устройств, BlackBerry Passport, был использован свежий чипсет Snapdragon 801. Увы, продолжения линейки на этом же чипсете не последовало.

    Что заставляло BlackBerry упорно цепляться за устаревшее железо, продолжая выпускать устройства, заведомо проигрывающие конкурентам?


    Внешний вид и управление

    BlackBerry 10 была пионером того, что спустя время в Google назвали Material design. Рабочие столы, приложения, экраны настроек - плоские карточки с тенями, которые перемещаются и перелистываются, как материальные объекты. Никакой полупрозрачности, все очень строго, логично и продуманно.



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

    Стоит перелистнуть вправо, как попадаем на стандартные экраны с иконками установленных приложений; здесь все очень похоже на iOS и те лаунчеры для Android, в которых все приложения показываются на рабочем столе.

    Вообще, при изучении BlackBerry 10 создается впечатление, что система собрала в себе все лучшее, что могут предложить разнообразные кастомные прошивки для Android. Пробуждение экрана свайпом? Есть. Включение экрана при извлечении смартфона из чехла или поднятии со стола? Есть, и прекрасно работает. Разнообразные жесты и действия на переворачивание телефона? Тоже имеются.

    Уведомления и контроль фоновых процессов

    В BlackBerry 10 совершенно потрясающе настраиваются уведомления. На каждый чих можно сделать свою уникальную реакцию устройства, настроив звуки и вибрацию, а также цвет светодиодного индикатора. Более того, уведомления можно еще и группировать в профили - например, разрешив в ночное время звук только для телефонных звонков (или только от избранных контактов). Впрочем, «ночным режимом» профили далеко не ограничены: с помощью сторонних приложений (работающих, нужно отметить, в фоновом режиме) их можно переключать в зависимости от… да практически от чего угодно, на что хватит фантазии.



    Работу в фоне можно разрешать и запрещать приложениям по отдельности, причем гранулярный динамический (при первом запуске) контроль разрешений появился в BlackBerry 10 задолго до выхода Android 6.0.

    Центральная часть BlackBerry 10 - BlackBerry Hub. Он вызывается характерным жестом из любого приложения или места ОС. Достаточно подцепить текущий экран свайпом вверх от нижнего края экрана и смахнуть его вправо, как откроется хаб:



    В хабе собраны все учетные записи и все уведомления, поступающие от интегрированных с ним приложений. Это и письма на разные адреса электронной почты, и твиты в Twitter, и сообщения в Facebook, и уведомления Skype, а также звонки и СМС.

    И это не просто место, в котором можно просмотреть сообщения или твиты: на них можно ответить или отреагировать, не выходя из хаба и, как правило, даже не запуская соответствующего приложения. Для человека, который должен всегда быть на связи и который использует для этого несколько каналов, хаб просто идеальное решение. (От себя добавлю: действительно, очень удобно. После BlackBerry 10 я так и не смог отвыкнуть от хаба, пришлось устанавливать его версию для Android. Это, конечно, бледная тень былого величия, но все равно удобно!)



    Это в теории. А на практике… Малая популярность платформы привела к тому, что провайдеры стали отказываться от поддержки системы и, соответственно, интеграция с хабом стала пропадать. Первой ласточкой был Facebook, объявивший, что официальное приложение перестанет работать в мае 2016 года. За ним последовал WhatsApp, клиент которого перестанет работать на BlackBerry 10 в июле этого года. Skype уже очень давно доступен исключительно в виде приложения для Android (о них ниже).

    Продолжение доступно только подписчикам

    Вариант 1. Оформи подписку на «Хакер», чтобы читать все материалы на сайте

    Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов.