Итоговый отчет 2009: Google Summer Of Code + Haiku Code Drive

Sep 22, 2009 08:37

--- кросспост в ru_beos и haiku_os ---

В этом году для работы над Haiku-проектами было профинансировано участие восьми студентов, в течение всех летних месяцев. Шесть из них участвовали в "Лете Кода Google" (Google Summer of Code), а два других - в собственном мероприятии Haiku inc. - "Haiku Code Drive". С большим удовольствием могу официально объявить, что в целом этот год был гораздо более успешным, чем предыдущий. Пятеро из студентов Google Summer of Code выполнили свои задания с успехом, также как и оба участника Haiku Code Drive. После таких достижений, Адриену Дестигуэзу и Брайсу Гроффу был открыт полный доступ на запись в главное дерево Haiku. Максим Симон был также одобрен WebKit и получил возможность публиковать свой код.

Прежде, чем огласить окончательные результаты для каждого участника, нужно бы напомнить, как все начиналось. Это уже третий год, как Haiku принимает участие в Google Summer of Code. Каждый год мы, как организация, стараемся усовершенствовать процесс как для студентов, так и для сообщества. Пожалуй главным улучшением можно считать приглашение участников к исправлению проблем, документированных в одном или в нескольких тикетах нашего багтракера. Цель заключалась в том, чтобы обеспечить от каждого студента хотя бы минимальное, но все-таки непосредственное воздействие на наш проект. Это включает в себя навигацию и сборку исходного кода Haiku, также как и общение через наши почтовые списки рассылки, а также другие утилиты для совместной работы. Представив очень точные требования к участникам, мы смогли получить от студентов ознакомительную информацию по их мотивации, способностям, а также коммуникативным возможностям. Результаты говорят сами за себя: возросшее число студентов, которые сумели выполнить поставленные задачи, ставит пресловутую печать одобрения на наши новые дополнения к способу отбора участников. А теперь, собственно итоги по каждому студенту отдельно...

Адриен Дестагуэз (Adrien Destugues): Locale Kit
Проект Адриена был в основном о том, чтобы добавить в Haiku поддержку многоязычности и интернационализации, в форме строчных переводов и форматированной информации, чтобы соответствовать общепринятым стандартам выбранного региона и языка (проще говоря - локаль). Эта информация включает в себя календарь и знаки валют (но не ограничена этим). Аспекты имплементации варьировались так:

* Интеграция компонентов интернационализации для Unicode, также известных как ICU, в Locale Kit операционной системы Haiku.
* Создание управления каталогами, что является главным движком для предоставления строчного перевода.
* Создание правил и утилит для системы сборки, чтобы интегрировать функциональность управления каталогами.
* Создание префлета настроек, который позволил бы пользователю изменять настройки локализации.

Основная часть проекта - управление каталогами - работает как задумано. Управление каталогами отвечает за строчные переводы с одного языка на другой. Другие аспекты, например дата, численные и форматы валют также работают нормально, однако все еще имеют некоторые проблемы. Из-за сроков выхода R1 Alpha1 и общего масштаба проекта, его код разрабатывался в branches/components/gsoc-locale-kit. Недавно этот код был включен в основное дерево, и усовершенствование префлета настройки, а также интегрирование Locale Kit во все необходимые части системы являются задачами, в которых контрибьюторы из сообщества очень сильно пригодились бы.

Брайс Грофф (Bryce Groff): Менеджер Разделов

До того, как Брайс начал работать, DriveSetup имел некоторую функциональность для управления дисками, он уже мог форматировать и инициализировать уже существующие партиции как диски в файловой системе BFS. Тем не менее, способностями к созданию, удалению и другим манипуляциям с разделами он похвастаться не мог. Работа Брайса состояла в завершении изначального проектирования Disk Device API, адд-онов Intel Partition и Extended Partition, а также обновление DriveSetup, чтобы он мог использовать эти адд-оны.

Большинство работы лежит не в пространстве пользователя (userland), а фактически гораздо глубже в API. Работа Брайса уже интегрирована в основное дерево исходников Haiku, в качестве индивидуальных патчей. Однако, некоторые фукнции вроде установки загрузочной записи на базовую партицию отсутствовали. R1 Alpha1 тем не менее поставляется с менеджером разделов, который способен создавать и удалять разделы на жестком диске.

Ма Цзе (Ma Jie): ZeroConf+mDNSResponder

