summaryrefslogtreecommitdiff
path: root/admin/notes/bugtracker
blob: e253cb6d1b48973ebdbdc10de63a4cc6951380cb (plain)
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
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
NOTES ON THE EMACS BUG TRACKER   -*- outline -*-

The Emacs Bug Tracker can be found at http://debbugs.gnu.org/

For a list of all bugs, see http://debbugs.gnu.org/db/pa/lemacs.html
This is a static page, updated once a day.  There is also a dynamic
list, generated on request, but since there are many bug reports this
is slow and not recommended.

** How do I report a bug in Emacs now?
The same way as you always did.  Send mail to bug-gnu-emacs@gnu.org,
or use M-x report-emacs-bug.

The only differences are:

i) Your report will be assigned a number and generate an automatic reply.

ii) Optionally, you can set some database parameters when you first
report a bug (see "Setting bug parameters" below).

iii) If you want to CC: someone, use X-Debbugs-CC: (this is important;
see below).

Once your report is filed and assigned a number, it is sent out to the
bug mailing list.  In some cases, it may be appropriate to just file a
bug, without sending out a copy.  To do this, send mail to
quiet@debbugs.gnu.org.

** How do I reply to an existing bug report?
Reply to 123@debbugs.gnu.org, replacing 123 with the number
of the bug you are interested in.  NB this only sends mail to the
bug-list, it does NOT (?) send a CC to the original bug submitter.
So you need to explicitly CC him/her (and anyone else you like).

(Many people think the submitter SHOULD be automatically subscribed
to subsequent discussion, but this does not seem to be implemented.
See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=37078)

Do NOT send a separate copy to the bug list, since this may generate a
new report. The only time to send mail to the bug list is to create a
new report.

Gnus users can add the following to message-dont-reply-to-names;
similarly with Rmail and rmail-dont-reply-to-names:

"\\(emacs-pretest-bug\\|bug-gnu-emacs\\)@gnu\\.org\\|\
\\(submit\\|control\\|owner\\)@debbugs\\.gnu\\.org"

The "owner@debbugs.gnu.org" entry is there because it appears in the
"Resent-To" header.  For a long time Rmail erroneously included such
headers in replies.  If you correspond with an Rmail user on a bug,
these addresses may end up in the Cc.  Mailing to them does nothing
but create duplicates and errors.  (It is possible you might want to
have a dialog with the owner address, outside of normal bug
reporting.)

** When reporting a bug, to send a Cc to another address
(e.g. bug-cc-mode@gnu.org), do NOT just use a Cc: header.
Instead, use "X-Debbugs-CC:".  This ensures the Cc address will get a
mail with the bug report number in.  If you do not do this, each reply
in the subsequent discussion will end up creating a new bug.  This is
annoying.

