/brz/remove-bazaar

To get this branch, use:
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.