ZeroConf по-существу предоставляет возможности доступа к сетевым ресурсам, таким как расшаренные общие принтеры. Коммуникации в сети такого рода идут через DNS Multicast, который в данном случае обеспечивает mDNSResponder. Вполне известная реализация этой функциональности - Apple Bonjour. Первой задачей проекта было расширить уже существующую в Haiku имплементацию сети, чтобы работа с mDNSResponder стала возможна. Как только этот вопрос был разрешен, продолжилась работа над основной частью проекта:

* Портирование mDNSResponder.
* Реализация нативного API для доступа к сервису.
* Создание нескольких клиентов для использования нового API.

Был имплементирован сервисный браузер, который показывал доступные службы в локальной сети. Также была реализована система оповещения, которая показывала всплывающее сообщение о подключенных и отключенных службах. API же хоть и достаточно функционален, но все еще не является достаточно зрелым. Например, возможности синхронизации еще не до конца реализованы. Это приводит к использованию неудобного асинхронного режима в mDNSResponder. Poorman, простой веб-сервер Haiku, был расширен поддержкой ZeroConf, но пока DNS resolver в Haiku не будет способен использовать доменные имена ZeroConf, функциональность его останется ограниченной. На данный момент, кое-какие патчи Ма Цзе были включены в основное дерево кода Haiku. Остальная часть его работы, при выполнении всех целей проекта, еще не готова для публикации в ее текущем состоянии.

Рагху Нагиредди (Raghu Nagireddy): BFS FUSE
Рагху был еще одним студентом, который участвовал в Haiku Code Drive. Реализация BFS Fuse может предоставить функциональность чтения/записи на разделы BFS для других операционных систем, которые также имеют поддержку FUSE. Как вы можете представить, это бы здорово помогло улучшить положительный образ Haiku, поскольку поддержка такой технологии увеличила бы совместимость BFS с другими ОС, чем в свою очередь повысила бы общий уровень юзабилити и удобства пользования Haiku. В первой половине семестра, Рагху предоставил работающую реализацию BFS FUSE, которая сразу же отправилась в центральный репозиторий Haiku. В теории, любая файловая система, поддерживаемая Haiku, может использовать эту технологию. Однако, на практике только код BFS может быть собран как модуль FS shell. С остальной частью программы дела идут не так хорошо. Дефрагментатор BFS был назначен на следующую фазу разработки. Рагху начал изучать реализацию B+Tree и даже подготовил план-проект. К сожалению, он больше не смог предоставить для него никакого кода.

Обаро Огбо (Obaro Ogbo): CIFS Client
На этапе обзора проекта Обаро выглядел одним из преуспевающих студентов. К большому сожалению, по непредвиденным обстоятельствам он остался без доступа в Интернет, таким образом большая часть проекта так и осталась незавершенной.

Анкур Сетхи (Ankur Sethi): Text Indexing
Анкур был одним из двух студентов, выбранных для участия в Haiku Code Drive, параллельной независимой программе, которая проходила в то же самое время, что и Google Summer of Code и имела похожие цели. Проект Анкура заключался в том, чтобы реализовать полнотекстовую систему индексации, которая походила бы на Spotlight из Mac OS X. Это включает в себя создание index_server для управления индексированием новых и имеющихся файлов. DataTranslators (трансляторы данных) для доступа индексатора к информации особых типов файлов, а также простой GUI для непосредственного поиска информации. Ядро поискового движка было позаимствовано из CLucene, который Анкуром был также портирован. Изначально он планировал использовать OSDrawer в качестве хостинга для своего проекта, но столкнувшись с некоторыми проблемами предпочел Google Code. Текущий статус системы индексирования позволяет производить поиск простого текста. Далее необходимо будет написать дополнительные трансляторы данных, префлет настройки и, в идеале, интегрировать поиск по тексту в стандартную службу поиска "Find" в программе Tracker.

Максим Симон (Maxime Simon): WebKit и нативный браузер
Веб-браузеры на протяжении многих лет были больным вопросом для BeOS и Haiku. Даже с учетом того, что мы используем форк кодовой базы Mozilla 1.8, более известной как Firefox 2 (Bon Echo), многое оставляет желать гораздо лучшего. Родной браузер, использующий движок WebKit отлично пришелся бы ко двору в маленькой и шустрой операционной системе, такой как Haiku; в основном потому, что такое решение будет обладать лучшей поддержкой всепроникающей многопоточности, чем все предшественники. В конце 2007 года ментор Максима, Райан Левенгуд сделал первую попытку портировать WebKit. Несмотря на хорошую функциональность, код быстро утерял синхронизацию с официальным репозиторием WebKit.