Note that the way this feature works is perhaps not ideal (Bug#1720).
If X-Debbugs-CC: was specifed by a real header, that header is removed
in the mail sent out to the bug list, and the addresses merged into
the Resent-CC header (see below).  They don't appear as an explicit CC:
header, nor do they appear in the Reply-To: header.  So people you
X-Debbugs-CC are not included in any following discussion unless they are
manually cc'd.  So this feature really only serves to notify them that
a bug has been filed.  It's then up to them to follow any subsequent
discussion.

If X-Debbugs-CC were merged into the Reply-To header, this might work
more the way people expect.

** How does Debbugs send out mails?

The mails are sent out to the bug list with From: and To: unchanged.
Eg if you file a bug with "submit@debbugs.gnu.org", that
remains in the To: address.  They reach the bug list by being resent.

Mails arriving at the bug list have the following Resent-* headers:

Resent-From: person who submitted the bug
Resent-To:   owner@debbugs.gnu.org
Resent-CC:   maintainer email address, plus any X-Debbugs-CC: entries

The "maintainer email address" is "bug-gnu-emacs@gnu.org" in most cases.

A new report also has:

Mail-Followup-To: bug submitter, 123@debbugs.gnu.org

** To not get acknowledgement mail from the tracker,
add an "X-Debbugs-No-Ack:" header (with any value).  If you use Gnus,
you can add an element to gnus-posting-styles to do this automatically, eg:

("gnu-emacs\\(-pretest\\)?-bug"
   ("X-Debbugs-No-Ack" "yes"))

(adjust the regexp according to the name you use for the bug lists)

** To record a bug in the tracker without sending mail to the bug list.
This can be useful to make a note of something discussed on
emacs-devel that needs fixing.  In other words, this can be the
equivalent of adding something to FOR-RELEASE.

To: quiet@debbugs.gnu.org
[headers end]
Package: emacs
Version: 23.0.60
Severity: minor

Remember to fix FOO, as discussed on emacs-devel at http://... .

** Not interested in tracker control messages (tags being set, etc)?
Discard mails matching:

^X-Emacs-PR-Message: transcript

When you close a bug, you get a message matching:

^X-Emacs-PR-Message: closed

** How to avoid multiple copies of mails.
When you reply to a bug, respect the Reply-To address, ie send mail
only to the submitter address and the numbered bug address.  Do not
send mail direct to bug-gnu-emacs or emacs-pretest-bug unless you are
reporting a new bug.

** To close bug #123 (for example), send mail

To: 123-done@debbugs.gnu.org

with a brief explanation in the body as to why the bug was closed.
There is no need to cc the address without the "-done" part or the
submitter; they get copies anyway so this will just result in more
duplicate mail.

** Setting bug parameters.
There are two ways to set the parameters of bugs in the database
(tags, severity level, etc).  When you report a new bug, you can
provide a "pseudo-header" at the start of the report, eg:

Package: emacs
Version: 23.0.60
Severity: minor

Optionally, add a sub-package, eg Package: emacs,calendar.
This can include tags.  Some things (e.g. submitter) don't seem to
work here.

Otherwise, send mail to the control server, control@debbugs.gnu.org.
At the start of the message body, supply the desired commands, one per
line:

command bug-number [arguments]
...
quit|stop|thank|thanks|thankyou|thank you

The control server ignores anything after the last line above.  So you
can place control commands at the beginning of a reply to a bug
report, and Bcc: the control server (note the commands have no effect
if you just send them to the bug-report number).  Bcc: is better than Cc:
in case people use Reply-to-All in response.

Some useful control commands:

*** To reopen a closed bug:
reopen 123

*** Bugs can be tagged in various ways (eg wontfix, patch, etc).
The available tags are:
patch wontfix moreinfo unreproducible fixed notabug
See http://debbugs.gnu.org/Developer#tags
The list of tags can be prefixed with +, - or =, meaning to add (the
default), remove, or reset the tags. E.g.:

tags 123 + wontfix

** URL shortcuts

http://debbugs.gnu.org/...

123             # given bug number
123;mbox=yes    # mbox version of given bug
package         # bugs in given package    (don't use "emacs" - too many bugs!)
from:submitter@email.address
severity:severity      # all bugs of given severity
tag:tag                # all bugs with given tag

** Usertags

See <http://wiki.debian.org/bugs.debian.org/usertags>

"Usertags" are very similar to tags: a set of labels that can be added
to a bug.  There are two differences between normal tags and user
tags:

1) Anyone can define any valid usertag they like.  In contrast, only a
limited, predefined set of normal tags are available (see above).

2) A usertag is associated with a specific email address.

You set usertags in the same way as tags, by talking to the control
server.  One difference is that you can also specify the associated
email address.  If you don't explicitly specify an address, then it
will use the one from which you send the control message. The address
must have the form of an email address (with an "@" sign and least 4
characters after the "@").

*** Setting usertags

a) In a control message:

user bug-gnu-emacs@gnu.org
usertags 1234 any-tag-you-like

This will add a usertag "any-tag-you-like" to bug 1234.  The tag will
be associated with the address "bug-gnu-emacs@gnu.org".  If you omit
the first line, the tag will be associated with your email address.

