~bzr-pqm/bzr/bzr.dev

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
***********************
Tracking Bugs in Bazaar
***********************

This document describes the bug-tracking processes for developing Bazaar
itself.  Bugs in Bazaar are recorded in Launchpad.


See also:

* `Bazaar Developer Documents <index.html>`_.

* `The Bazaar Development Cycle <cycle.html>`_.

* `The Bazaar User Guide <../en/user-guide/index.html>`_ -- for
  information on integrating Bazaar with other bug trackers.


Links
*****

* `bzr bugs home page <https://bugs.edge.launchpad.net/bzr>`_.

* `Critical bugs <https://bugs.edge.launchpad.net/bzr/+bugs?search=Search&field.importance=Critical&field.status=New&field.status=Incomplete&field.status=Confirmed&field.status=Triaged&field.status=In+Progress&field.status=Fix+Committed>`_.

* `Open bugs by importance <https://bugs.edge.launchpad.net/bzr/+bugs>`_.

* `Open bugs most recently changed first
  <https://bugs.edge.launchpad.net/bzr/+bugs?field.searchtext=&orderby=-date_last_updated&search=Search&field.status%3Alist=NEW&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=FIXCOMMITTED&field.assignee=&field.bug_reporter=&field.omit_dupes=on&field.has_patch=&field.has_no_package=>`_.


Generalities
************

Anyone involved with Bazaar is welcome to contribute to managing our bug
reports.  **Edit boldly**: try to help users out, assess importance or improve
the bug description or status.  Other people will see the bugs: it's
better to have 20 of them processed and later change the status of a
couple than to leave them lie.

When you file a bug as a Bazaar developer or active user, if you feel
confident in doing so, make an assessment of status and importance at the
time you file it, rather than leaving it for someone else.  It's more
efficient to change the importance if someone else feel's it's higher or
lower, than to have someone else edit all bugs.

It's more useful to actually ship bug fixes than to garden the bug
database.  It's more useful to take one bug through to a shipped fix than
to partially investigate ten bugs.  You don't get credit for a bug until
the fix is shipped in a release.  Users like getting a response to their
report, but they generally care more about getting bugs fixed.

The aim of investigating bugs before starting concentrated work on them is
therefore only to: 

* determine if they are critical or high priority (and
  should displace existing work)

* garden sufficiently to keep the database usable: meaningful summaries,
  and duplicates removed

It's OK to fix some bugs that just annoy you, even if they're not
rationally high.

You can use ``--fixes lp:12345678`` when committing to associate the
commit with a particular bug.

If there are multiple bugs with related fixes, putting "[master]" in the
title of one of them helps find it

It's often fastest to find bugs just using the regular Google search
engine, rather than Launchpad's search.

Martin Pitt says:

 | One of the things you should not do often is to start asking
 | questions/for more debug info and then forget about the bug. It's just
 | a waste of the reporter's and your time, and will create frustration
 | on the reporter side. 


Priorities
**********

The suggested priorities for bug work are:

1. Fix critical bugs.
   
2. Get existing fixes through review and landed.

3. Fix bugs that are already in progress.

4. Look at bugs already assigned to you, and either start them, or change
   your mind and unassign them.

5. Take new bugs from the top of the stack.

6. Triage new bugs.

It's not strict and of course there is personal discretion but our work
should be biased to the top of this hierarchy.


Clear Bugs
**********

Bugs should have clear edges, so that you can make a clear statement about
whether a bug is fixed or not.  (Sometimes reality is complicated, but aim
for each bug to be clear.)

Bugs on documentation, performance, or UI are fine as long as they're
clear bugs.

Examples of good bugs:

* "ValueError in frob_foo when committing changed symlink" - although
  there may be many possible things that could cause a ValueError there,
  you should at least know when you've fixed the problem described in this
  bug.

* "Unclear message about incompatible repositories" - even though the user
  may not agree the new message is sufficiently clear, at least you know
  when you've tried to fix it.

Examples of bad bugs:

* "Commit is too slow" - how fast is fast enough to close it?  "Commit
  reads the working tree twice" is clearer.


Bug Status
**********

New
    The bug has just been filed and hasn't been examined by a developer
    yet.
Incomplete
    The bug requires more information from the reporter to make progress.
Confirmed
    The bug report has been seen by a developer and we agree it's a bug.  
    You don't have to reproduce the bug to mark it confirmed.  (Generally
    it's not a good idea for a developer to spend time reproducing the bug
    until they're going to work on it.)
Triaged
    We don't use this status.  If it is set, it means the same as
    Confirmed.
In Progress
    Someone has started working on this.
