Ubuntu Phone, Core Applications. Взгляд изнутри

Доброго времени суток, хабрачеловек!


image


На домашней странице Ubuntu снова обратный отсчет. Подпись гласит «The line where / two surfaces meet». Я не знаю, к какому событию он приурочен, но в коментариях на одном сайте здорово шутят — «Canonical выпустит холодильники с Ubuntu». И если речь идет об Ubuntu Phone, то подпись очень даже правдивая. С одной стороны шквал негатива («Еще одна мобильная ОС» и т.д. и т.п.), с другой — искреннее желание как можно скорее увидеть релиз своей любимой ОС на своем смартфоне. Как вы можете помнить, вместе с анонсом Ubuntu Phone так же сообщалось о привлечении волонтеров в разработку 12 базовых приложений для это ОС (core applications). Так вышло, что будучи членом одной из команд, я обладаю некоторой информацией, которая может показаться интересной. Статья не претендует на «взгляд из самых первых рядов», а в формате простого повествования рассказывает о некоторых деталях нашей работы изнутри. К тому же я, помнится, обещал делиться информацией о ходе процесса. С другой стороны, я не могу безэмоционально все рассказывать, так что в статье много нетехнических деталей и художественного повествования. Но если Вы заинтересованы, прошу под кат!

Как все начиналось

А началось оно все (как и многие прекрасные вещи) со спонтанного решения. Так уж вышло, что до этого я не участвовал в OpenSource разработках, но всегда хотелось, а тут вот к тому же почувствовал, что «дорос» как говорится, да и специфика разработки моя, Qt Quick. Заполнил простую форму на сайте. В ней всего лишь нужно было указать свой уровень C++, QML и JavaScript. Притом на честность, никаких проверок не было. Отправил и забыл. Через пару дней пришло письмо, содержание которого смысла не имеет приводить, вкратце «Вы нам подходите, мы выбрали Вас для участия в разработке… барабанная дробь… RSS Reader'a!». Оставалось только сказать «Согласен» и… понеслось!

Формирование команды

Поначалу я очень легкомысленно отнесся к тематике приложения. «Любой может сделать RSS Reader». Даже в примерах работы с XML и то часто ленты новостей парсят. И, формально говоря, я не ошибся, ибо создание RSS Reader'a — довольно простая задача. Однако создание приложения, достойного Ubuntu Phone, полного своими концепциями и инновациями, приправленного духом Ubuntu — нет. Но к этому я пришел чуть позже, но а что было тогда? Тогда я только лишь удивлялся, почему в команду набирается 15 (!) членов (заметьте, не человек). За минусом работников canonical, руководителей проекта и ботов ( вроде Jenkins'a ) оставалось 7-8, что тем не менее казалось перебором. Однако это, несомненно, проверенное опытом решение. В первые же дни еще даже не разработки, а только становления процесса, несколько людей тут же отошли от дел. У кого-то личные проблемы, у кого-то в семье, у кого-то время закончилось, у кого-то у кота день рождения =) Но факт остается фактом. Итого в команде нас осталось только три человека: я, Джои (Китай) и Свен Арне (Швеция. Не уверен, что правильно написал его двойное имя на русском). Оба моих тиммейта достаточно опытные в разработке с использованием Qt (в среднем 4 года) и QML (2 года). Но и с таким опытом они порой удивляли меня своими велосипедами. Начало у нас было классическое, «Лебедь, рак и щука», кто во что горазд. Наверное у всех так, не берусь судить, но мы быстро справились с неразберихой — трудолюбивый Джои набросал документ с основными этапами разработки, тогда как я заложил основу в виде первого рабочего образца.

Цели и средства

Итак, перед нами была поставлена цель — разработать RSS Reader, используя Ubuntu QML Toolkit и Qt Quick везде, где это возможно. В брифинге так же значилось, что модуль на C++ можно было писать только в самой критической ситуации (например, парни из команды файлового менеджера по объективным причинам прибегли к помощи C++ сразу). Хочется сказать, что на Qt Quick основан весь графический интерфейс ОС, что не может не радовать приверженцев библиотеки.
На первом этапе нашей команде было сложно побороть проблему загрузки и парсинга RSS лент, которые представляют собой обычный XML, что искушенный читатель наверняка знает. XmlListModel умеет работать с url в качестве источника, однако не обеспечивает требуемой нам информативности при неудачной загрузке. Позднее мы пришли к использованию XMLHttpRequest с последующим парсингом в двух XmlListModel (информация о ленте целиком и о ее записях отдельно). Но тем не менее такая реализация больше подходила для демо, чем для реального проекта, ибо она немного «наивная» чтоли. Сейчас ведется активная работа по переходу на использование сторонних сервисов для работы с RSS. Для хранения информации для чтения в оффлайне заиспользовали Qt Quick Local Storage API (читайте SQLite). Не уверен, стоит ли раскрывать еще бОльшее количество деталей реализации в самом посте, быть может лучше ответить в комментариях?

