LXF135:Launchpad
|
|
|
Содержание |
Знакомство с Launchpad
- Джоно Бэкон представляет Launchpad, кузницу открытого ПО.
В мире открытого ПО имеются тысячи приложений на все случаи жизни. Чтобы проекты столь разных программ, создаваемых многочисленными добровольцами, успешно развивались, им нужны место для хранения исходного кода, система регистрации ошибок, методика перевода на разные языки, организация поддержки пользователей — и, наконец, процедура планирования и выбора новых функций.
К счастью, вариантов организации коллективного труда хватает. Есть среди них сложные, типа SourceForge, есть и простые – например, Trac. Но есть такое решение, в котором богатство возможностей сочетается с простотой – система Launchpad, родившаяся как попытка упорядочить рабочих процесс «постройки» дистрибутива Ubuntu.
Разработка проектов здесь обеспечивается следующими позициями:
- Отслеживание ошибок Место для регистрации, «отбора», исправления и обработки ошибок.
- Хранение кода Место для хранения кода и систематизации многочисленных «ответвлений».
- Переводы Место, где не-программисты переводят текст на иностранные языки.
- Сборка пакетов Место для сборки пакетов для Ubuntu и выдачи их пользователям.
- Учёт спецификаций Место планирования функций, добавляемых в проект.
- Поддержка сообщества Место, где задают вопросы и отвечают на них.
Сейчас мы рассмотрим некоторые из этих пунктов подробно и узнаем, как начать работу в системе Launchpad.
Давайте начнём с получения учётной записи. Запустите web-браузер, перейдите на сайт http://www.launchpad.net и нажмите ссылку Log In/Register в правом верхнем углу страницы. Следуя инструкциям, создайте учётную запись и вернитесь на Launchpad, уже под своим именем. Теперь посмотрим, из чего состоит и как работает базовый интерфейс.
Launchpad поделен между множеством проектов; обычно каждый посвящён одному программному продукту. Например, зайдите на http://www.launchpad.net/lernid: этот проект я недавно начал разрабатывать. Lernid – средство организации электронного обучения по каналам IRC. Мы уже давно ведём недели обучения для сообщества Ubuntu, и Lernid упрощает доступ к занятиям, а также служит для демонстрации презентаций и web-страниц в реальном времени (LXF133). Это хороший пример конъюнктурного проекта. Он создан, чтобы удовлетворить назревшую потребность, и Launchpad помог многим добровольцам вовремя «подставить плечо».
Страница Launchpad делится на несколько ключевых секторов. В верхней части приведены основные рубрики.
- Overview [Обзор] Это главная страница проекта с общими сведениями.
- Code [Код] Здесь хранится код.
- Bugs [Ошибки] Здесь регистрируются недостатки и дефекты.
- Blueprints [Намётки] Раздел для спецификаций и проектирования новых функций.
- Translations [Переводы] Система перевода текстовых строк.
- Answers [Ответы] Поддержка конечных пользователей.
Все эти разделы предназначены для разных групп добровольных помощников.
Получение кода
Это одна из важнейших функций Launchpad: здесь можно найти исходные коды множества приложений. Всё это можно загрузить и изучить, а потом придумать собственные модификации и дополнения. Для программиста Launchpad – превосходный полигон для исследования ПО и возможность внести собственный вклад в разработку множества приложений.
Launchpad тесно связан с системой контроля версий Bazaar, что обеспечивает беспрепятственную загрузку и выгрузку кода, а также средства контроля и ревизии модификаций. Чтобы использовать эти возможности, необходимо установить систему Bazaar (скорее всего, в вашем дистрибутиве она уже есть).
Например, чтобы загрузить исходный код Lernid, перейдите на страницу проекта http://www.launchpad.net/lernid и нажмите кнопку Code. Вы увидите массу ответвлений: в любом проекте их немало. Но люди в основном интересуются «главной ветвью» – стволом (trunk).
Ствол – основа проекта. Это официальное направление, отражающее текущее состояние разработки. В ответвлениях могут иметься какие-то свои функции, и многие из них впослед ствии снова вливаются в ствол.
Загрузить код ствола просто: достаточно скомандовать
bzr branch lp:lernid
Если вам нужен код другого проекта, просто измените название после lp:. Если хотите загрузить другое ответвление, щелкните по нему, и Launchpad подскажет команду bzr для загрузки этой ветви.
Количество проектов превышает 17 000 – есть где разгуляться! Мало того, все пакеты Ubuntu тоже хранятся на Launchpad. Например, чтобы загрузить код приложения для микроблогов Gwibber, которое войдёт в новый Ubuntu 10.10 Maverick Meerkat [Мигрирующий Мангуст], просто наберите:
bzr branch lp:ubuntu/maverick/gwibber
Как видите, принять участие в разработке Ubuntu совсем не сложно: загрузка кода и управление им осуществляются из единого центра.
Внесение изменений
Загружая код проекта, вы, вероятно, хотите улучшить его добавкой какой-либо функции или исправлением ошибки. Вернуть исправленный проект хранителям несложно. Это делается в три этапа:
- Фиксация Сохраните изменения на локальном компьютере.
- Возврат Выгрузите своё ответвление на Launchpad.
- Предложение Предложите автору проекта присоединить исправленное ответвление.
Вернёмся к нашему примеру с Lernid: представьте, что вы улучшили проект редактированием кода или составлением документации. На вашем компьютере изменения работают, и вы решили зафиксировать их в системе Bazaar – тогда сообщите Bazaar о необходимости сохранить изменения, вот так:
bzr commit
Система предложит составить сопроводительное сообщение с описанием изменений. Теперь можно выгружать изменённые данные на Launchpad. Наберите команду:
bzr push lp:~<имя_пользователя>/<проект>/<имя_ветви>
Например, для меня, пользователя с именем jonobacon, выгрузка ответвления на Lernid будет выглядеть так:
bzr push lp:~jonobacon/lernid/my-new-branch
Перейдя на http://code.launchpad.net/lernid для просмотра кода, я обнаружу и свой вклад (раз я указал lernid как адрес для push).
Теперь каждый может загрузить обновлённый код и проверить, всё ли действует как надо. Если я захочу предложить главным разработчикам Lernid включить мои изменения в «ствол», то начну с нажатия кнопки Propose For Merging [Предложить к слиянию]. Затем, добавив краткое описание своего ответвления, нажму кнопку Propose Merge [Предложить слияние]. После этого разработчики смогут проверить мою работу.
Регистрация ошибок
Другая важная функция Launchpad – система отслеживания ошибок [bugs], прозванная разработчиками «Malone» (помните Bugsy Malone? [герой популярного детского мюзикла, – прим. ред.]). Разрабатывать такие инструменты архитрудно, но команда Launchpad оказалась на высоте: система удобна как для пользователей (нетрудно составить сообщение об ошибке), так и для программистов (удобно отслеживать и систематизировать ошибки).
Процесс регистрации ошибок прост. Во-первых, перейдите к странице проекта на Launchpad и нажмите кнопку Bugs [Ошибки] вверху. Затем нажмите ссылку Report A Bug [Сообщить об ошибке] в правом верхнем углу.
У вас запросят аннотацию – однострочное описание ошибки. Например: “Gwibber crashes when connecting [Gwibber падает при подключении]” или “Evolution is not displaying messages in my Inbox [Evolution не отображает сообщения в папке Входящие]”. Введите описание и нажмите кнопку Next [Далее].
На следующем экране Launchpad попробует найти уже имеющиеся сообщения об аналогичной ошибке и выведет результаты поиска. Нажатие стрелки рядом с описанием ошибки покажет детальные сведения о ней. Если «ваша» ошибка уже зарегистрирована, не отправляйте сообщение – нажмите кнопку “Yes, this is the bug I’m trying to report [Да, об этой ошибке я и говорю]”. Система Launchpad отметит, что такая ошибка обнаружена не однажды. Это поднимет «накал» ошибки, указывающий разработчикам на наиболее частые проблемы.
Не найдя «своей» ошибки среди перечисленных, нажмите кнопку “No, I need to report a new bug [Нет, я хочу сообщить о новой ошибке]”. На следующем экране нужно будет ввести подробное описание ошибки. Понадобятся сведения о компьютере, версиях ПО и шагах, вызвавших ошибку. Указав все необходимое, отправьте сообщение в базу данных нажатием кнопки Submit Bug Report [Отправить сообщение об ошибке].
Отбор ошибок
Ваше сообщение присоединится к череде отчётов, документирующих всяческие проблемы с проектами на Launchpad. Всё это задумано как площадка для обсуждения, где выявляются детальные сведения о проблемах, чтобы в итоге снабдить программиста информацией для поиска решения. Процесс сортировки ошибок на основании полученной информации называется «отбором» [triaging].
Работа над отбором ошибок – весьма ценный вклад в открытое ПО. Просмотр отчётов, расстановка приоритетов, тестирование приложений для выявления недостатков, составление дополнительных комментариев – всё это очень помогает приблизиться к решению проблемы. Рассмотрим основные органы «управления отбором», доступные в Launchpad. Отправляя отчёт об ошибке, вы увидите окно с тремя ключевыми зонами. Вверху, в жёлтой таблице, приведены некоторые сведения о состоянии и важности ошибки; справа перечислены псевдонимы пользователей, подписавшихся на новости об этой ошибке; основная частьокна отводится комментариям, формирующим дискуссию о поисках решения.
Возьмём жёлтую таблицу вверху. Здесь есть несколько полей, значение которых можно изменить с помощью жёлтых кнопок по соседству. Нам интересны три поля; рассмотрим их подробнее. Первое поле – Status [Состояние], отражающее текущее состояние ошибки и ее исправления. Вариантов много.
- New [Новое] Отчёт об ошибке поступил на сайт, но разработчик ещё не дал ему оценку.
- Incomplete [Неполное] Отчёт об ошибке, о которой разработчик запросил дополнительные сведения и ожидает их.
- Invalid [Необоснованное] Сообщение об ошибке не подтвердилось (иногда пользователи поднимают ложную тревогу).
- Won’t Fix [Не принято] Ошибка, которую разработчик не считает нужным исправлять (например, пользователь расценил как ошибочное решение изменить цвет кнопки).
- Confirmed [Подтверждено] Разработчик признал сообщение достойным внимания.
- Triaged [Отобрано] По сообщению собрана вся информация, необходимая для исправления (например, удалось найти причину неполадки).
- In Progress [В работе] Разработчик взялся устранить ошибку и занимается этим.
- Fix Committed [Исправлено] Исправление ошибки завершено и выгружено в главную кодовую базу.
- Fix Released [Выдано] Для ошибок, исправление которых выдано конечным пользователям (чаще всего в очередной версии ПО).
Следующее поле – Importance [Важность]: это весьма важная часть сообщения об ошибке, и работать с ним следует очень внимательно. Значение этого поля указывает на опасность ошибки. Варианты выбора такие:
- Critical [Критично] Серьёзная ошибка, вызывающая существенное снижение производительности или связанная с риском потери данных.
- High [Высокий уровень] Разрушительная ошибка.
- Medium [Средний уровень] Ошибка, вызывающая значительные неудобства в работе с ПО.
- Low [Низкий уровень] Ошибка всерьёз не влияет на общую работу приложения.
- Wishlist [Пожелания] Многие сообщения об ошибках можносчитать запросом на новые функции – и классифицировать соответственно.
- Undecided [Неизвестно] Выберите этот вариант, если ни один из предыдущих не подошёл.
Наконец, последнее важное поле – Assigned To [Поручено]: здесь приводится имя разработчика, который взялся за поиск решения.
Под жёлтой таблицей отведено место для переговоров об ошибке. К участию приглашаются все, обсуждение отображается в хронологическом порядке. Полезный совет: здесь не нужно помещать комментарии типа «эту ошибку я тоже видел». Для этого в верхней части окна есть ссылка Does This Bug Affect You? [Влияет ли эта ошибка на вас?] – нажмите жёлтую кнопку справа от надписи, и все поймут, что да, влияет.
Наконец, если вас особо интересует отчёт о конкретной ошибке и вы хотите следить за изменением его статуса, нажмите кнопку Subscribe [Подписаться] на правой панели – и будете получать электронные сообщения об обновлениях и изменениях.
Переводы
И последний компонент, который мы рассмотрим – секция переводов, известная как Rosetta. Сюда можно импортировать любой проект, использующий стандартный каркас gettext, и Rosetta обеспечит простой интерфейс для любого желающего заняться переводом. Приятно, что для участия в проекте переводчику незачем изучать программирование: достаточно уметь переводить с английского.
Сообщество переводчиков на Launchpad весьма внушительно. Я выгрузил на Launchpad готовое приложение, подал заявку на перевод, и уже через час были готовы переводы на 10 языков.
Чтобы принять участие, найдите проект, где включены переводы (например, Ubuntu), и нажмите кнопку Translations [Переводы]. Затем нажмите кнопку Choose Preferred Languages [Выбрать языки] и отметьте галочками языки, на которые хотите переводить. Вернувшись на главную страницу переводов, перейдите к отмеченному языку и в первом комбинированном окне выберите Untranslated Items [Непереведённые сегменты]. Теперь введите перевод в поле New Translation [Новый перевод]. Добавляя перевод, не забывайте сохранять добавочные знаки и форматирование.
В завершение
Launchpad – мощная среда разработки, и наш обзор лишь задел верхушку айсберга. За каждым из рассмотренных нами основных компонентов скрывается богатый набор функций и возможностей для коллективной разработки отличного ПО. В продолжение нашего путешествия рекомендую зайти на страницу https://edge.launchpad.net/+tour: узнаете много нового. Удачи, и не забывайте извещать нас о своих достижениях!
Рабочий стол как IDE
Кроме мощного web-интерфейса, в Launchpad предусмотрена библиотека Python, с помощью которой создано несколько других интерфейсов (для того же Launchpad). Один из наиболее интересных – Ground Control, написанный Мартинсом Оуэнсом [Martins Owens] – доступен по адресу http://ground-control.org. Ground Control обеспечивает интеграцию Launchpad и Bazaar в файловый менеджер Nautilus (Gnome).
Ground Control добавляет несколько кнопок к стандартному окну Nautilus, что позволяет просматривать ответвления, выгружать изменения, исправлять ошибки и выполнять другие действия – не притрагиваясь к командной строке. Изначально Ground Control был создан для содействия группе разработки нетехнической документации Ubuntu, а затем, в сочетании с web-интерфейсом Launchpad, перерос в мощное средство коллективной разработки проектов.
Ещё о Launchpad:
Намётки
Большинство новых функций проекта создаётся коллективно. Соответствующие записи ведутся в виде спецификаций, понятных всем членам сообщества: это необходимо для «сверки часов» в процессе разработки. Команда Launchpad реализовала эту функцию в виде особой рубрики, «Намётки» [Blueprints].
«Намётки» – это место для документирования новой функции, выработки плана её реализации, привязки к общей спецификации, определения важности и приоритета; аналогично процессу отслеживания ошибок. Кроме того, рубрика намёток служит информационной панелью, на которой записываются изменения статуса и обновления. Подписавшись на эту рубрику, пользователи получают электронные сообщения о происходящих событиях.
Ответы
Особо популярна функция Launchpad под названием «Ответы». Здесь конечные пользователи задают вопросы, а члены сообщества кооперируются для ответов на них. Ведётся слежение за тем, чтобы ни один вопрос не остался без ответа; есть возможность добавлять пары «вопрос–ответ» к списку FAQ.
Ответы – верный способ расширить круг пользователей проекта, и каждый удачный ответ повышает ценность этого мощного ресурса поддержки.