Материал из Wiki по Linux-смартфонам от LinuxPhone.ru
Перейти к: навигация, поиск

Первый взгляд: Linux-смартфон на основе открытой платформы от Openmoko

(Это перевод англоязычной статьи «First Look: OpenMoko's Linux-based open smartphone platform», автором которой является Ryan Paul. Автор изначального перевода на русский язык — Никита Лялин. Специально для LinuxPhone.ru)

4 июля Openmoko запустил свой ожидаемый смартфон Neo FreeRunner. Этот основанный на Linux телефон полностью открыт как программно, так и аппаратно, он был разработан для поддержки сторонних модификаций и настройки под себя всеми желающими. Хотя программная платформа FreeRunner еще не готова, устройство привлекло значительное внимание со стороны разработчиков ПО для мобильных устройств и энтузиастов Linux.

Очевидно, что Neo FreeRunner — мощный инструмент для создания прототипов мобильного ПО, но до сих пор не ясно, готов ли он для того, чтобы стать персональным смартфоном. Мы не хотим давать ответа на этот вопрос до тех пор, пока не получим это устройство для тестирования, однако решили представить ранний обзор программной платформы Openmoko, чтобы пролить свет на то, что же предлагает нам платформа для запуска.

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

На данный момент существует три обособленных программных стека, доступных для телефона Openmoko. Оригинальная программная среда Openmoko была построена на ведущих технологиях GNOME Mobile and Embedded, включая инструментарий GTK+. Когда время выхода Neo FreeRunner стало совсем близким и приоритеты разработчики начали смещаться в сторону адаптации для основной части пользователей, Openmoko совершила переоценку своего подхода и решила построить новый стек на ведущий мобильной среде от Trolltech — проверенной Qtopia. Третий стек, который будет реализовывать API от FreeSmartphone.org, — это часть долгосрочного инициативного фреймворка, с помощью которого, как надеются в Openmoko, должны произойти улучшения в решении тех самых проблем, созданных дроблением и дублированием.

Так как Neo FreeRunner — это полностью свободное устройство, пользователи будут иметь возможность выбора платформы, которой они хотят пользоваться. Они также будут иметь возможность использовать сторонние программные платформы, которые появятся в будущем. Мы уже можем видеть впечатляющее многообразие рабочих сред и графических оболочек, портированных на устройства Internet Tablet от Nokia, так что возможно, что увидим подобные инновации и в телефонах Openmoko. В самом деле, разработчики KDE уже начали работы на экспериментальных портах Openmoko.


Стек Openmoko, основанный на GTK+

Основанный на GTK+ стек от Openmoko, последний релиз которого называется om2007.2, предлагает умеренно-традиционный, ориентированный на использование пальцами интерфейс со стандартными приложениями для развлечений, работы в интернете и т.п. Это достаточно интуитивно понятная среда, которая придерживается очень высокого уровня визуальной целостности. Очень много схожего между om2007.2 и платформой Maemo от Nokia: обе платформы основаны на GTK+ и используют легкий оконный менеджер Matchbox, разработанный OpenedHand. OpenedHand также разработали несколько других важных частей стека om2007.2, включая набор программ по управлению личной информацией, называемый Pimlico. Браузер в om2007.2 использует WebKit — свободный движок для рендеринга от Apple. К слову, автор оригинальной статьи является большим фанатом порта WebKit на GTK+ и был очень впечатлен малым размером и превосходной поддержкой стандартов этого порта.

Openmoko-gtk-stack-home.png Openmoko-gtk-stack-dialer.png Openmoko-gtk-stack-browser.png Openmoko-gtk-stack-terminal.png

В дополнение ко всем приложениям, которые мы ожидаем видеть в смартфоне, также был добавлен терминал, который поддерживает ввод команд с экранной клавиатуры. Пользователи имеют полный root-доступ к оболочке BusyBox со всеми стандартными скриптовыми инструментами, такими как sed и awk. Стек также поставляется с большим числом игр, мультимедийным плеером, калькулятором, менеджером пакетов для установки дополнительного ПО и другими инструментами.

Для создания новых приложений для om2007.2 разработчикам придется разработать набор утилит для кросс-компиляции на Linux-системы. Wiki проекта Openmoko предлагает детальную инструкцию по этому процессу, а также описывает, как скомпилировать и упаковать программу. Разработчики, которые хотят пойти дальше и модифицировать лежащую в основе платформу, могут использовать инфраструктуру OpenEmbeded, которая обеспечивает разработку законченного движка для создания наборов пакетов.

Платформа раскрывает возможности телефона через демон gsdm, который располагается между GSM-модемом и приложениями в пользовательском пространстве. Инструкции демону могут быть отправлены через стандартные сокеты UNIX. Библиотека libgsmd — это слой абстрагирования, который охватывает протокол инструкций с простым API. Также существует командная оболочка для тестирования и отладки, которая дает пользователю интерактивный контроль над демоном. Через демон доступен широкий спектр функциональности, включая возможность звонить и принимать звонки, переключать вибрацию в телефоне, определять силу сигнала, читать и отправлять SMS, а также узнавать статус заряда батареи.

Для быстрого создания прототипов и для того, чтобы избежать трудностей связанных с разработкой набора утилит для компиляции, разработчики могут использовать Python для создания программ в Openmoko. Официально Python не поддерживается, но из главного репозитория доступен интерпретатор, а из сторонних репозиториев доступна привязка библиотеки GTK+. Библиотеки Python для взаимодействия с gsmd еще нет, но уже есть несколько полезных утилит, основанных на Python для Openmoko, которые отправляют инструкции демону используя командную строку утилиты контроля gsmd. К ним относятся инструменты SettingsGUI и SMSTool.

Стек Qtopia ASU

Платформа Om2007.2 обеспечивает пользователю очень сильные впечатления, однако некоторые ограничения GTK+ и неполнота gsmd заставили разработчиков Openmoko заняться изменениями в этой области. Для обеспечения более надежной телефонной службы поддержки для конечных пользователей, разработчики решили адаптировать платформу Trolltech Qtopia, которая используется на нескольких основных пользовательских электронных устройствах, включая Sony Mylo. Qtopia предоставляет полный серверный компонент для телефона, который более стабилен и надежен, чем gsmd.

Openmoko-asu-stack-home.png Openmoko-asu-stack-dialer.png Openmoko-asu-stack-sms.png Openmoko-asu-stack-map.png

Когда Openmoko адаптировали Qtopia, разработчики начали работать над новой платформой, которая потом стала известна как April Software Update (ASU). ASU использует порт X11 от Qtopia, так что он может поддерживать существующие приложения, основанные на GTK+. ASU также использует некоторые компоненты из среды рабочего стола Enlightenment E17. Она включает современный визуальный интерфейс запуска приложений, называемый Illume, который предоставляет полное преимущество взаимодействия с сенсорным экраном и соответствует Enlightenment Foundation Libraries (EFL). Хотя художественное оформление и качество графики интерфейса требуют многих работ, пример взаимодействия — совершенно новаторский.

Наибольший недостаток ASU — в том, что приложения, созданные для работы в om2007.2 и gsmd, не будут полностью интегрироваться со средой ASU. Приложения, написанные на GTK+, будут запускаться в ASU, но разработчикам придется использовать Qt и C++ для надлежащей интеграции. Наибольшее преимущество ASU в том, что он предлагает намного большую стабильность сервера телефона, а это значит, что он в конечном итоге будет лучше приспособлен для основной массы пользователей. К сожалению, ASU не была закончена или недостаточно отполирована для распространения с FreeRunner. Даже если сейчас Openmoko сосредоточена на разработке ASU, Neo FreeRunner по прежнему поставляется вместе с платформой om2007.2.

Стек FSO (FreeSmartphone.org)

Наличие двух очень разных платформ, которые требуют различных инструментариев для надлежащей интеграции, будет дробить «экосистему» приложений Openmoko. Стороннее программное обеспечение, которое усиливает основной функционал телефона, будет писаться для одной или другой платформы. Это одна из нескольких проблем, которую Openmoko надеется полностью решить с помощью их инициативного фреймворка, который реализует спецификации FreeSmartphone.org. Платформа строится вокруг инициативной структуры, которая называется FSO, и будет предлагать стандартизовать D-Bus API для обеспечения высокоуровневого доступа к функционалу GSM и другим близким к телефонным частям стека. Это сделает возможным для приложений, написанных в любом инструментарии, при помощи любого языка программирования, имеющего привязку D-Bus, полную интеграцию с системой.

FSO все еще на ранних этапах разработки и еще не готов для постоянного использования, но разработчики говорят, что сервер телефона в стеке FSO уже лучше, чем телефонный сервер gsmd или Qtopia. В настоящее время, на уровне приложений в FSO мало подвижек, он использует простой фреймворк-заменитель, называемый Zhone, для предоставления пользовательского интерфейса для тестирования.


Заключение

Текущая стратегия развития Openmoko — в том, чтобы развивать ASU и FSO одновременно, и в конечном счете заменить по частям Qtopia на FSO, когда последний достаточно созреет. Программа по запуску приложений Illume и другое основанное на EFL ПО будет более тесно интегрировано с функциональностью телефона, а Qtopia-компоненты ASU будут постепенно сокращены. В итоге, возможности PIM и другие высокоуровневневые компоненты тоже будут переделаны для работы со спецификациями FreeSmartphone.org.

Neo FreeRunner поставляется с om2007.2, но пользователи могут прошить его последней версией ASU, если они хотят попробовать новый стек. Новые упакованные образы выходят на регулярной основе, и пользователи могут выяснить, какие функции поддерживаются в каждом образе, проверив соответствующую пакету страницу в Wiki Openmoko.

Помимо соображений интеграции платформ существует ряд других проблем, являющихся фактором, по которому разработчики будут решать, какой сторонний инструментарий использовать для своих приложений для Openmoko. Qt, вероятно, будет популярным выбором, поскольку она предоставляет высокий уровень мобильности (переносимости на другие платформы). Qt также работает на широком спектре мобильных устройств. Nokia, которая недавно приобрела Trolltech, сделает библиотеки Qt доступными для сторонних приложений в следующей версии платформы Maemo. Также стоит отметить, что Qt 4.4 добавляет полную поддержку для Windows Mobile. Мы можем также, вероятно, ожидать увидеть, как Nokia внесет поддержку Qt в новую открытую платформу Symbian в течение пары следующих лет.

Библиотеки Enlightenment также являются очень убедительным решением для быстрого развития множества приложений для сенсорного экрана Openmoko. Мы уже видели некоторые впечатляющие программы для Maemo с E17 Edje и фреймворком Evas. Библиотеки Enlightenment — очень легкие, что делает их особенно привлекательными для мобильного развития.

GTK +, очевидно, будет наилучшим выбором для om2007.2 приложений, поскольку он даст возможность стороннему программному обеспечению визуально интегрироваться с платформой. Это также позволит разработчикам портировать некоторые популярные GTK-основанные настольные приложения Linux, такие как Pidgin и Xchat.

Есть несколько очень значительных различий между программным стеком Openmoko и грядущей платформой Android от Google. Andriod полностью избегает родного кода, он предлагает один стандартизованный API, основанный на Java, и один правильный путь для интеграции в их платформу. Подход Google значительно упрощает разработку и аккуратно избегает раздробленности и проблем переносимости, но он также налагает исключительные ограничения гибкости, изолируя построенные на Andriod телефоны от существующих программных Linux-«экосистем», и скрывает много сильных сторон, присущих платформам, основанным на Linux. Для сравнения, ПО Openmoko с энтузиазмом охватывает силу и разнообразие Linux, но платит за это высокую цену в производительности, последовательности, надежности и простоты разработки.

Стратегия платформы Openmoko, безусловно, до сих пор развивается, но платформа многое предлагает для разработчиков, кто хочет действительно расширяемый телефон, основанный на Linux, пропагандирующий свободу и выбор. Наибольшей проблемой является то, что ни один из трех стеков не является по-настоящему полнофункциональным во всех отношениях на данном этапе развития. Есть еще пробелы в завершенности и надежности, что будет удерживать конечного пользователя, желающего смартфон, который просто работает.

Трудность в обзоре платформы и выборе инструментария также могут помешать некоторым новым разработчикам, кто просто хочет создавать программное обеспечение для устройства. Недоделки в большинстве устаревшей и неполной документации в wiki Openmoko усугубляют проблему. Впрочем, автор данной статьи нашел много полезных и дружелюбных людей в IRC-канале на Freenode, поддерживающих энтузиастов, желающих приступить к работе.

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