Разработка и кооперация

По сути вся наша совместная деятельность разруливается с помощью сайта launchpad. Как систему контроля версий предлагалось использовать bazaar. До этого у меня был не очень большой опыт использования git в личных проектах, но его хватило для того, чтобы провести аналогии с bzr и без особого труда пользоваться новой для меня системой контроля версий. Принцип стандартный — для новой фичи создается новая ветка, которая, как правило, является личной, а затем сливается с trunk'ом. Благо Qt Creator (кстати в SDK включена кастомная версия криэйтора с дополнительными пунктами меню и т.д.) обладает встроенными средствами для работы с bzr. Распределение задач происходит с помощью blueprints — документов с перечнем задач и привязкой к разработчику. У них очень простой синтаксис, [имя] задача: прогресс. Прогресс может быть TODO, DONE, INPROGRESS (Может быть их больше, но эти три были востребованы у нас). Сайт обладает внутренними средствами, позволяющими визуализировать выполнение задач в проектах с помощью blueprints. Визуализация всего прогресса работы над core apps тоже выглядит весьма информативно. Так же сайт содержит внутреннюю систему багтрекинга. К сожалению, время от времени приходится регистрировать баги на разработчиков toolkit'a. К слову — эти самые разработчики часто используют не Qt Quick way в реализации той или иной фичи, стараюсь в таких случаях тоже делать замечания.

Встречи. Кооперация с дизайнерами

У нас еженедельные встречи команды (руководители тоже присутствуют) по четвергам, а так же встречи с дизайнерами по пятницам. На внутренних встречах (которые проходят в IRC'e) стараются в первую очередь выяснить, нет ли блокировок, все ли идет нормально, успеваем ли в срок и т.д. Одним словом организационные вопросы. Ой, получилось двумя =) Пятничные встречи немного более интересны — разговариваем с помощью Google Hangouts. Для меня лично это непростая практика разговора на английском в том числе (благо никто из присутствующих обычно не native speaker, ошибки прощают). Обсуждаем тонкие вопросы реализации некоторых функций приложения, вопросы интернационализации и так далее. Работает с нами некто Лизетт (Lisette). Очень приятная женщина (да, именно женщина, уже совсем не девушка, я впервые был даже немного удивлен, что дизайнер такого проекта не молодежь; позже выяснилось, что она очень опытный и прошаренный в UX человек), располагает к себе, достаточно быстро разработала концепцию дизайна, известную как «Shorts» — именно так и стал называться наш RSS Reader. Сейчас как раз работаем на тем, чтобы привести внешний в соответствие ее дизайну.

Прогресс Core Applications в целом

Не мудрено, что несколько приложений вырвались вперед. Это калькулятор, погода и часы. Снова будет ошибкой сказать, что они простые, но работа над ними здорово параллелится. Другие же отстали — самое печальное положение сейчас у почтового клиента, насколько я знаю. Там фактически полностью будет перенабрана команда. Документы и терминал развиваются своим чередом, без особых прорывов и оставаний. Файловый менеджер до недавнего времени был полон багов, на Hack Days велась активная работа по его улучшению.
Стоит заметить, что из 12 приложений четыре было выделено, как социальные. Это Facebook, Youtube, Twitter и RSS Reader. На данный момент жив только наш проект) Остальные были остановлены из-за какой-то неразберихи с правами и недовольством компаний. Свято место пусто не бывает, так что на их месте возникли новые, по моему личному мнению уже «менее базовые» приложения, вроде игры Sudoku.
В августе у всех проектов будет Beta. В сентябре Release. Сейчас примерно Alpha-2.