The syntax of the usertags command is the same as that of tags (eg wrt
the optional [=+-] argument).

b) In an initial submission, in the pseudo-header:

User: bug-gnu-emacs@gnu.org
Usertags: a-new-tag

Again, the "User" is optional.

*** Searching by usertags

The search interface is not as advanced as for normal tags.  You need
to construct the relevant url yourself rather than just typing in a
search box.  The only piece you really need to add is the "users"
portion, the rest has the same syntax as normal.

**** To find all bugs usertagged by a given email address:

http://debbugs.gnu.org/cgi/pkgreport.cgi?users=bug-gnu-emacs@gnu.org

(Supposedly, the "users" field can be a comma-separated list of more
than one email address, but it does not seem to work for me.)

**** To find bugs tagged with a specific usertag:

This works just like a normal tags search, but with the addition of a
"users" field.  Eg:

http://debbugs.gnu.org/cgi/pkgreport.cgi?users=bug-gnu-emacs@gnu.org;tag=calendar

*** To merge bugs:
Eg when bad replies create a bunch of new bugs for the same report.
Bugs must all be in the same state (e.g. same package(s) and severity
-- see `reassign' and `severity' below), but need not have the same
tags (tags are merged). E.g.:

merge 123 124 125 ...

Note that merging does not affect titles.  In particular, a "retitle"
of merged bugs only affects individual bugs, not all of them.

*** Forcing a merge:
Like `merge', but bugs need not be in the same state.  The packages
must still match though (see `reassign' below).  The first one listed
is the master.  E.g.:

forcemerge 123 124 125 ...

Note: you cannot merge with an archived bug - you must unarchive it first.

*** To unmerge bugs:
To disconnect a bug from all bugs it is merged with:

unmerge 123

This command accepts only one bug number.

*** To clone bugs:
Useful when one report refers to more than one bug.

clone 123 -1 [-2 ...]
retitle -1 second bug
retitle -2 third bug

The negative numbers provide a way to refer to the cloned bugs (which
will be assigned proper numbers).

NB you cannot clone a merged bug.  You'd think that trying to do so
would just give you an unmerged copy of the specified bug number, but no:

http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=474742

You must unmerge, clone, then re-merge.

*** To set severity:
severity 123 critical|grave|serious|important|normal|minor|wishlist

See http://debbugs.gnu.org/Developer#severities for the meanings.

*** To set the owner of a bug:
owner 123 A Hacker <none@example.com>

The shorthand `!' means your own address.

*** To remove the owner of a bug:
noowner 123

*** To mark a bug as fixed in a particular version:
fixed 123 23.0.60

*** To remove a "fixed" mark:
notfixed 123 23.0.60

*** To assign or reassign a bug to a package or list of packages:
reassign 1234 emacs,cc-mode

** To remove spam from the tracker, move it to the `spam' pseudo-package:
reassign 123 spam

** To change the title of a bug:
retitle 123 Some New Title

** To change the submitter address:
submitter 123 none@example.com

Note that it does not seem to work to specify "Submitter:" in the
pseudo-header when first reporting a bug.

** How does archiving work?
You can still send mail to a bug after it is closed.  After 28 days with
no activity, the bug is archived, at which point no more changes can
be made.  If you try to send mail to the bug after that (or merge with
it), it will be rejected.  To make any changes, you must unarchive it first:

unarchive 123

The bug will be re-archived after the next 28 day period of no activity.

** The web-page with the list of bugs is slow to load

It's a function of the number of displayed bugs.  You can speed things
up by only looking at the newest 100 bugs:
http://debbugs.gnu.org/cgi-bin/pkgreport.cgi?newest=100;package=emacs

Or use the static index:
http://debbugs.gnu.org/db/ix/full.html

** ChangeLog issues

*** When you fix a bug, it can be helpful to put the bug number in the
ChangeLog entry, for example:

   * foo.el (foofunc): Fix the `foo' case.  (Bug#123)

Then the relevant bug can be found for easy reference.  If it's an
obvious fix (e.g. a typo), there's no need to clutter the log with the
bug number.

Similarly, when you close a bug, it can be helpful to include the
relevant ChangeLog entry in the message to the bug tracker, so people
can see eaxctly what the fix was.

*** bug-reference-mode

Activate `bug-reference-mode' in ChangeLogs to get clickable links to
the bug web-pages.

*** Debian stuff

http://lists.gnu.org/archive/html/emacs-devel/2009-11/msg00440.html

** Gnus-specific voodoo

*** Put point on a bug-number and try: M-x gnus-read-ephemeral-emacs-bug-group

*** If the above is not available:
(add-hook 'gnus-article-mode-hook
          (lambda ()
             (setq bug-reference-url-format "http://debbugs.gnu.org/%s")
              (bug-reference-mode 1)))

and you can click on the bug number in the subject header.


* Technical Notes

The following are technical notes on how it works.  These are just for
reference, you don't need to read these as a user of the system.

Getting mail from the Emacs bug list into the tracker requires the
assistance of sysadmin at gnu.org.  The test tracker set-up was, I
think, [gnu.org #359140]:
http://lists.gnu.org/archive/html/savannah-hackers/2008-03/msg00074.html
http://lists.gnu.org/archive/html/savannah-hackers/2008-04/msg00034.html

** The debbugs.gnu.org setup was handled in [gnu.org #510605].
There are two pieces (replace AT with @ in the following):

i) fencepost has an /etc/aliases entry:
emacs-pretest-bug: submit AT debbugs.gnu.org

ii) An exim router:
emacsbugs_router:
  driver = redirect
  senders = !Debian-debbugs AT debbugs.gnu.org
  local_parts = bug-gnu-emacs
  domains = gnu.org
  data = submit AT debbugs.gnu.org

This says, for mail arriving at bug-gnu-emacs, only allow it through
to the list if it was sent from debbugs.gnu.org.  Otherwise, send
it to the submit address at the bug-tracker.

FIXME There's probably an issue with the mail-news gateway here that
still needs to be addressed (bug#936).

** fencepost's /etc/exim4/local_domains configuration needs a line
!debbugs.gnu.org adding [gnu.org #503532].  Otherwise people on
fencepost can't report bugs, since *.gnu.org addresses are assumed to
be handled locally on fencepost, unless otherwise specified.

** All mail arriving at debbugs.gnu.org is first run through SpamAssassin.
Obvious spam is rejected, the rest is sent on to the moderated list
debbugs-submit.  Approved mail is passed on to the tracker.
(Note this means that messages may appear out of sequence in the
tracker, since mail from whitelisted senders goes straight through.)

NOTE: An alternative to this would be to use listhelper AT nongnu.org
as a moderator address.  Eg the emacs-bug-tracker list uses this.
It does basic spam processing on the moderator requests and
automatically rejects the obviously bogus ones.  Someone still has to
accept the good ones though.  The advantage of this would not be having
to run and tune our own spam filter.  See
http://savannah.nongnu.org/projects/listhelper

An "X-Debbugs-Envelope-To" header is used to keep track of where the
mail was actually bound for:
http://lists.gnu.org/archive/html/emacs-devel/2009-11/msg01211.html

** Mailing list recipient/sender filters.
The following mailman filters are useful to stop messages being
needlessly held for moderation:

*** debbugs-submit
(quiet|control|submit)@(debbugs\.gnu\.org|emacsbugs\.donarmstrong\.com)
[0-9]+(-done|-quiet|-subscribe)?@(debbugs\.gnu\.org|emacsbugs\.donarmstrong\.com)
(bug-gnu-emacs|emacs-pretest-bug)@gnu\.org

*** emacs-bug-tracker
sender: bug-gnu-emacs AT gnu.org
recipient: emacs-bug-tracker AT debbugs\.gnu\.org

The latter is because that is the address that debbugs actually sends to.
An /etc/aliases entry redirects it to the real emacs-bug-tracker address.