1
================================
2
Использование Bazaar с Launchpad
3
================================
12
Сообщества отличаются от команд
13
-------------------------------
15
Количество человек в команде, необходимой для создания первой версии
16
какого-либо программного обеспечения, может различаться в разы - от одного
17
человека до нескольких тысяч. В зависимости от требований, сложность задач, как
18
технических, так и управленческих, может быть просто огромна. Как описано в
19
Руководстве пользователя Bazaar, выбор "правильных" процессов и использование
20
таких инструментов как Bazaar, может существенно помочь в поддержке
21
соответствующих рабочих циклов.
23
Но успех программного обеспечения требует больше чем просто хорошую команду -
24
здесь требуется здоровое и активное *сообщество*. Обычно эта группа намного
25
больше команды, поскольку включает всех заинтересованных в данном программном
26
обеспечении: команду разработки, пользователей, партнеров по подготовке
27
кадров, партнеров по поддержке, сторонних разработчиков и так далее.
29
Хорошие сообщества хорошо известны в мире открытого исходного кода. Но их
30
полезность намного выше этого: большинство успешных поставщиков коммерческого
31
программного обеспечения достаточно опытны в создании и управлении
32
сообществами, которые растут вокруг их флагманских продуктов.
34
Как и хорошие команды, хорошие сообщества не появляются просто так. Правильная
35
политика и руководящие принципы имеют основополагающее значение при развитии
36
правильного поведения и здорового отношения между участниками. Для более
37
подробного понимания этой темы можно обратится к основополагающей книге Карла
38
Фогеля (Karl Fogel): `Создание программного обеспечения с открытым кодом
39
(Producing Open Source Software) <http://www.producingoss.com/>`_.
42
Потребность в совместных средах разработки
43
------------------------------------------
45
Развитый набор инструментов также важен для отслеживания и управления
46
информацией и рабочими процессами в сообществе. Такие инструменты называются
47
совместными средами разработки (Collaborative Development Environments
48
(CDEs)). Обычно эти инструменты работают на базе Web'а и управляют такими
49
вещами как анонсы, задачи и ошибки, вопросы и ответы, ресурсы для скачивания,
50
документы и исходный код. Вот несколько примеров совместных сред разработки:
51
`Launchpad <https://launchpad.net>`_,
52
`SourceForge <http://sourceforge.net>`_,
53
`java.net <http://java.net>`_ и
54
`SAP Community Network <https://www.sdn.sap.com/irj/sdn>`_.
57
Помощь сообществам в работе с зависимыми от них сообществами
58
------------------------------------------------------------
60
Многие успешные продукты имеют большое число зависящих от них проектов.
61
Другими словами, с успехом проекта появляется новая задача: общение с другими
62
сообществами и понимание того как ваши изменения скажутся на них. Это наиболее
63
очевидно для таких проектов как:
65
* языков программирования, например, Python, PHP, Ruby, Java, Perl и др.
66
* компиляторов, например, gcc, JDK и др.
67
* библиотек, например, zlib, openssl и др.
68
* каркасов, например, Zope, Ruby on Rails, Spring и др.
70
В равной степени это относится и к популярным приложениям для которых могут
71
создаваться дополнения, например, Firefox, Thunderbird, OpenOffice.org,
72
Drupal, Wordpress, Joomla и др.
74
Здесь необходимы инструменты, которые помогают сообществам работать вместе над
75
отслеживанием и управлением задачами и исправлениями между сообществами. Такие
76
инструменты помогают людям по обе стороны:
78
* пользователи могут сообщить о проблемах своими словами, например, построение
79
изображения типа X не работает в приложении Y под операционной системой Z.
81
* разработчики могут лучше оценить реакцию на сделанное изменение или
82
исправление, например, сделает ли исправление этой ошибки в графической
83
библиотеки счастливее пользователей этих 5-и приложений под этими 10-ю
84
операционными системами.
86
Посредники играют важную роль *соединяя точки* и создавая коммуникацию между
87
верхней и нижней точками линии. Во многих случаях, они могут так же исправить
88
проблему для конечного пользователя, выпустив заплатку и передав рекомендуемое
89
исправление основной команде разработчиков. Отслеживание всего этого в течении
90
продолжительного времени - задача не из легких.
92
Launchpad: Больше разработки, меньше трений
93
-------------------------------------------
95
Кроме спонсорства разработки `Ubuntu <http://www.ubuntu.com>`_ и `Bazaar
96
<http://bazaar.canonical.com>`_, Canonical так же предоставляет Launchpad,
97
https://launchpad.net, как бесплатный сервис для сообществ с открытым исходным
98
кодом. Launchpad является одной из самых интересных сред совместной разработки
99
по следующим причинам:
101
* он создает связь между многими отслеживаемыми сущностями, например, ветки
102
исходного кода могут быть связаны с исправлением ошибок
104
* кроме управления накопленными знаниями, также предоставляется планирование и
105
поддержка будущего разработки через такие возможности как отслеживание
106
направления развития, контрольные точки и планы развития
108
* предоставляются инструменты для перевода и сборки пакетов, что снижает
109
барьер для переводчиков и тестеров пожелавших присоединиться к вашему
112
* служит связующим звеном между различными сообществами для совместной работы
113
над связанными задачами и направлениями развития.
115
Иными словами, Launchpad был разработан чтобы помочь росту вашего сообщества и
116
снизить трения при работе как *внутри* сообщества, так и *между* сообществами.
117
В конечном счете, это означает, что тратится меньше времени на рутинные задачи
118
и больше на интересные разработки.
121
Bazaar: клиент системы контроля версий для Launchpad
122
----------------------------------------------------
124
Это руководство рассматривает как Bazaar и Launchpad могут быть использованы
125
вместе и дополнять друг друга. Важно помнить о том, что:
127
1. Bazaar можно использовать без Launchpad
128
2. Launchpad можно использовать без Bazaar.
130
И все же, по замыслу, их сумма больше чем каждый из инструментов по
134
Поиск и просмотр веток с помощью Launchpad
135
==========================================
137
Поиск доступных веток
138
---------------------
140
Хотя использование распределённой системы контроля версий даёт много
141
преимуществ, в то же время исчезает всезнающий центральный сервер, который
142
знает обо всех доступных ветках. Действительно, в распределённой среде
143
интересующие ветки могут буквально существовать в сотнях мест во всему
144
Интернету (или внутри Интранета).
146
Launchpad заполняет этот пробел, предоставляя реестр веток.
152
Ветки могут быть загружены на Launchpad или просто зарегистрированы как
153
доступные из внешних источников. Веткам так же можно назначать статусы, такие
154
как *Новая*, *В разработке*, *Готовая* или *Отмененная*.
156
Заметка: Внешние ветки могут даже располагаться в старых системах контроля
157
версий, таких как CVS и Subversion. Код из этих систем будет периодически
158
сканироваться и преобразовываться в ветки Bazaar. Конечно же, для максимальной
159
точности, предпочтительнее чтобы внешние ветки были в формате Bazaar.
165
Для веток можно просматривать их список, фильтровать и сортировать по
166
множеству атрибутов, включая Имя, Регистратора, Автора, Состояние, Возраст и
167
время последней фиксации. Также работает просмотр веток, что легко позволяет
170
* откуда можно скачать ветку
171
* как залить изменения
172
* недавние фиксации и изменения, сделанные каждым разработчиком
173
* исходный код отдельных файлов для указанной ревизии.
176
Доступ к коду в Launchpad с помощью Bazaar
177
==========================================
179
Получение кода для проекта с открытым исходным кодом
180
----------------------------------------------------
182
Launchpad отслеживает тысячи проектов с открытым исходным кодом и вне
183
зависимости от того хранится этот код в Bazaar, CVS или Subversion
184
пользователи Bazaar легко могут получить этот код так::
186
bzr branch lp:имя-проекта
188
где `имя-проекта` - это идентификатор проекта на Launchpad. Вот некоторые
191
bzr branch lp:inkscape
195
bzr branch lp:java-gnome
197
После этого вы можете просматривать код локально с помощью вашего любимого
198
редактора или среды разработки и при желании изменять его.
200
Если для проекта зарегистрировано несколько выпусков (например, выпуск
201
разработки в выпуск поддержки), тогда свежий код для заданного выпуска можно
202
получить используя команду::
204
bzr branch lp:имя-проекта/выпуск
206
Публикация ваших изменений
207
--------------------------
209
Исправив эту надоедливую ошибку или добавив новую крутую возможность, о
210
которой вы давно мечтали, пришло время удивить ваших друзей и сделать мир
211
лучше, сделав ваш код доступным для других. Как уже объяснялось раньше,
212
Launchpad это бесплатная служба для размещения веток Bazaar и поэтому вы
213
можете опубликовать свою ветку на нём, так чтобы другие смогли получить доступ
214
к вашему коду. Например, предположим что вы уже участник соответствующей
215
команды, авторизуйтесь на Launchpad таким образом::
217
bzr launchpad-login пользователь
219
где `пользователь` - это ваш идентификатор пользователя Launchpad. После этого
220
вы можете залить ваши изменения на ветку команды вот так::
222
bzr push lp:~имя-команды/имя-проекта/имя-ветки
224
Теперь другие могут скачать ваш код таким образом::
226
bzr branch lp:~имя-команды/имя-проекта/имя-ветки
232
Даже если вы не член какой-либо команды Launchpad можно использовать для
233
публикации ваших изменений. В этом случае просто создайте личную ветку::
235
bzr push lp:~пользователь/имя-проекта/имя-ветки
237
Другие затем могут скачать ваш код таким образом::
239
bzr branch lp:~пользователь/имя-проекта/имя-ветки
241
Заметка: даже в случае публикации личной ветки будет вежливо уведомить
242
основных разработчиков о вашей ветке, чтобы они смогли взять ваши изменения,
243
если они подходят и для других пользователей и соответствуют стандартам
247
Связывание веток в Launchpad
248
============================
250
Привязка ветки к сообщению об ошибке
251
------------------------------------
253
После регистрации ветки вы можете связать её с ошибкой, чтобы заинтересованные
254
в ее исправлении люди могли отслеживать изменения и скачать исправление, когда
257
Чтобы сделать это выполните следующие шаги:
259
1. Перейдите к странице с нужной ошибкой.
261
2. Выберите `Add branch` (Добавить ветку) в разделе `Actions` (Действия).
265
4. При желании вы можете изменить состояние (State) связи. По умолчанию
266
состояние будет *Fix In Progress* (Работа над исправлением), но вы можете
267
установить другое состояние, например *Fix Available* (Исправление
268
доступно), если ветка уже содержит исправление.
270
При желании вы также можете добавить произвольный комментарий о связи между
274
Изменение состояния ветки в Launchpad во время фиксации в Bazaar
275
----------------------------------------------------------------
277
Bazaar и Launchpad способны работать вместе, чтобы уменьшить ваши заботы по
278
управлению состоянием ветки. Когда вы выполняете фиксацию с помощью Bazaar,
279
используйте параметр --fixes::
281
bzr commit --fixes lp:1234 -m "..."
283
где 1234 |--| это идентификатор ошибки. Эти данные изменят State (состояние
284
отношения ветки к ошибке) на *Fix Available* (Исправление доступно). Если одна
285
единственная фиксация исправляет несколько ошибок, то параметр --fixes может
286
быть указан несколько раз.
288
Самое интересное здесь заключается в том, что вам не обязательно иметь доступ
289
к Launchpad в момент фиксации. При использовании ``--fixes`` идентификатор
290
ошибки сохраняется в виде специальных метаданных, которые Launchpad увидит при
291
очередной публикации ваших изменений или когда ваша публичная ветка будет
292
просканирована в очередной раз.
294
Заметка: Launchpad не будет закрывать сообщение об ошибке только потому, что
295
существует ветка с исправлением. Для этого есть несколько причин. Во-первых,
296
обычно исправления из вашей ветки должны быть объединены с главной веткой
297
разработки, иначе большинство команд не будет считать ошибку исправленной.
298
Во-вторых, многие команды придерживаются отдельного процесса для подтверждения
299
исправлений ошибок, в добавление к утверждению разработчика об этом.
301
Как поясняется далее, функция отслеживания объединений веток на Launchpad в
302
настоящее время находится в стадии разработки. Как только эта функция будет
303
готова более подходящим поведением станет автоматическое изменение состояния
304
ошибки на *Fix Committed* (исправление зафиксировано).
310
После регистрации ветки вы можете связать её с планом, чтобы люди,
311
заинтересованные в этом плане могли отслеживать и тестировать новые
312
возможности по мере разработки.
314
Чтобы это сделать, выполните следующие шаги:
316
1. Перейдите к нужному плану (Blueprint).
318
2. Выберите `Link branch` (Связать ветку) в разделе `Actions` (Действия).
322
При желании вы также можете добавить произвольный комментарий об отношении
326
Управление релизами с помощью Launchpad
327
=======================================
332
Когда разработка на ветке закончена и она опубликована, сообщества обычно
333
проходят через строгий процесс, прежде чем изменения будут интегрированы в
334
основной продукт и предоставлены конечным пользователям. Вот некоторые из
337
* просмотр изменений другими участниками проекта
339
* принятие решения, в какой релиз будут включены изменения, например, в
340
следующий релиз с исправлениями, или в следующее крупное обновление, или в
343
* прогон функциональных тестов для выявления ошибок
345
* измерение производительности
347
* включение в предварительные версии для тестирования конечными пользователями
349
* обновление документации, например, заметок о выпуске
351
* перевод пользовательского интерфейса и документации на разные языки.
353
Этот раздел дает обзор возможностей Launchpad, которые помогают получить
354
высокое качество кода в конечном продукте. Хорошая интеграция с Bazaar
355
является основой для того, чтобы это прошло гладко.
357
Примечание: в тех случаях, когда указано, некоторые из следующих возможностей
358
всё ещё находятся в стадии разработки. Если одна или несколько таких
359
возможностей вам интересны, рассмотрите возможность вступления в команду
360
бета-тестирования Launchpad по следующей ссылке:
361
https://help.launchpad.net/JoiningLaunchpadBetaTesters. В этом случае, вы
362
сможете получить предварительный доступ к возможностям и сможете дать отзыв
363
разработчиками до широкого внедрения.
366
Предложение по объединению веток
367
--------------------------------
369
После перехода к ветке в Launchpad, одно из доступных действий - *Propose for
370
merging* (Предложить объединение). Это действие позволяет вам указать, с какой
371
веткой этот код мог бы быть объединен.
373
Отслеживание знаний о том, какие ветки предлагается объединить в главную,
374
помогает менеджерам выпусков держать на виду то, что ещё должно быть
375
завершено, либо может быть завершено, до даты выпуска. Используя эту
376
информацию, они могут убедиться, что ветки объединены после завершения их
377
необходимых обзоров. В простом случае, менеджер выпуска может объединить ветки
378
вручную. В более сложных ситуациях, объединение может быть сделано роботом
379
(таким, как `PQM`_) автоматически, когда ветки перейдут в правильное состояние
380
(например, *Review completed* (Обзор завершен)).
382
.. _PQM: https://launchpad.net/pqm
385
Отслеживание обзора кода
386
------------------------
388
Некоторые функции в Launchpad все еще в стадии разработки, например
389
отслеживание состояний, обсуждений и результатов обзора кода. Ожидается, что
390
эти функции будут интегрированы с предложениями по объединению веток и
394
Архивы личных пакетов (PPAs)
395
----------------------------
397
PPAs помогают разработчикам и командам разработки выдать определенный выпуск
398
на руки пользователям для раннего тестирования и получения отзывов. Другими
399
словами, PPA позволяет разработчику создать сообщество тестеров,
400
заинтересованных в их изменениях. Тестирующее сообщество может установить
401
пакеты, запускать их в течение тестового периода, а затем аккуратно удалить их
404
Дальнейшую информацию можно найти по адресу
405
https://help.launchpad.net/PPAQuickStart
411
Модуль переводов в Launchpad сделан для того чтобы любой желающий мог легко
412
присоединиться к переводу приложений на известные ему языки. Переводчики
413
защищены от подробностей низкого уровня.
415
Launchpad отслеживает переводы для каждой основной версии проекта по
416
отдельности, что позволяет переводчикам продолжать совершенствовать перевод
417
ваших стабильных релизов, пока другие могут начать работу над новыми версиями,
418
которые все ещё находятся в разработке. Скорость перевода увеличивается из-за
419
совместного использования ресурсов между проектами. Автоматические подсказки,
420
из библиотеки в 750 тысяч переведенных строк, а также сообщество из
421
19 тысяч зарегистрированных переводчиков может радикально сократить время,
422
необходимое для локализации вашего проекта на многие языки.
428
Сообщества к которым мы присоединяемся, будь то в реальной жизни, или онлайн,
429
говорят многое о нас. Обратная сторона этого заключается в инструментах
430
которые вы выбираете для сообщества - в частности, CDE и инструмент контроля
431
версий. Это может иметь большое значение для тех кто пожелает присоединиться,
432
и насколько легко они смогут помочь.
434
Сами по себе, Launchpad и Bazaar являются очень полезными инструментами.
437
* помочь вашему сообществу отслеживать основные ресурсы, такие как исходный
439
* помочь ему расти, снизив вступительный барьер;
440
* помочь ему во взаимодействии с зависимыми сообществами.
442
В частности, Launchpad является сервисом хранения свободного кода для ваших
443
веток Bazaar. Ветки можно просматривать онлайн, их можно связать с ошибками и
444
планами. А их статус по отношению к ошибке может автоматически управляться
445
упоминанием об ошибке при сохранении в Bazaar. Дальнейшая интеграция находится
446
в стадии развития с целью оптимизации процесса от *большой идеи* до
447
*работающего кода в руках конечных пользователей*.
449
Если у вас есть отзывы или пожелания о том, как лучше интегрировать Bazaar и
450
Launchpad, пожалуйста связывайтесь с нами через список рассылки
451
bazaar@lists.canonical.com.
453
Хотя Launchpad разработан как бесплатный сервис для поддержки проектов с
454
открытыми исходными текстами, Canonical может сделать его доступным и для
455
разработчиков коммерческого программного обеспечения, в зависимости от их
456
требований. Мы с удовольствием выслушаем ваше мнение, если вы считаете, что
457
Launchpad был бы полезен для управления вашим сообществом, будь оно открытое
461
.. |--| unicode:: U+2014