Рассказывал участник команды разработки RSS Reader'a в рамках программы 12 Core Applications for Ubuntu Phone.
Готов поделиться всей информацией, которую по причинам позднего часа забыл упомянуть в статье, так что задавайте вопросы!
UPD По прошествию пары дней я задам накопившееся вопросы, на которые не могу точно ответить, кому-либо из Canonical и добавлю ответы в пост!
Метки:
Поделиться публикацией
Комментарии 50
  • –4
    То есть, я понимаю так, что смартфоны на Ubuntu Phone «из коробки» будут продаваться только исключительно с этими 12 базовыми приложениями? Не, это, конечно, хорошо, но хотелось бы увидеть более богатый выбор. И главный вопрос: будет ли какое-нибудь средство для эмуляции этих самых приложений на ПК, как в VS для Windows Phone?
    • +1
      Если я правильно понял, будет первый телефон с Терминалом «из коробки». Помните шутку, что на убунтофонах СМС на короткий номер будет только через sudo? :)

      А вообще никак не пойму, почему Core-приложения имеют «интересные» названия? Скажем, Shorts для RSS-ридера — не сразу поймешь. Мне кажется, уж core и надо называть так, чтобы никто не запутался с вопросом, что они делают…
      • +5
        На n900 терминал из коробки :-)
        • +4
          Отвечаю Вам и Ext4
          Ну ведь все телефоны продаются с некоторым набором предустановленных приложений. И как правило базовый набор включает только самое необходимое. Так ведь и с Android, и с Windows 8 точно так же обстоят дела. А после конфигурирования аккаунта пользователь получает доступ в магазин приложений. Другой вопрос будет ли этот магазин включать все нужное. А лучше даже все нужное и с альтернативами (перламутровыми пуговицами ^^). Но ведь заявлена поддержка Android приложений — не могу точно сказать, как они будут работать и выглядеть (look&feel), но такие слова были. В меил листах так же часто поднимается тема — «а можно ли будет запускать обычные приложения с Desktop-ной Ubuntu».
          Ответы на эти вопросы железобетонно я дать не могу, но с другой стороны Шаттлворт все понимает не хуже нас, так что в любом случае мы увидим какой-то способ избежать бедности маркета.

          Терминал из коробки, верно) Ну а что обычный юзер — откроет и закроет, а гику-то какое счастье! Еще многие ругают то, что файловый менеджер из коробки, вроде как в современной мобильной ОС не стоит давать пользователю свободы (аля MeeGo).

          А помимо Core Applications в телефоне еще будут звонилка, смс, браузер, музыка (сейчас она почему-то перекочевала в Core), галерея. Так что не пугайтесь =)

          Так и последнее — насколько мне известно, кастомное название сейчас только у RSS Reader'a. Причина может быть в том, что мы постоянно думаем о людях, которые словами Лизетт «Не понимают RSS». Так что называть его RSS Reader'ом было бы отчасти неправильно.
          • +1
            Спасибо за ответы! Обстоятельно и по существу.

            Файл-менеджер плох не сам по себе, а тем, что дает (в любой ОС) доступ к миллиону папок в корне (вспомните Android или WinCE). В результате юзер теряется, куда (тупо даже) правильнее музыку положить: создать папку Music, в Документы, или в Downloads.Спрятать бы системные файлы, а остальное показать бы — самое то!

            Терминал — я только рад ему (если что) :), главное, чтобы все программы были одинаково юзабельными. Обычно с тач-скрина много не напишешь в консоли, так что тут еще к UX вопрос. Надеюсь, что — сложится!

            Спасибо Вам!
            • 0
              Кстати, я понял, что забыли в списке :)

              «Погоду».

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

              RSS — вещь, но погода… не знаю даже, что важнее… :)
              • 0
                Погода есть ;) Перечень приложений можете увидеть по ссылке! Сама информация по ним там не особо актуальная…
                wiki
        • +19
          Ubuntu на телефоне — это, конечно, интересно, но холодильник с Linux на борту мне нужен больше. Лучшего места для домашнего сервера представить сложно — разместить над морозилкой корзину с винтами, mini-itx, встроить 19" монитор — и кухонный медиацентр, скрывающий в себе домашний сервер, готов.
          • +4
            Размещать логичнее под морозилкой — холодный воздух опускается вниз, горячий — поднимается вверх. С шумоизоляцией холодильник справится отлично, отвод лишней влаги и конденсата достигается чем-нибудь вроде Anti Frost.
            • 0
              Гениально!
              • +12
                Ммм… Холодильник в форм-факторе серверной стойки, с прозрачной дверцей, через которую видно продукты, слега подсвечиваемые перемигиванием светодиодов одного-двух серверов в отдельном отсеке или расположенных вертикально в стене. А в дверь встроенный прозрачный тач-скрин с ритмично мигающим курсором и так манящей надписью:
                user@server:~$ 
                И едва видимой тачклавиатурой чуть ниже… Или обычной, но с прозрачными клавишами врезанными в само стекло двери и являющиеся его частью и тончайшей паутинкой контактных проводников…
                Хочу такой!
                • НЛО прилетело и опубликовало эту надпись здесь
                  • 0
                    Да, вполне. Главное — прямые руки. Вот собирают же люди фреонные системы дома. А тут в принципе все тоже самое — только больших размеров. Все составные элементы легко покупаются на рынке/в сети или просто вообще взять и распотрошить обычный холодильник. Отсек с сервером можно вообще сделать полностью герметичным — и никаких проблем с пылью, а мощная криогенная система запросто все охладит.
                    Так что потом можно будет нестандартно ответить на вопрос:
                    — А какой у вас хостинг?
                    — Холодильник на кухне.
                    • НЛО прилетело и опубликовало эту надпись здесь
                      • 0
                        Конечно — он же механический. А любой механизм со временем изнашивается.
                • +2
                  Придут с обыском, увезут холодильник…
                  • +1
                    За скачивание рецепта пива и собирание из исходников…
                  • +1
                    да, черт возьми! На дворе 2013 год, а мой холодильник до сих пор не заказывает мне еду!
                  • 0
                    Насчёт богатства приложений — сам заметил, что пользуюсь мессенджером, браузером, книгочиталкой, навигацией и плеером/смотрелкой кино. Так что, для базовой комплектации самое оно. Ах да, терминал ещё использую, но его можно будет из магазина установить, я уверен.
                    Скорей бы предзаказ уже.
                    • –1
                      Богатство приложений — это ещё и выбор™. На том же Android вроде зоопарк твиттер-клиентов, но ни одного идеального. У одного много фич, но у него прокрутка лагает. У другого с фичами и прокруткой хорошо, но с юзабилити плохо, у третьего — с EDGE проблемы — и т.д., и т.п.
                      Так что приложений должно быть много. Как минимум, на каждое приложение первой потребности (браузер, контакты, звонилка, почтовые клиенты и прочая) должно быть не меньше 5-10 альтернатив, а то и больше.
                      • –2
                        Странная логика. Есть много приложений, но все кривые. Значит должно быть еще больше!
                        Не лучше ли иметь одно, но не кривое? В сушествование такого варианта вы не верите?
                        • 0
                          Одно идеальное вряд ли может существовать — может быть в лучшем случае наиболее подходящее мне. Хотя, среди десяти твиттеров наверняка будет пара нормальных, три хеллоуворлда, три комбайна с поддержкой всех околотвиттерных сервисов и ещё пара клиентов, о которых никто не вспоминает.
                          • 0
                            За всё время моего пользования разными системами такого не было ни разу.
                            Везде приходится терпеть компромиссы, но когда большой выбор, есть возможность выбрать наименьшее количество уступок.
                            • 0
                              Возможно вы пользуетесь неправильной OS? ;)
                          • 0
                            Ну я, скорее, о том, каким я хотел бы видеть базовый набор приложений. А доустановить десять твиттеров можно будет и из маркета.
                        • 0
                          Смотрится шикарно, конечно. Главное что бы система не подкачала свой статус. Интересно, а буду порты этой ОС на другие телефоны/процессоры/чипы? Хочется как бы попробовать доступную альтернативу Андроиду (на моем примете телефон на процессоре МТК6589)
                          • +1
                            В рассылке регулярно кто-то пишет о своих успехах и неудачах при портировании.
                            Если уж про это говорить, то мне тоже бы очень хотелось, чтобы Ubuntu Phone могла работать там же, где и Android (учитывая что UP использует стек драйверов андроида). В том числе и на дешевых китайских смартфонах. Не всегда же пользоваться флагманом, к тому часто нужен недорогой вариант в связи с утерей\кражей\поломкой.
                            • +1
                              C тем, как охотно медиатек публикует собираемые исходники и обещает преследовать за распространение любой своей внутренней документации, это произойдет весьма и весьма нескоро.
                              • 0
                                это да. Тысячи МТК-шных телефонов до сих пор без обновлений все из-за этих же исходников. Обидно однак(
                              • 0
                                Для моего SXSL есть прошивка Ubuntu Phone, правда насколько рабочая не знаю, не интересовался.
                              • +2
                                Я так понимаю, вы работаете без какого-либо материального профита чисто ради фана и идеи помоч свободному ПО, которое в свою очередь будет ставиться на убунтовские смартфоны, которые в свою очередь будут продаваться за вполне реальные деньги. Причем эти самые убунтовские смартфоны никому не будут интересны (кроме гиков и энтузиастов) если не будет более менее богатой среды для них, которую вы и создаете. Я хочу сказать, что конечной целью этого проекта (как и любого другого) является откусывание доли в мобильном рынке, т.е. материальная заинтерисованность. И успех проекта в этом смысле обеспечивается именно вашими стараниями, как разработчика этой среды. Причем вы кроме морального удовольствия и опыта ничего с этого не имеете. Я не хочу задеть ничьи теплые чувства и светлую веру в свободное ПО, но я восхитился ребятами из Canonical, которые придумали такую простую схему заработывания денег на бесплатном труде других людей,(ведь в конечном счете именно это они и делают), попутно внося вклад в OpenSource.
                                • 0
                                  Думаю, что Canonical совсем не первые
                                  • +2
                                    Зато пунктик в резюме будет много весить в глазах будущего работодателя. Так что можно считать долгосрочными инвестициями
                                    • НЛО прилетело и опубликовало эту надпись здесь
                                    • 0
                                      Там нынче вообще никак с мессенджерами я так понял и даже еще нет ничего на фреймворке Telepathy, я правильно понимаю суть ситуации?
                                      Вот еще вопрос, а если я допустим хочу допилить свой Vreen до уровня приложения для Ubuntu, то у меня будет шанс его если не в дефолтную поставку затолкнуть, то хотя бы сделать доступным для быстрой установки?
                                      • 0
                                        Вы всегда можете связаться с людьми из Canonical. Если приложение достойное, то они с удовольствием включат его в репозитории (с которых уже сейчас загружаются приложения, насчет базового наобора не уверен). Заходите в IRC на #ubuntu-app-devel, #ubuntu-touch-meeting (по четвергам) на freenode, ищите mhall119, popey — обоих зовут Michael.
                                        • 0
                                          Popey — это всё-таки Alan Pope :)
                                          • 0
                                            Да да, что-то я забылся немного)
                                            А вообще чаще всего с нами работают David Planella, Alan Pope и Michael Hall. Обращаться можно ко всем троим) Дэвид в комментариях какой-то новости (насчет Hack Days, кажется) активно привлекал людей в команду почтового клиента, кстати.
                                        • 0
                                          Я тоже свой клиент Яндекс.Диска подумываю портировать, но сейчас времени достаточно много уходит на сабж. Клиент сейчас существует только под MeeGo, так что очень надеюсь, что придется все лишь компоненты интерфейса заменить.
                                          • 0
                                            На Qt5 еще портировать.
                                            • 0
                                              А там быстро, я уже начинал эту работу, просто об этом не упомянул, вся работа свелась к тому, что некоторые методы у QString пришлось заюзать другие (не могу знать наверняка, ошибки ли у меня в старом коде, либо в строках что-то сильно изменилось, но при переводе из percent-encoded строк и обратно проявлялись артефакты ), другие инклуды и базовые классы (типа QQuickView вместо QDeclarativeView) и в таком духе. Очень быстро, может быть потому что проект небольшой, а может быть потому, что парни знают свое дело) В любом случае дальше показа директории хранилища в унылом списке дело не пошло.
                                              • 0
                                                qml расширения придется чуть переделать. А если использовалась графика, то и не так уж и чуть.
                                        • +2
                                          Ну вот, теперь мне захотелось убунтуфон и также захотелось пописать под него софт...:)
                                          • 0
                                            Поддержка feedly cloud будет? Ну и в целом сторонних сервисов
                                            • 0
                                              Знаете, я в очередной раз немного затрудняюсь ответить, поэтому, пожалуй, сформирую небольшой списочек вопросов из комментариев, а потом пачкой задам их кому-либо из canonical, с кем работаю. Ответ придется немного подождать в таком случае)

                                            • +1
                                              В презентациях и новостях телефоны выглядят весьма вкусно. Посмотрим, как это будет в реальности.
                                              • 0
                                                По поводу countdown на главной: это уже не секрет.
                                                • +1
                                                  О-о-о теперь на RSS Reader в моей Ubuntu Touch на Asus Nexus 7 буду смотреть другими глазами и с теплотой… наш делал! Спасибо за работу и за статью.
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                    • 0
                                                      Я думаю, Вам так же стоит поговорить с Дэвидом. За конкретными контактными данными — в личку!

                                                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.