Макс Мельников: разработчик Gentoo OpenMoko
Основная работа Макса в компании Ispirer связана с миграцией баз данных между различными платформами. Приходится иметь дело в том числе и со свободными приложениями: mysql, postgresql и linux на различных серверных платформах.
Но темой для разговора стало его хобби — телефонные аппараты Neo FreeRunner и всё, что с ними связано. В отличие от других смартфонов на базе ядра Linux, телефон разработки компании OpenMoko включает в себя полноценное Linux-окружение: glibc, x11 и весь стек ПО. Фактически, FreeRunner представляет собой вариант карманного Linux-компьютера c GSM/GPS/GPRS функционалом.
Деятельность Макса заключается в портировании написанного для NeoFreeRunner прикладного программного обеспечения под дистрибутив Gentoo для использования на платформе OpenMoko. В идеале он предпочел бы иметь на телефоне дистрибутив общего назначения со специализированным телефонным софтом, чем адаптировать ПО общего назначения под специализированный телефонный дистрибутив.
— Расскажи, какие дистрибутивы на сегодня работают с телефоном Neo FreeRunner?
Основными “официальными” дистрибутивами, с которым работают ключевые разработчики для этой платформы, являются дистрибутивы на базе OpenEmbedded. В отношении некоторых других дистрибутивов сделаны определенные движения в том смысле, что на эти дистрибутивы портирован базовый фреймворк и используется тестовое приложение Zhone для звонков. Это обозначает, что такие дистрибутивы будут работать на телефоне, но полного стека специфичного ПО для них нет. Мне бы хотелось, чтобы весь тот классический софт, который написан именно для телефонов, был портирован в Gentoo. Чем, собственно, я и занимаюсь. Также знаю, что некоторые товарищи занимаются портированием в Debian.
Основная проблема при этом — кросс-компиляция, которую очень многие разработчики пытаются обходить, многие о ней забывают. Приходится исправлять софт, чтобы он заработал. Именно на это уходит основное время. Я знаю, что благодаря в том числе моим патчам уже некоторое количество человек (примерно 10) вполне успешно используют Gentoo на телефоне.
— С кем ты сотрудничаешь на этом направлении?
Команда Gentoo OpenMoko была организована еще в сентябре 2008 года, я присоединился к ней в феврале 2009, но тогда разработка была очень вялая. Сейчас костяк команды составляют 3-4 человека, большинство из них европейцы. Также среди нас много товарищей, которые делают менее серьезные вещи: мелкие патчи и разные исправления. На конференции разработчиков OpenMoko, с которой я только что вернулся, мне удалось уговорить еще нескольких программистов, которые работают над OpenEmbedded, также сфокусироваться на Gentoo.
— Расскажи подробнее о конференции.
Конференция имела жуткое название FSOSHRUDCON’09. Состоялась она в Ессене (Германия), в замечательном заведении LinuxHotel. Владелец гостиницы готов отдавать ее под линуксовые мероприятия почти бесплатно. На этот форум съехались 23 человека, занимающихся разработкой софта, железа, фреймворка для этого телефона.
Сама конференция проходила в формате большого “воркшопа” с докладами… или в формате вечеринки, это как посмотреть. Народ приходил в помещение, и начинал делать свои дела, которыми занимается обычно, но при этом имелась возможность для плотного общения. Можно было 15 минут программировать, потом 15 минут выступать, потом опять писать и при этом пить пиво, затем просто общаться… Всё это позволило договориться о планах на будущее по дальнейшей разработке этого телефона и частей фреймворка.
Это очень важно, потому что у компании OpenMoko сейчас проблемы и проект они, насколько возможно, сейчас активно передают в руки сообщества. Чем замечательна платформа OpenMoko — тем что делается очень многое для открытой разработки железа. Бывали и раньше попытки разрабатывать железо на принципах “open source”, они проваливались. Одной из причин было отсутствие общепринятого инструментария и стандартов разработки (например, в мире свободного ПО эту роль выполняют такие вещи как GCC, POSIX и так далее). Сейчас есть попытки договариваться, какой софт использовать для дизайна железа, выработать общий рабочий процесс разработки.
— Что должно случиться, чтобы те же телефоны Neo FreeRunner начали пользоваться массовым спросом?
Дело в том, что массовое производство телефонов не ставилось целью. Первоочередной задачей этой платформы было формирование сообщества разработчиков, и подталкивание других производителей мобильных телефонов в этом направлении. Главным было разработать полноценную Linux-архитектуру для мобильной платформы, софтверные стеки, на базе которых можно легко разрабатывать свои решения.
И вроде в какой-то степени стимул к движению в этом направлении дать получилось. Взять тот же ofone(Nokia+Intel), хотя это и не совсем то, чего хотелось бы.
— Можно ли утверждать, что сегодня для выпуска своего телефона с Linux достаточно взять спецификации OpenMoko, заказать по ним микросхемы, дописать пару своих фирменных приложений, и выходить на рынок с новым телефоном?
Это практически так. Программная часть готова. У самого NeoFreeRunner есть некоторые “железные” баги, но планируется релиз железки с их исправлениями. С точки зрения софта и спецификаций все готово. Причем софт написан так, что портирование на другие телефоны, если компания владеет спецификацией на GSM-команды и соответствующие “железки” делается вообще почти элементарно.
Спецификации на железо открыты почти все, кроме GSM-модуля и видеокарты с 3D-акселерацией.
— Чем платформа интересна программистам?
Если ты хочешь написать что-то для телефона, у тебя уже есть полностью знакомое окружение, библиотеки, которые делают написание программ очень легким. Многие приложения, например, тот же pidgin, собираются и запускаются вообще без каких-либо изменений. Если у вас уже есть приложение для ноутбука или нетбука, то достаточно его просто перекомпилировать. Возможно, придется слегка подправить графический интерфейс с учетом габаритов экрана, но это уже гораздо проще, чем писать что-то с нуля.
Таким образом есть все возможности, чтобы реализовать любую свою сумасшедшую идею. А наличие в телефоне GPS, Wifi, Bluetooth и 2х акселерометров лишь способствует этому.
Достаточно интересен по своему построению фреймворк FSO, который используется в телефоне. Он разбивается на три уровня. На первом уровне — демон, который работает непосредственно с AT-командами GSM-модема. Чуть выше — уровень D-Bus, который облегчает общение программ с демонами. Это низкоуровневый враппер над всеми возможностями SIM-карты и GSM-модуля. И последний уровень — демон, более абстрактным образом аггрегирующий информацию о SIM-карте и GSM-модуле, упрощающий ее до того вида, который нужен программисту.
И есть более высокоуровневый фреймворк SHR, который полностью покрывает весь прикладной слой вплоть до графического интерфейса, дает возможность встраивать и кастомизировать софт на любом необходимом уровне абстракции. Написание собственного дозвонщика, например, занимает около 10 строк кода.
Чтобы завести ПО на другом телефоне, достаточно написать 2-3 низкоуровневых класса — и заработает весь программный стек. Есть товарищ, который завел весь фреймворк на CDMA-телефоне, занимаясь этим в порядке хобби в течение пары месяцев.
Упомянутые проекты позволяют разработчикам кастомизировать софт на абсолютно различных уровнях и куча программистов этим очень довольна. И балуется с архитектурой до сумасшествия.