Задача Максима была в том, чтобы применить и обновить Haiku-зависимый код в самой последней версии кода WebKit и подготовить свою работу для патчей, багрепортов и добавлений кода в официальный репозиторий WebKit. За это время, разработчики WebKit инициировали процесс предоставления Максиму доступа на запись и добавление кода. В конце проекта остались только две неразрешенные проблемы: прокрутка и просмотр страниц с JavaScript. На фронте нативного браузера было реализовано несколько функций:

* Много-процессовый многопоточный прототип существующего браузера
* Библиотека закладок
* Примитивная, базовая панель инструментов

Последние два пункта спроектированы так, что позволяют другим приложениям их использовать. Большинство патчей уже были приняты официальным репозиторием WebKit и много еще находится в очереди -- надеемся Максим будет добавлять их самостоятельно! Исходный код браузера расположен на http://github.com/leavengood/Haiku-Browser/commits/master.

Пока что репозиторий упоминает его как Haiku Browser, так как официальное название для него пока отсутствует. Теперь, когда Лето Кода завершено, ментор Максима Райан Левенгуд возьмет на себя более активную роль в разработке и усовершенствовании портированного WebKit и продолжит работу над новым родным браузером для Haiku. Ваше участие в этом проекте горячо приветствуется!

Йоханнес Вишерт (Johannes Wischert): Портирование Haiku на ARM
Принимая во внимание небольшой размер и железную нетребовательность операционной системы Haiku, портирование ее на платформу ARM выглядит вполне естественно*. Для помощи в разработке первой целью стала платформа Gumstix Verdex, поскольку она может быть эмулирована в Qemu**. Тем не менее, плата Gumstix Overo с расширителем Tobi должна быть главной целью в этом проекте. Перед началом GSoC, Йоханнес модифицировал утилиты сборки Haiku (toolchain), для поддержки создания ARM-бинарников. Среди главных задач было реализовать модифицированный загрузчик U-Boot, портировать ядро, драйвера для microSD-ридера и последовательного интерфейса (serial port). Цитируем его блог: "Бутлоадер Haiku, которого загружает U-Boot наконец-то может поднять ядро и у нас теперь появилась базовая минимальная поддержка фреймбуфера (framebuffer)". Его код также добавлялся в дерево Haiku как индивидуальные патчи. Франсуа Револь, его ментор, даже опубликовал в списке рассылки haiku-development некоторые инструкции по сборке и тестированию ARM-порта. Теперь, с полноценно выполненными задачами проекта, основа для Haiku на платформе ARM была наконец заложена. Требуется еще много труда, чтобы сделать возможным полноценный порт всех систем Haiku на этой платформе.

В общем и целом это, пока что, было наверное самое лучшее Лето Кода! Наши глубочайшие благодарности отправляются компании Google за предоставление нам такой возможности; членам сообщества, которые пожертвовали свои сбережения в пользу Haiku Code Drive, а также участникам важнейших процессов в сообществе, которые выступили менторами для этих исключительных студентов! Мы умоляем вас помогать новым членам сообщества почувствовать радость от этого благодарного труда и работать с ними сообща для дальнейшего усовершенствования их проектов. Они уже проделали невероятный объем работы в течение всех этих летних дней. И они по праву заслуживают того, чтобы мы сняли перед ними наши шляпы. Отличная работа, ребята!

Опубликовано на сайте Haiku-OS.

---
*Примечание переводчика: На ARM работает чертова туча устройств, начиная с микроматеринок BeagleBoard и подобных, заканчивая смартфонами, переносными устройствами и даже некоторыми нетбуками. А уж если припомнить, что основные системы BeOS уже однажды портировали на ARM для работы на BeIA-девайсах... Короче говоря, ARM нынче чуть ли не в каждой кофеварке и холодильнике :)
**Примечание переводчика 2: А еще неплохо бы портировать VirtualBox, вот как раз для таких гиков, как мы настало бы настоящее земное счастье :).

В заключение перевода приведу цитату из блога Максима Сохацкого:
Те основы вокруг которых строилась BeOS не потеряли актуальности до сих пор:
1. DSP процессинг (то что сейчас SPU в Cell/BE и nVidia CUDA)
2. Многопроцессинг (многоядерность)
3. Эмбеддинг и интернет апплайанс (нам достаточно запустится на нетбуке и запустить браузер).

И в этом есть своя немалая доля правды. Я так думаю.

community, hcd, gsoc, haiku

Previous post Next post
Up