bzr branch
http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
1 |
=========================== |
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
2 |
Using Breezy with Launchpad |
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
3 |
=========================== |
4 |
||
5 |
||
6 |
Motivation |
|
7 |
========== |
|
8 |
||
9 |
Communities are different to teams |
|
10 |
---------------------------------- |
|
11 |
||
12 |
The team of people required to create the initial release |
|
13 |
of a piece of software may vary in size from one person |
|
14 |
to several thousand people. Depending on the requirements, |
|
15 |
the challenges involved, both technical and managerial, |
|
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
16 |
can be immense. As explained in the Breezy User Guide, selecting |
17 |
"just right" processes and using tools like Breezy to support |
|
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
18 |
matching workflows can greatly help. |
19 |
||
20 |
Success with software though requires more than a great team - it |
|
21 |
requires a healthy, active *community*. This group is typically |
|
22 |
far larger than the team as it includes everyone interested in |
|
23 |
the software: the team, users, training partners, support partners, |
|
24 |
third-party developers and so on. |
|
25 |
||
|
5278.1.6
by Martin Pool
More 'open source' occurrences |
26 |
Great communities are well understood in the free software community. |
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
27 |
Their applicability extends well beyond that though: most |
28 |
successful commercial software vendors are well skilled at |
|
29 |
building and managing the communities that grow up around |
|
30 |
their flagship products. |
|
31 |
||
32 |
Like great teams, great communities don't just happen. |
|
33 |
Good policies and guidelines are essential for |
|
34 |
fostering the right sort of behaviour and healthy |
|
35 |
relationships between participants. For a deeper look at |
|
36 |
this topic, see Karl Fogel's landmark book: |
|
37 |
`Producing Open Source Software <http://www.producingoss.com/>`_. |
|
38 |
||
39 |
||
40 |
The need for Collaborative Development Environments |
|
41 |
--------------------------------------------------- |
|
42 |
||
43 |
An intelligent toolset is also important for tracking and managing |
|
44 |
community information and workflows. These tools are called |
|
45 |
Collaborative Development Environments (CDEs). These toolsets are |
|
46 |
typically web-based and manage things such as announcements, |
|
47 |
issues/bugs, questions and answers, downloads, documents and |
|
48 |
source code. Some examples of CDEs include |
|
49 |
`Launchpad <https://launchpad.net>`_, |
|
50 |
`SourceForge <http://sourceforge.net>`_, |
|
51 |
`java.net <http://java.net>`_ and |
|
52 |
`SAP Community Network <https://www.sdn.sap.com/irj/sdn>`_. |
|
53 |
||
54 |
||
55 |
Helping communities work with related communities |
|
56 |
------------------------------------------------- |
|
57 |
||
58 |
Many successful products have a huge number of downstream dependencies. |
|
59 |
In other words, a new challenge arises with success: dealing with other |
|
60 |
communities and understanding how your changes will impact them. This is |
|
61 |
most obvious for projects like: |
|
62 |
||
63 |
* software languages, e.g. Python, PHP, Ruby, Java, Perl, etc. |
|
64 |
* compilers, e.g. gcc, JDK, etc. |
|
65 |
* libraries, e.g. zlib, openssl, etc. |
|
66 |
* frameworks, e.g. Zope, Ruby on Rails, Spring, etc. |
|
67 |
||
68 |
However it applies equally for popular applications on which add-ons are |
|
|
3167.1.1
by Matt Nordhoff
Fix typos of "Firefox" and "OpenOffice.org" in docs. |
69 |
built, e.g. Firefox, Thunderbird, OpenOffice.org, Drupal, Wordpress, Joomla, |
70 |
etc. |
|
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
71 |
|
72 |
Tools that assist communities work together to track and manage |
|
73 |
issues and fixes across community boundaries are required. These |
|
74 |
tools help people at both ends of the spectrum: |
|
75 |
||
76 |
* users can report problems in their terms, e.g. rendering of image |
|
77 |
type X is broken in application Y on operating system Z |
|
78 |
||
79 |
* developers can better appreciate the downstream impact of making a |
|
80 |
change or fix, e.g. fixing this bug in a graphics library will |
|
81 |
make the users of these 5 applications on these 10 operating |
|
82 |
systems happy. |
|
83 |
||
84 |
People in the middle play the essential role of *joining the dots* and |
|
85 |
communicating up and down the line. In many cases, they may also fix the |
|
86 |
problem for end users, releasing a patch and pushing a suggested fix |
|
87 |
to the upstream development team. Keeping track of all that over time |
|
88 |
in a sustainable way is no easy task. |
|
89 |
||
90 |
||
91 |
Finding and browsing branches using Launchpad |
|
92 |
============================================= |
|
93 |
||
94 |
Finding available branches |
|
95 |
-------------------------- |
|
96 |
||
97 |
While there are many advantages in adopting distributed version |
|
98 |
control, one of the things that disappears is the all-knowing |
|
99 |
central server with knowledge about all available branches. Indeed |
|
100 |
in a distributed environment, interesting branches can literally |
|
101 |
exist in 100s of locations across the Internet (or within an |
|
102 |
Intranet for that matter). |
|
103 |
||
104 |
Launchpad fills this gap by providing a registry of branches. |
|
105 |
||
106 |
||
107 |
Registering branches |
|
108 |
-------------------- |
|
109 |
||
110 |
Branches can be uploaded to Launchpad or simply registered |
|
111 |
as being available in an external location. Branches can also |
|
112 |
be given a Status such as *New*, *Development*, *Mature* or |
|
113 |
*Abandoned*. |
|
114 |
||
115 |
Note: External branches can even be hosted in legacy version control |
|
116 |
tools, i.e. CVS and Subversion. Code in these systems will be |
|
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
117 |
scanned and converted to Breezy branches on a periodic basis. |
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
118 |
For maximum fidelity of course, it is preferable for external |
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
119 |
branches to be hosted in Breezy. |
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
120 |
|
121 |
||
122 |
Browsing branches |
|
123 |
----------------- |
|
124 |
||
125 |
Branches can be listed, filtered and sorted by numerous |
|
126 |
attributes including Name, Registrant, Author, Status, Age and |
|
127 |
time of last commit. Browsing of branches is also provided making |
|
128 |
it easy to see things such as: |
|
129 |
||
130 |
* where the branch can be downloaded from |
|
131 |
* how to upload changes |
|
132 |
* recent commits and the changes made by each |
|
133 |
* the source code of individual files for a given version. |
|
134 |
||
135 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
136 |
Accessing code in Launchpad using Breezy |
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
137 |
======================================== |
138 |
||
|
5278.1.6
by Martin Pool
More 'open source' occurrences |
139 |
Getting the code for a project |
140 |
------------------------------ |
|
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
141 |
|
|
5278.1.6
by Martin Pool
More 'open source' occurrences |
142 |
As Launchpad keeps track of thousands of projects |
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
143 |
and their latest code whether it be managed by Breezy, CVS or Subversion, |
144 |
Breezy users can grab that code as easily as this:: |
|
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
145 |
|
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
146 |
brz branch lp:project-name |
|
3101.2.4
by Ian Clatworthy
include feedback from kiko |
147 |
|
148 |
where `project-name` is the Launchpad project ID. Here are some examples:: |
|
149 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
150 |
brz branch lp:inkscape |
151 |
brz branch lp:amarok |
|
152 |
brz branch lp:python |
|
153 |
brz branch lp:rails |
|
154 |
brz branch lp:java-gnome |
|
|
3101.2.4
by Ian Clatworthy
include feedback from kiko |
155 |
|
156 |
You can then browse the code locally using your favorite editor or IDE and |
|
157 |
change the code if you wish. |
|
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
158 |
|
|
3101.2.5
by Ian Clatworthy
Feedback from jam and jml |
159 |
If a project has multiple series registered (e.g. a development series and a |
160 |
maintenance series), the latest code for a given series can be fetched using:: |
|
161 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
162 |
brz branch lp:project-name/series |
|
3101.2.5
by Ian Clatworthy
Feedback from jam and jml |
163 |
|
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
164 |
Publishing your changes |
165 |
----------------------- |
|
166 |
||
167 |
Having fixed that annoying bug or added that cool feature you've always |
|
168 |
wanted, it's time to impress your friends and make the world a better |
|
169 |
place by making your code available to others. As explained earlier, |
|
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
170 |
Launchpad is a free Breezy code hosting service so you can push your |
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
171 |
branch to it and others can access your code from there. For example, |
|
3101.2.5
by Ian Clatworthy
Feedback from jam and jml |
172 |
assuming you are a member of the relevant team, login to launchpad like this:: |
|
3101.2.4
by Ian Clatworthy
include feedback from kiko |
173 |
|
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
174 |
brz launchpad-login userid |
|
3101.2.4
by Ian Clatworthy
include feedback from kiko |
175 |
|
176 |
where `userid` is your Launchpad user ID. |
|
|
3101.2.5
by Ian Clatworthy
Feedback from jam and jml |
177 |
You can then push your changes to a team branch like this:: |
178 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
179 |
brz push lp:~team-name/project-name/branch-name |
|
3101.2.5
by Ian Clatworthy
Feedback from jam and jml |
180 |
|
|
3101.2.4
by Ian Clatworthy
include feedback from kiko |
181 |
Others can then download your code like this:: |
182 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
183 |
brz branch lp:~team-name/project-name/branch-name |
|
3101.2.4
by Ian Clatworthy
include feedback from kiko |
184 |
|
185 |
||
186 |
Personal branches |
|
187 |
----------------- |
|
188 |
||
189 |
Even if you are not a member of a team, Launchpad can be used to publish |
|
190 |
your changes. In this case, simply create a personal branch like this:: |
|
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
191 |
|
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
192 |
brz push lp:~userid/project-name/branch-name |
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
193 |
|
|
3101.2.4
by Ian Clatworthy
include feedback from kiko |
194 |
Others can then download your code like this:: |
195 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
196 |
brz branch lp:~userid/project-name/branch-name |
|
3101.2.4
by Ian Clatworthy
include feedback from kiko |
197 |
|
198 |
Note: Even when publishing to a personal branch, it is polite to notify the |
|
199 |
upstream developers about your branch so they can pull your changes from |
|
200 |
it if they are generally applicable to all users and meet the project's |
|
201 |
quality standards. |
|
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
202 |
|
203 |
||
|
5462.4.1
by Barry Warsaw
Added support for ubuntu: and debianlp: schemes, accessing the relevant |
204 |
Package source branches |
205 |
----------------------- |
|
206 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
207 |
When `maintaining packages for Ubuntu using Breezy`_ you can easily access the |
|
5462.4.1
by Barry Warsaw
Added support for ubuntu: and debianlp: schemes, accessing the relevant |
208 |
package's source branch on Launchpad. The package's source branch in the |
209 |
current (default) series can be downloaded like this:: |
|
210 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
211 |
brz branch ubuntu:package |
|
5462.4.1
by Barry Warsaw
Added support for ubuntu: and debianlp: schemes, accessing the relevant |
212 |
|
213 |
where *package* is the name of the Ubuntu package you want to access. To |
|
214 |
download the package branch for a specific series in Ubuntu (e.g. Maverick or |
|
215 |
Lucid), use this:: |
|
216 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
217 |
brz branch ubuntu:maverick/package |
|
5462.4.1
by Barry Warsaw
Added support for ubuntu: and debianlp: schemes, accessing the relevant |
218 |
|
|
5462.4.4
by Barry Warsaw
Update docs. |
219 |
Ubuntu distroseries can also be abbreviated to just their first letter. For |
220 |
example, the above could also be written:: |
|
221 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
222 |
brz branch ubuntu:m/package |
|
5462.4.4
by Barry Warsaw
Update docs. |
223 |
|
|
5462.4.1
by Barry Warsaw
Added support for ubuntu: and debianlp: schemes, accessing the relevant |
224 |
You can also download the package source branch from Launchpad for several |
225 |
Debian series. The default series can be downloaded like this:: |
|
226 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
227 |
brz branch debianlp:package |
|
5462.4.1
by Barry Warsaw
Added support for ubuntu: and debianlp: schemes, accessing the relevant |
228 |
|
229 |
and a specific series can be downloaded like this:: |
|
230 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
231 |
brz branch debianlp:lenny/package |
|
5462.4.1
by Barry Warsaw
Added support for ubuntu: and debianlp: schemes, accessing the relevant |
232 |
|
233 |
Note that the ``debianlp:`` scheme access the Debian source branch for a |
|
234 |
package from Launchpad only. |
|
235 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
236 |
.. _`maintaining packages for Ubuntu using Breezy`: https://wiki.ubuntu.com/DistributedDevelopment |
|
5462.4.1
by Barry Warsaw
Added support for ubuntu: and debianlp: schemes, accessing the relevant |
237 |
|
238 |
||
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
239 |
Linking branches using Launchpad |
240 |
================================ |
|
241 |
||
242 |
Associating a branch with a bug |
|
243 |
------------------------------- |
|
244 |
||
245 |
After registering a branch, you can associate it to a bug so that |
|
246 |
people interested in that bug can track and download the fix as |
|
247 |
it becomes available. |
|
248 |
||
249 |
To do this, the steps are: |
|
250 |
||
251 |
1. Navigate to the bug in question. |
|
252 |
||
253 |
2. Select `Add branch` under `Actions`. |
|
254 |
||
255 |
3. Select the branch. |
|
256 |
||
257 |
4. Optionally set the State of the relationship. This is |
|
258 |
*Fix In Progress* by default but you may wish to set it |
|
259 |
to another state such as *Fix Available* if the branch already |
|
260 |
addresses the issue. |
|
261 |
||
262 |
If you wish, you can also provide some arbitrary comments about |
|
263 |
the relationship between the bug and the branch. |
|
264 |
||
265 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
266 |
Changing the state in Launchpad while committing in Breezy |
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
267 |
---------------------------------------------------------- |
268 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
269 |
Breezy and Launchpad can work together to reduce some of |
270 |
the status housekeeping for you. When you commit using Breezy, |
|
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
271 |
use the --fixes option like this:: |
272 |
||
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
273 |
brz commit --fixes lp:1234 -m "..." |
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
274 |
|
275 |
where 1234 is the bug ID. This will changes the State of the |
|
276 |
bug-branch relationship to *Fix Available*. If the one commit |
|
277 |
fixes multiple issues, the --fixes option can be specified multiple |
|
278 |
times. |
|
279 |
||
280 |
One of the cool things about this feature is that Launchpad does |
|
281 |
not need to be accessible when making the commit. The ``--fixes`` |
|
282 |
option works by storing metadata which Launchpad will detect next |
|
283 |
time the branch is pushed to it or scanned once online again. |
|
284 |
||
285 |
Note: Launchpad will not implicitly close a bug just because a |
|
286 |
branch is available that fixes it. There are several reasons for this. |
|
287 |
Firstly, the branch usually needs to be merged into the trunk |
|
288 |
(main development branch) before most teams consider it fixed. |
|
289 |
Secondly, many teams have a separate process for confirming |
|
290 |
bugs are fixed over and above a developer saying so. |
|
291 |
||
|
3101.2.4
by Ian Clatworthy
include feedback from kiko |
292 |
As explained later, merge control features are currently under |
293 |
development in Launchpad and automatically changing the status of |
|
294 |
bugs to *Fix Committed* will be more appropriate once those features |
|
295 |
are in place. |
|
296 |
||
297 |
||
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
298 |
Associating a branch with a blueprint |
299 |
------------------------------------- |
|
300 |
||
301 |
After registering a branch, you can associate it to a blueprint so that |
|
302 |
people interested in that blueprint can track and test the feature as |
|
303 |
it develops. |
|
304 |
||
305 |
To do this, the steps are: |
|
306 |
||
307 |
1. Navigate to the blueprint in question. |
|
308 |
||
309 |
2. Select `Link branch` under `Actions`. |
|
310 |
||
311 |
3. Select the branch. |
|
312 |
||
313 |
If you wish, you can also provide some arbitrary comments about |
|
314 |
the relationship between the blueprint and the branch. |
|
315 |
||
316 |
||
317 |
Managing releases using Launchpad |
|
318 |
================================= |
|
319 |
||
320 |
Integrating changes |
|
321 |
------------------- |
|
322 |
||
323 |
Once a branch has been developed and published, communities |
|
324 |
typically go through a rigorous process before those changes |
|
325 |
are integrated into the core product and rolled out to end users. |
|
326 |
Some of the steps involved may include: |
|
327 |
||
328 |
* peer review of the changes |
|
329 |
||
330 |
* deciding which releases to include the changes in, e.g. the |
|
331 |
next maintenance release, the next major release, or both |
|
332 |
||
333 |
* running functional regression tests |
|
334 |
||
335 |
* benchmarking to ensure performance remains acceptable |
|
336 |
||
337 |
* packaging into early access releases for end user testing |
|
338 |
||
339 |
* documentation updates, e.g. Release Notes for the targeted |
|
340 |
releases |
|
341 |
||
342 |
* translation of the user interface and documentation into |
|
343 |
multiple languages. |
|
344 |
||
345 |
This section briefly looks at some of the features in Launchpad that |
|
|
3101.2.4
by Ian Clatworthy
include feedback from kiko |
346 |
help get good quality code into production. Strong integration with |
|
6622.1.23
by Jelmer Vernooij
More renames in English docs. |
347 |
Breezy is core to making this happen smoothly. |
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
348 |
|
349 |
Note: Where indicated, some of the features below are still under |
|
350 |
development. If one or more of these features interest you, please |
|
351 |
consider joining the Launchpad beta test team at this link: |
|
352 |
https://help.launchpad.net/JoiningLaunchpadBetaTesters. You can |
|
353 |
then get early access to features and provide feedback to the |
|
354 |
developers before wider roll-out. |
|
355 |
||
356 |
||
357 |
Branch merge proposals |
|
358 |
---------------------- |
|
359 |
||
360 |
After navigating to a branch in Launchpad, one of the available actions |
|
361 |
is *Propose for merging*. This lets you nominate which branch this code |
|
362 |
ought to be merged into. |
|
363 |
||
|
3101.2.4
by Ian Clatworthy
include feedback from kiko |
364 |
Tracking the knowledge about which branches are proposed to be merged |
365 |
into a codeline helps Release Managers keep on top of what still needs |
|
366 |
to be completed, or can be completed, before a ship date. Using this |
|
367 |
information, they can ensure branches are merged after completing any |
|
368 |
necessary reviews. In the simple case, the Release Manager may manually |
|
369 |
merge branches. In more advanced cases, the merging could be automatically |
|
370 |
done by a robot (like `PQM`_) when the branch reaches the right state |
|
371 |
(e.g. *Review completed*). |
|
372 |
||
373 |
.. _PQM: https://launchpad.net/pqm |
|
374 |
||
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
375 |
|
376 |
Code review tracking |
|
377 |
-------------------- |
|
378 |
||
|
3638.6.25
by Dmitry Vasiliev
using_bazaar_with_launchpad.txt: Update and review translation |
379 |
A number of features are under development in Launchpad to track the |
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
380 |
states, conversations and outcomes of code reviews. These features are |
381 |
expected to be integrated with branch merge proposals and branch |
|
382 |
browsing features. |
|
383 |
||
|
3101.2.4
by Ian Clatworthy
include feedback from kiko |
384 |
|
|
3101.2.1
by Ian Clatworthy
Add Using Bazaar with LP tutorial |
385 |
Personal Package Archives (PPAs) |
386 |
-------------------------------- |
|
387 |
||
388 |
PPAs help developers and development teams get custom builds into the |
|
389 |
hands of users for early testing and feedback. In other words, a PPA |
|
390 |
allows a developer to form a community of testers who are interested |
|
391 |
in their changes. The testing community can install the packages, |
|
392 |
run them for the test period and then remove them cleanly from their |
|
393 |
system. |
|
394 |
||
395 |
See https://help.launchpad.net/PPAQuickStart for further details. |
|
396 |
||
397 |
||
398 |
Translations |
|
399 |
------------ |
|
400 |
||
401 |
The Translations module in Launchpad is designed to make it easy for |
|
402 |
anyone to get involved translating applications to languages they know. |
|
403 |
Translators are shielded from the low level details. |
|
404 |
||
405 |
Launchpad keeps track of the translations for each major version of a |
|
406 |
project separately, allowing translators to continue to improve the |
|
407 |
translations of your stable releases while others start work on newer |
|
408 |
versions that are still in development. Translation speed in reduced |
|
409 |
by sharing resources across projects. Automatic suggestions, from a |
|
410 |
library of 750,000 translated strings, and a community of 19,000 |
|
411 |
registered translators can radically cut the time required to |
|
412 |
localise your project into many languages. |