Содержание
Количество человек в команде, необходимой для создания первой версии какого-либо программного обеспечения, может различаться в разы - от одного человека до нескольких тысяч. В зависимости от требований, сложность задач, как технических, так и управленческих, может быть просто огромна. Как описано в Руководстве пользователя Bazaar, выбор “правильных” процессов и использование таких инструментов как Bazaar, может существенно помочь в поддержке соответствующих рабочих циклов.
Но успех программного обеспечения требует больше чем просто хорошую команду - здесь требуется здоровое и активное сообщество. Обычно эта группа намного больше команды, поскольку включает всех заинтересованных в данном программном обеспечении: команду разработки, пользователей, партнеров по подготовке кадров, партнеров по поддержке, сторонних разработчиков и так далее.
Хорошие сообщества хорошо известны в мире открытого исходного кода. Но их полезность намного выше этого: большинство успешных поставщиков коммерческого программного обеспечения достаточно опытны в создании и управлении сообществами, которые растут вокруг их флагманских продуктов.
Как и хорошие команды, хорошие сообщества не появляются просто так. Правильная политика и руководящие принципы имеют основополагающее значение при развитии правильного поведения и здорового отношения между участниками. Для более подробного понимания этой темы можно обратится к основополагающей книге Карла Фогеля (Karl Fogel): Создание программного обеспечения с открытым кодом (Producing Open Source Software).
Развитый набор инструментов также важен для отслеживания и управления информацией и рабочими процессами в сообществе. Такие инструменты называются совместными средами разработки (Collaborative Development Environments (CDEs)). Обычно эти инструменты работают на базе Web’а и управляют такими вещами как анонсы, задачи и ошибки, вопросы и ответы, ресурсы для скачивания, документы и исходный код. Вот несколько примеров совместных сред разработки: Launchpad, SourceForge, java.net и SAP Community Network.
Многие успешные продукты имеют большое число зависящих от них проектов. Другими словами, с успехом проекта появляется новая задача: общение с другими сообществами и понимание того как ваши изменения скажутся на них. Это наиболее очевидно для таких проектов как:
В равной степени это относится и к популярным приложениям для которых могут создаваться дополнения, например, Firefox, Thunderbird, OpenOffice.org, Drupal, Wordpress, Joomla и др.
Здесь необходимы инструменты, которые помогают сообществам работать вместе над отслеживанием и управлением задачами и исправлениями между сообществами. Такие инструменты помогают людям по обе стороны:
Посредники играют важную роль соединяя точки и создавая коммуникацию между верхней и нижней точками линии. Во многих случаях, они могут так же исправить проблему для конечного пользователя, выпустив заплатку и передав рекомендуемое исправление основной команде разработчиков. Отслеживание всего этого в течении продолжительного времени - задача не из легких.
Кроме спонсорства разработки Ubuntu и Bazaar, Canonical так же предоставляет Launchpad, https://launchpad.net, как бесплатный сервис для сообществ с открытым исходным кодом. Launchpad является одной из самых интересных сред совместной разработки по следующим причинам:
Иными словами, Launchpad был разработан чтобы помочь росту вашего сообщества и снизить трения при работе как внутри сообщества, так и между сообществами. В конечном счете, это означает, что тратится меньше времени на рутинные задачи и больше на интересные разработки.
Это руководство рассматривает как Bazaar и Launchpad могут быть использованы вместе и дополнять друг друга. Важно помнить о том, что:
И все же, по замыслу, их сумма больше чем каждый из инструментов по отдельности.
Хотя использование распределённой системы контроля версий даёт много преимуществ, в то же время исчезает всезнающий центральный сервер, который знает обо всех доступных ветках. Действительно, в распределённой среде интересующие ветки могут буквально существовать в сотнях мест во всему Интернету (или внутри Интранета).
Launchpad заполняет этот пробел, предоставляя реестр веток.
Ветки могут быть загружены на Launchpad или просто зарегистрированы как доступные из внешних источников. Веткам так же можно назначать статусы, такие как Новая, В разработке, Готовая или Отмененная.
Заметка: Внешние ветки могут даже располагаться в старых системах контроля версий, таких как CVS и Subversion. Код из этих систем будет периодически сканироваться и преобразовываться в ветки Bazaar. Конечно же, для максимальной точности, предпочтительнее чтобы внешние ветки были в формате Bazaar.
Для веток можно просматривать их список, фильтровать и сортировать по множеству атрибутов, включая Имя, Регистратора, Автора, Состояние, Возраст и время последней фиксации. Также работает просмотр веток, что легко позволяет увидеть следующее:
Launchpad отслеживает тысячи проектов с открытым исходным кодом и вне зависимости от того хранится этот код в Bazaar, CVS или Subversion пользователи Bazaar легко могут получить этот код так:
bzr branch lp:имя-проекта
где имя-проекта - это идентификатор проекта на Launchpad. Вот некоторые примеры:
bzr branch lp:inkscape
bzr branch lp:amarok
bzr branch lp:python
bzr branch lp:rails
bzr branch lp:java-gnome
После этого вы можете просматривать код локально с помощью вашего любимого редактора или среды разработки и при желании изменять его.
Если для проекта зарегистрировано несколько выпусков (например, выпуск разработки в выпуск поддержки), тогда свежий код для заданного выпуска можно получить используя команду:
bzr branch lp:имя-проекта/выпуск
Исправив эту надоедливую ошибку или добавив новую крутую возможность, о которой вы давно мечтали, пришло время удивить ваших друзей и сделать мир лучше, сделав ваш код доступным для других. Как уже объяснялось раньше, Launchpad это бесплатная служба для размещения веток Bazaar и поэтому вы можете опубликовать свою ветку на нём, так чтобы другие смогли получить доступ к вашему коду. Например, предположим что вы уже участник соответствующей команды, авторизуйтесь на Launchpad таким образом:
bzr launchpad-login пользователь
где пользователь - это ваш идентификатор пользователя Launchpad. После этого вы можете залить ваши изменения на ветку команды вот так:
bzr push lp:~имя-команды/имя-проекта/имя-ветки
Теперь другие могут скачать ваш код таким образом:
bzr branch lp:~имя-команды/имя-проекта/имя-ветки
Даже если вы не член какой-либо команды Launchpad можно использовать для публикации ваших изменений. В этом случае просто создайте личную ветку:
bzr push lp:~пользователь/имя-проекта/имя-ветки
Другие затем могут скачать ваш код таким образом:
bzr branch lp:~пользователь/имя-проекта/имя-ветки
Заметка: даже в случае публикации личной ветки будет вежливо уведомить основных разработчиков о вашей ветке, чтобы они смогли взять ваши изменения, если они подходят и для других пользователей и соответствуют стандартам качества проекта.
После регистрации ветки вы можете связать её с ошибкой, чтобы заинтересованные в ее исправлении люди могли отслеживать изменения и скачать исправление, когда оно станет доступно.
Чтобы сделать это выполните следующие шаги:
При желании вы также можете добавить произвольный комментарий о связи между ошибкой и веткой.
Bazaar и Launchpad способны работать вместе, чтобы уменьшить ваши заботы по управлению состоянием ветки. Когда вы выполняете фиксацию с помощью Bazaar, используйте параметр –fixes:
bzr commit --fixes lp:1234 -m "..."
где 1234 — это идентификатор ошибки. Эти данные изменят State (состояние отношения ветки к ошибке) на Fix Available (Исправление доступно). Если одна единственная фиксация исправляет несколько ошибок, то параметр –fixes может быть указан несколько раз.
Самое интересное здесь заключается в том, что вам не обязательно иметь доступ к Launchpad в момент фиксации. При использовании --fixes идентификатор ошибки сохраняется в виде специальных метаданных, которые Launchpad увидит при очередной публикации ваших изменений или когда ваша публичная ветка будет просканирована в очередной раз.
Заметка: Launchpad не будет закрывать сообщение об ошибке только потому, что существует ветка с исправлением. Для этого есть несколько причин. Во-первых, обычно исправления из вашей ветки должны быть объединены с главной веткой разработки, иначе большинство команд не будет считать ошибку исправленной. Во-вторых, многие команды придерживаются отдельного процесса для подтверждения исправлений ошибок, в добавление к утверждению разработчика об этом.
Как поясняется далее, функция отслеживания объединений веток на Launchpad в настоящее время находится в стадии разработки. Как только эта функция будет готова более подходящим поведением станет автоматическое изменение состояния ошибки на Fix Committed (исправление зафиксировано).
После регистрации ветки вы можете связать её с планом, чтобы люди, заинтересованные в этом плане могли отслеживать и тестировать новые возможности по мере разработки.
Чтобы это сделать, выполните следующие шаги:
При желании вы также можете добавить произвольный комментарий об отношении ветки к плану.
Когда разработка на ветке закончена и она опубликована, сообщества обычно проходят через строгий процесс, прежде чем изменения будут интегрированы в основной продукт и предоставлены конечным пользователям. Вот некоторые из возможных шагов:
Этот раздел дает обзор возможностей Launchpad, которые помогают получить высокое качество кода в конечном продукте. Хорошая интеграция с Bazaar является основой для того, чтобы это прошло гладко.
Примечание: в тех случаях, когда указано, некоторые из следующих возможностей всё ещё находятся в стадии разработки. Если одна или несколько таких возможностей вам интересны, рассмотрите возможность вступления в команду бета-тестирования Launchpad по следующей ссылке: https://help.launchpad.net/JoiningLaunchpadBetaTesters. В этом случае, вы сможете получить предварительный доступ к возможностям и сможете дать отзыв разработчиками до широкого внедрения.
После перехода к ветке в Launchpad, одно из доступных действий - Propose for merging (Предложить объединение). Это действие позволяет вам указать, с какой веткой этот код мог бы быть объединен.
Отслеживание знаний о том, какие ветки предлагается объединить в главную, помогает менеджерам выпусков держать на виду то, что ещё должно быть завершено, либо может быть завершено, до даты выпуска. Используя эту информацию, они могут убедиться, что ветки объединены после завершения их необходимых обзоров. В простом случае, менеджер выпуска может объединить ветки вручную. В более сложных ситуациях, объединение может быть сделано роботом (таким, как PQM) автоматически, когда ветки перейдут в правильное состояние (например, Review completed (Обзор завершен)).
Некоторые функции в Launchpad все еще в стадии разработки, например отслеживание состояний, обсуждений и результатов обзора кода. Ожидается, что эти функции будут интегрированы с предложениями по объединению веток и просмотром веток.
PPAs помогают разработчикам и командам разработки выдать определенный выпуск на руки пользователям для раннего тестирования и получения отзывов. Другими словами, PPA позволяет разработчику создать сообщество тестеров, заинтересованных в их изменениях. Тестирующее сообщество может установить пакеты, запускать их в течение тестового периода, а затем аккуратно удалить их из системы.
Дальнейшую информацию можно найти по адресу https://help.launchpad.net/PPAQuickStart
Модуль переводов в Launchpad сделан для того чтобы любой желающий мог легко присоединиться к переводу приложений на известные ему языки. Переводчики защищены от подробностей низкого уровня.
Launchpad отслеживает переводы для каждой основной версии проекта по отдельности, что позволяет переводчикам продолжать совершенствовать перевод ваших стабильных релизов, пока другие могут начать работу над новыми версиями, которые все ещё находятся в разработке. Скорость перевода увеличивается из-за совместного использования ресурсов между проектами. Автоматические подсказки, из библиотеки в 750 тысяч переведенных строк, а также сообщество из 19 тысяч зарегистрированных переводчиков может радикально сократить время, необходимое для локализации вашего проекта на многие языки.
Сообщества к которым мы присоединяемся, будь то в реальной жизни, или онлайн, говорят многое о нас. Обратная сторона этого заключается в инструментах которые вы выбираете для сообщества - в частности, CDE и инструмент контроля версий. Это может иметь большое значение для тех кто пожелает присоединиться, и насколько легко они смогут помочь.
Сами по себе, Launchpad и Bazaar являются очень полезными инструментами. Вместе они могут:
В частности, Launchpad является сервисом хранения свободного кода для ваших веток Bazaar. Ветки можно просматривать онлайн, их можно связать с ошибками и планами. А их статус по отношению к ошибке может автоматически управляться упоминанием об ошибке при сохранении в Bazaar. Дальнейшая интеграция находится в стадии развития с целью оптимизации процесса от большой идеи до работающего кода в руках конечных пользователей.
Если у вас есть отзывы или пожелания о том, как лучше интегрировать Bazaar и Launchpad, пожалуйста связывайтесь с нами через список рассылки bazaar@lists.canonical.com.
Хотя Launchpad разработан как бесплатный сервис для поддержки проектов с открытыми исходными текстами, Canonical может сделать его доступным и для разработчиков коммерческого программного обеспечения, в зависимости от их требований. Мы с удовольствием выслушаем ваше мнение, если вы считаете, что Launchpad был бы полезен для управления вашим сообществом, будь оно открытое или нет.