Won't Fix
    The behaviour complained about is intentional and we won't fix it.
    Needless to say, be thoughtful before using this status, and consider if
    the user experience can be improved in some other way.
Invalid
    The reporter was confused, and this is not actually a bug.
    Again, be sensitive in explaining this to the user.
Fix Committed
    A fix for this bug exists in a branch somewhere.  Ideally the bug will
    be linked to the branch.
Fix Released
    The fix for this bug is now in the bzr branch that this task is for.
    The branch for the default task on a bug is bzr.dev.  We use this value
    even though the fix may not have been been included in a release yet
    because all the developer activity around it is complete and we want to
    both avoid bug spam when releases happen, and keep the list of bugs that
    developers see when they look at the bug tracker trimmed to those that
    require action. When setting a bug task to fix released, the bug target
    milestone should be set to the release the fix will be included in (or
    was included in, if you are updating an old bug). Don't spend too much time
    updating this if you don't immediately know: its not critical that it be
    set.


Bug Importance
**************

Critical
    This is a serious bug that could cause data loss, stop bzr being
    usable in an important case, or represents a regression in something
    previously working.  We should fix critical bugs before doing other
    work, or seriously consider whether the bug is really critical
    or whether the other change is more urgent.
High
    This is a bug that can seriously interfere with people's use of
    Bazaar.  We should seriously consider fixing these bugs before
    working on new features.
Medium
    A regular bug.  We'd like to fix them, but there may be a long delay.
Low
    Something suboptimal that may affect an unimportant case or have a
    fairly easy workaround.
Wishlist
    These will basically never get done.

Bugs rated Medium or lower are unlikely to get fixed unless they either
pique the interest of a developer or are escalated due eg to many users
being affected.

Not every existing bug is correctly rated according to this scale, and we
don't always follow this process, but we'd like to do it more.  But
remember, fixing bugs is more helpful than gardening them.


Assignment
**********

Assigning a bug to yourself, or someone else, indicates a real intention
to work on that bug soon.


Targetting Bugs
***************

It's possible to target a bug to a milestone, eg
<https://bugs.edge.launchpad.net/bzr/+milestone/1.16>.  We use this to help the
release manager know what **must** be merged to make the release.

Therefore, we don't target bugs that we'd like to have fixed or that could
be fixed in a particular release, we only target bugs that must be fixed
and that will cause us to slip the release if they're not fixed.  At any time,
very few if any of the bugs targeted to a release should be still open.  By
definition, these bugs should normally be Critical priority.


Backports
*********

Sometimes we'll want to make a special point-release update (eg 1.15.1)
off an already-released branch including a fix for a particular bug.  To
represent this, create a new bug task (ie link in the status table on the
bug page) by clicking the `poorly-named
<https://bugs.launchpad.net/bugs/132733>`_ "Target to Release" link.
Target it to the appropriate series (ie 1.15). If the bug should also
prevent any point releases of that series then you should also target the
new task to the appropriate milestone within that release. (See Targeting Bugs
above)

This bug task then has a separate status and importance to indicate the
separate work to get it into that release.


The News File
*************

Most bugs that are fixed should be mentioned in a `NEWS
<../en/release-notes/NEWS.html>`_ file entry,
including the bug number.
(Exceptions might be bugs that are not at all user visible.)


Tags
****

Here are some bug tags we use.  In Malone tags are currently of limited use, so don't feel obliged to tag bugs unless you're finding it useful.


authentication
    authenticating to servers

backport 
    candidate for backporting to an update of the previous release

dirstate 
    WorkingTree4

easy 
    should be possible to finish in an hour or two

hpss 
    bugs about the High-Performance Smart Server, i.e. bzr+ssh://, etc.

hpssvfs 
    bugs for causes of VFS methods of the smart server

launchpad 
    bugs about interactions with launchpad (typically this means bzrlib.plugins.launchpad).

locale 
    problems using locales other than English

memory 
    problems where we use too much memory for some reason

newformat 
    fixing this would need a new disk format

performance 
    bugs about performance problems.

test 
    needs changes to the test framework

transport 
    virtual filesystem for http, sftp, etc

trivial 
    should be very easy to fix (10-20 minutes) and easily landed: typically just spelling errors and the like

ui 
    bugs relating to the bzr user interface, e.g. confusing error messages.

win32 
    bugs that mainly affects Windows. Also there is cygwin and win98 tags for marking specific bugs. 

You can see the full list of tags in use at
<https://bugs.edge.launchpad.net/bzr/+bugs>.  As of September 2008 the
list is on the right. 

.. vim: ft=rst