Spelling fixes.
[emacs.git] / admin / notes / bugtracker
blobdd1ea46ceb2b7e1483cd31f6d2562864a2644828
1 NOTES ON THE EMACS BUG TRACKER   -*- outline -*-
3 The Emacs Bug Tracker can be found at http://debbugs.gnu.org/
5 * Quick-start guide
7 This is 95% of all you will ever need to know.
9 ** How do I report a bug?
10 Use M-x report-emacs-bug, or send mail to bug-gnu-emacs@gnu.org.
11 If you want to Cc someone, use an "X-Debbugs-CC" header instead.
13 ** How do I comment on a bug?
14 Reply to a mail on the bug-gnu-emacs list in the normal way.
15 Or send a mail to 123@debbugs.gnu.org.
17 If the bug is old and closed, you may have to unarchive it first.
18 Send a mail to control@debbugs.gnu.org with
19 unarchive 123
20 on the first line of the body.
22 ** How do I close a bug?
23 Send a mail to 123-done@debbugs.gnu.org.  In the body, explain
24 why the bug is being closed.
26 ** How do I set bug meta-data?
27 By mailing commands to control@debbugs.gnu.org.  Place commands at the
28 start of the message body, one per line.
30 severity 123 serious|important|normal|minor|wishlist
31 tags 123 moreinfo|unreproducible|wontfix|patch
33 * More detailed information
35 For a list of all bugs, see http://debbugs.gnu.org/db/pa/lemacs.html
36 This is a static page, updated once a day.  There is also a dynamic
37 list, generated on request. This accepts various options, eg to see
38 the most recent bugs:
40 http://debbugs.gnu.org/cgi/pkgreport.cgi?newest=100
42 Or follow the links on the front page http://debbugs.gnu.org .
44 ** How do I report a bug in Emacs now?
45 The same way as you always did.  Send mail to bug-gnu-emacs@gnu.org,
46 or use M-x report-emacs-bug.
48 The only differences are:
50 i) Your report will be assigned a number and generate an automatic reply.
52 ii) Optionally, you can set some database parameters when you first
53 report a bug (see "Setting bug parameters" below).
55 iii) If you want to CC: someone, use X-Debbugs-CC: (this is important;
56 see below).
58 Once your report is filed and assigned a number, it is sent out to the
59 bug mailing list.  In some cases, it may be appropriate to just file a
60 bug, without sending out a copy.  To do this, send mail to
61 quiet@debbugs.gnu.org.
63 ** How do I reply to an existing bug report?
64 Reply to 123@debbugs.gnu.org, replacing 123 with the number
65 of the bug you are interested in.  NB this only sends mail to the
66 bug-list, it does NOT send a CC to the original bug submitter.
67 So you need to explicitly CC him/her (and anyone else you like).
68 (This works the same way as all the Emacs mailing lists.  We generally
69 don't assume anyone who posts to a list is subscribed to it, so we
70 cc everyone on replies.)
72 (Many people think the submitter SHOULD be automatically subscribed
73 to subsequent discussion, but this does not seem to be implemented.
74 See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=37078
75 See also http://debbugs.gnu.org/5439 )
77 Do NOT send a separate copy to the bug list address, since this may
78 generate a new report.  The only time to send mail to the bug list
79 address is to create a new report.
81 Gnus users can add the following to message-dont-reply-to-names;
82 similarly with Rmail and rmail-dont-reply-to-names:
84 "\\(emacs-pretest-bug\\|bug-gnu-emacs\\|bug-\\(e\\|gnu\\)macs\\)@gnu\\.org\\|\
85 \\(submit\\|control\\|owner\\)@debbugs\\.gnu\\.org"
87 The "owner@debbugs.gnu.org" entry is there because it appears in the
88 "Resent-To" header.  For a long time Rmail erroneously included such
89 headers in replies.  If you correspond with an Rmail user on a bug,
90 these addresses may end up in the Cc.  Mailing to them does nothing
91 but create duplicates and errors.  (It is possible, but unlikely, that
92 you might want to have a dialog with the owner address, outside of
93 normal bug reporting.)
95 ** When reporting a bug, to send a Cc to another address
96 (e.g. bug-cc-mode@gnu.org), do NOT just use a Cc: header.
97 Instead, use "X-Debbugs-CC:".  This ensures the Cc address will get a
98 mail with the bug report number in.  If you do not do this, each reply
99 in the subsequent discussion will end up creating a new bug.
100 This is annoying.
102 (So annoying that a form of message-id tracking has been implemented
103 to hopefully stop this happening, but it is still better to use X-Debbugs-CC.)
105 If a new report contains X-Debbugs-CC in the input, this is
106 converted to a real Cc header in the output.  (See Bug#1720).
107 It is also merged into the Resent-CC header (see below).
109 ** How does Debbugs send out mails?
111 The mails are sent out to the bug list by being resent.  The From:
112 header is unchanged.  In new reports only (at present), the To:
113 address is altered as follows.  Any "bug-gnu-emacs",
114 "emacs-pretest-bug", or "submit@debbugs" address is replaced by
115 123@debbugs in the mail that gets sent out.  (This also applies to any
116 Cc: header, though you should be using X-Debbugs-CC instead in new
117 reports).  The original header is stored as X-Debbugs-Original-To, if
118 it was changed.  Any X-Debbugs-CC is merged into the Cc.
120 Mails arriving at the bug list have the following Resent-* headers:
122 Resent-From: person who submitted the bug
123 Resent-To:   owner@debbugs.gnu.org
124 Resent-CC:   maintainer email address, plus any X-Debbugs-CC: entries
126 The "maintainer email address" is "bug-gnu-emacs@gnu.org" in most cases.
128 ** To not get acknowledgement mail from the tracker,
129 add an "X-Debbugs-No-Ack:" header (with any value).  If you use Gnus,
130 you can add an element to gnus-posting-styles to do this automatically, eg:
132 ("gnu-emacs\\(-pretest\\)?-bug"
133    ("X-Debbugs-No-Ack" "yes"))
135 (adjust the regexp according to the name you use for the bug lists)
137 ** To record a bug in the tracker without sending mail to the bug list.
138 This can be useful to make a note of something discussed on
139 emacs-devel that needs fixing.  In other words, this can be the
140 equivalent of adding something to FOR-RELEASE.
142 To: quiet@debbugs.gnu.org
143 [headers end]
144 Package: emacs
145 Version: 23.0.60
146 Severity: minor
148 Remember to fix FOO, as discussed on emacs-devel at http://... .
150 ** Not interested in tracker control messages (tags being set, etc)?
151 Discard mails matching:
153 ^X-GNU-PR-Message: (transcript|closed)
155 ** Not receiving messages in response to your control commands?
156 The messages debbugs sends out in response to control-server commands
157 always have headers To: your@email, and Cc: tracker@debbugs.gnu.org
158 (the latter is an alias for the emacs-bug-tracker mailing list).
159 These are also the addresses to which a copy of the response is sent.
160 (In general, there need not be any relation between the To: and Cc:
161 headers visible in a message and where debbugs actually sends it.)
162 If you used an X-Debbugs-No-Ack header, however, a copy is _not_ sent
163 to you, but the To: header is unchanged.  If you are subscribed to the
164 emacs-bug-tracker mailing list and have duplicate suppression turned
165 on, the presence of your address in the To: header will cause Mailman
166 to not send you a list copy, because it thinks you have received a
167 direct copy.  If you used X-Debbugs-No-Ack, this is not the case, and
168 you won't get any copy at all.  If this bothers you, don't use both
169 X-Debbugs-No-Ack and Mailman duplicate suppression for the
170 emacs-bug-tracker mailing list, just pick one or the other.
172 ** How to avoid multiple copies of mails.
173 If you reply to reports in the normal way, this should work fine.
174 Basically, reply only to the numbered bug address (and any individual
175 people's addresses). Do not send mail direct to bug-gnu-emacs or
176 emacs-pretest-bug unless you are reporting a new bug.
178 ** To close bug #123 (for example), send mail
180 To: 123-done@debbugs.gnu.org
182 with a brief explanation in the body as to why the bug was closed.
183 There is no need to cc the address without the "-done" part or the
184 submitter; they get copies anyway so this will just result in more
185 duplicate mail.
187 ** Details of closing a bug.
188 (For information only)
189 Sending a mail to 123-done does the following:
191 1) Mark the bug as closed in the database.
193 2) Send a mail to the original submitter telling them that their bug
194 has been closed.  This mail has a header:
196 X-GNU-PR-Message: they-closed 123
198 3) Send a mail to you and to the emacs-bug-tracker list confirming
199 that the bug has been closed.  This mail has a header:
201 X-GNU-PR-Message: closed 123
203 4) Send a copy of your mail to the bug-gnu-emacs list in exactly the
204 same way as if you had sent mail to "123" (sans -done). This mail has
205 headers:
207 X-GNU-PR-Message: cc-closed 123
208 Mail-Followup-To: 123@debbugs.gnu.org, person-who-closed
210 (This is Emacs-specific.  Normally the bug list gets the same mail as in 3).
212 ** Setting bug parameters.
213 There are two ways to set the parameters of bugs in the database
214 (tags, severity level, etc).  When you report a new bug, you can
215 provide a "pseudo-header" at the start of the report, eg:
217 Package: emacs
218 Version: 23.0.60
219 Severity: minor
221 This can also include tags.  Some things (e.g. submitter) don't seem to
222 work here.
224 Otherwise, send mail to the control server, control@debbugs.gnu.org.
225 At the start of the message body, supply the desired commands, one per
226 line:
228 command bug-number [arguments]
230 quit|stop|thank|thanks|thankyou|thank you
232 The control server ignores anything after the last line above.  So you
233 can place control commands at the beginning of a reply to a bug
234 report, and Bcc: the control server (note the commands have no effect
235 if you just send them to the bug-report number).  Bcc: is better than Cc:
236 in case people use Reply-to-All in response.
238 Some useful control commands:
240 *** To reopen a closed bug:
241 reopen 123
243 *** Bugs can be tagged in various ways (eg wontfix, patch, etc).
244 The available tags are:
245 patch wontfix moreinfo unreproducible fixed notabug
246 See http://debbugs.gnu.org/Developer#tags
247 The list of tags can be prefixed with +, - or =, meaning to add (the
248 default), remove, or reset the tags. E.g.:
250 tags 123 + wontfix
252 ** URL shortcuts
254 http://debbugs.gnu.org/...
256 123             # given bug number
257 123;mbox=yes    # mbox version of given bug
258 package         # bugs in given package
259 from:submitter@email.address
260 severity:severity      # all bugs of given severity
261 tag:tag                # all bugs with given tag
263 ** Usertags
265 See <http://wiki.debian.org/bugs.debian.org/usertags>
267 "Usertags" are very similar to tags: a set of labels that can be added
268 to a bug.  There are two differences between normal tags and user tags:
270 1) Anyone can define any valid usertag they like.  In contrast, only a
271 limited, predefined set of normal tags are available (see above).
273 2) A usertag is associated with a specific email address.
275 You set usertags in the same way as tags, by talking to the control
276 server.  One difference is that you can also specify the associated
277 email address.  If you don't explicitly specify an address, then it
278 will use the one from which you send the control message. The address
279 must have the form of an email address (with an "@" sign and least 4
280 characters after the "@").
282 *** Setting usertags
284 a) In a control message:
286 user bug-gnu-emacs@gnu.org
287 usertags 1234 any-tag-you-like
289 This will add a usertag "any-tag-you-like" to bug 1234.  The tag will
290 be associated with the address "bug-gnu-emacs@gnu.org".  If you omit
291 the first line, the tag will be associated with your email address.
293 The syntax of the usertags command is the same as that of tags (eg wrt
294 the optional [=+-] argument).
296 b) In an initial submission, in the pseudo-header:
298 User: bug-gnu-emacs@gnu.org
299 Usertags: a-new-tag
301 Again, the "User" is optional.
303 *** Searching by usertags
305 The search interface is not as advanced as for normal tags.  You need
306 to construct the relevant url yourself rather than just typing in a
307 search box.  The only piece you really need to add is the "users"
308 portion, the rest has the same syntax as normal.
310 **** To browse bugs by usertag:
311 http://debbugs.gnu.org/cgi/pkgindex.cgi?indexon=users
313 **** To find all bugs usertagged by a given email address:
315 http://debbugs.gnu.org/cgi/pkgreport.cgi?users=bug-gnu-emacs@gnu.org
317 (Supposedly, the "users" field can be a comma-separated list of more
318 than one email address, but it does not seem to work for me.)
320 **** To find bugs tagged with a specific usertag:
322 This works just like a normal tags search, but with the addition of a
323 "users" field.  Eg:
325 http://debbugs.gnu.org/cgi/pkgreport.cgi?users=bug-gnu-emacs@gnu.org;tag=calendar
327 *** To merge bugs:
328 Eg when bad replies create a bunch of new bugs for the same report.
329 Bugs must all be in the same state (e.g. same package(s) and severity
330 -- see `reassign' and `severity' below), but need not have the same
331 tags (tags are merged). E.g.:
333 merge 123 124 125 ...
335 Note that merging does not affect titles.  In particular, a "retitle"
336 of merged bugs only affects individual bugs, not all of them.
338 *** Forcing a merge:
339 Like `merge', but bugs need not be in the same state.  The packages
340 must still match though (see `reassign' below).  The first one listed
341 is the master.  E.g.:
343 forcemerge 123 124 125 ...
345 Note: you cannot merge with an archived bug - you must unarchive it first.
347 *** To unmerge bugs:
348 To disconnect a bug from all bugs it is merged with:
350 unmerge 123
352 This command accepts only one bug number.
354 *** To clone bugs:
355 Useful when one report refers to more than one bug.
357 clone 123 -1 [-2 ...]
358 retitle -1 second bug
359 retitle -2 third bug
361 The negative numbers provide a way to refer to the cloned bugs (which
362 will be assigned proper numbers).
364 NB you cannot clone a merged bug.  You'd think that trying to do so
365 would just give you an unmerged copy of the specified bug number, but no:
367 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=474742
369 You must unmerge, clone, then re-merge.
371 *** To set severity:
372 severity 123 critical|grave|serious|important|normal|minor|wishlist
374 See http://debbugs.gnu.org/Developer#severities for the meanings.
376 *** To set the owner of a bug:
377 owner 123 A Hacker <none@example.com>
379 The shorthand `!' means your own address.
381 *** To remove the owner of a bug:
382 noowner 123
384 *** To mark a bug as fixed in a particular version:
385 fixed 123 23.0.60
387 *** To remove a "fixed" mark:
388 notfixed 123 23.0.60
390 *** To make a bug as present in a particular version:
391 found 123 23.2
392 NB if there is no specified "fixed" version, or if there is one and it
393 is earlier than the found version, this reopens a closed bug.
395 The leading "23.1;" that M-x report-emacs-bug adds to bug subjects
396 automatically sets a found version (if none is explicitly specified).
398 *** To assign or reassign a bug to a package or list of packages:
399 reassign 1234 emacs
401 Note that reassigning clears the list of found versions, even if the
402 new packages includes the original one.
404 ** To remove spam from the tracker, move it to the `spam' pseudo-package:
405 reassign 123 spam
407 (Should not be necessary any more, now that the input is moderated.)
409 ** To change the title of a bug:
410 retitle 123 Some New Title
412 ** To change the submitter address:
413 submitter 123 none@example.com
415 Note that it does not seem to work to specify "Submitter:" in the
416 pseudo-header when first reporting a bug.
418 ** How does archiving work?
419 You can still send mail to a bug after it is closed.  After 28 days with
420 no activity, the bug is archived, at which point no more changes can
421 be made.  If you try to send mail to the bug after that (or merge with
422 it), it will be rejected.  To make any changes, you must unarchive it first:
424 unarchive 123
426 The bug will be re-archived after the next 28 day period of no activity.
428 ** The web-page with the list of bugs is slow to load
430 It's a function of the number of displayed bugs.  You can speed things
431 up by only looking at the newest 100 bugs:
432 http://debbugs.gnu.org/cgi-bin/pkgreport.cgi?newest=100;package=emacs
434 Or use the static index:
435 http://debbugs.gnu.org/db/ix/full.html
437 ** What are those "mbox folder" links on the bug report pages?
439 "mbox folder" = messages as they arrived at the tracker
441 "status mbox" = as above, but with a fake message at the start
442     summarizing the bug status
444 "maintainer mbox" = messages as sent out from the tracker to the
445     maintainers (ie, bug-gnu-emacs).  These have some changed headers
446     (Resent-*, Subject, etc).
448 ** What do the pkgreport.cgi sort options mean?
450 "normal" = by open/closed status, then severity, then tag, then bug number
452 "oldview" = as above, but without the tag part
454 "age" = as normal, but sort in decreasing order of last modification
455 time, rather than by increasing bug number
457 "raw" = ?
459 ** ChangeLog issues
461 *** When you fix a bug, it can be helpful to put the bug number in the
462 ChangeLog entry, for example:
464    * foo.el (foofunc): Fix the `foo' case.  (Bug#123)
466 Then the relevant bug can be found for easy reference.  If it's an
467 obvious fix (e.g. a typo), there's no need to clutter the log with the
468 bug number.
470 Similarly, when you close a bug, it can be helpful to include the
471 relevant ChangeLog entry in the message to the bug tracker, so people
472 can see exactly what the fix was.
474 *** bug-reference-mode
476 Activate `bug-reference-mode' in ChangeLogs to get clickable links to
477 the bug web-pages.
479 *** Debian stuff
481 http://lists.gnu.org/archive/html/emacs-devel/2009-11/msg00440.html
483 ** Bazaar stuff
485 *** You can use `bzr commit --fixes debbugs:123' to mark that a commit fixes
486 Emacs bug 123.  You will first need to add a line to one of your
487 configuration files, ~/.bazaar/bazaar.conf or ~/.bazaar/locations.conf:
489 bugtracker_debbugs_url = http://debbugs.gnu.org/{id}
491 Here "{id}" is a literal string, a placeholder that will be replaced
492 by the bug number you specify after `--fixes debbugs:' in the bzr
493 command line (123 in the example above).
495 In the bazaar.conf file, this setting should go into the [DEFAULT]
496 section.
498 In the locations.conf file, it should go into the branch-specific
499 configuration section for the branch where you want this to be in
500 effect.  For example, if you want this to be in effect for the branch
501 located at `/home/projects/emacs/trunk', you need to have this in your
502 ~/.bazaar/locations.conf file:
504 [/home/projects/emacs/trunk]
505 bugtracker_debbugs_url = http://debbugs.gnu.org/{id}
507 If you want to use this in all Emacs branches whose common parent is
508 `/home/projects/emacs', put the setting in the [/home/projects/emacs]
509 section.  See "bzr help configuration" for more information about
510 the *.conf files, their location and formats.  See "bzr help bugs" for
511 more information about the bugtracker_debbugs_url setting.
513 See also log-edit-rewrite-fixes in .dir-locals.el.
515 Note that all this does is add some metadata to the commit, it doesn't
516 actually mark the bug as closed in the tracker.  You can see this
517 information with `bzr log', and it will show up as a link in a recent
518 loggerhead installation, or with some of the graphical frontends to
519 `bzr log'.
521 ** Gnus-specific voodoo
523 *** Put point on a bug-number and try: M-x gnus-read-ephemeral-emacs-bug-group
525 *** If the above is not available:
526 (add-hook 'gnus-article-mode-hook
527           (lambda ()
528              (setq bug-reference-url-format "http://debbugs.gnu.org/%s")
529               (bug-reference-mode 1)))
531 and you can click on the bug number in the subject header.
534 * Technical Notes
536 The following are technical notes on how it works.  These are just for
537 reference, you don't need to read these as a user of the system.
539 Getting mail from the Emacs bug list into the tracker requires the
540 assistance of sysadmin at gnu.org.  The test tracker set-up was, I
541 think, [gnu.org #359140]:
542 http://lists.gnu.org/archive/html/savannah-hackers/2008-03/msg00074.html
543 http://lists.gnu.org/archive/html/savannah-hackers/2008-04/msg00034.html
545 ** The debbugs.gnu.org setup was handled in [gnu.org #510605].
546 There are two pieces (replace AT with @ in the following):
548 i) fencepost has an /etc/aliases entry:
549 emacs-pretest-bug: submit AT debbugs.gnu.org
551 ii) An exim router:
552 emacsbugs_router:
553   driver = redirect
554   senders = !Debian-debbugs AT debbugs.gnu.org
555   local_parts = bug-gnu-emacs
556   domains = gnu.org
557   data = submit AT debbugs.gnu.org
559 This says, for mail arriving at bug-gnu-emacs, only allow it through
560 to the list if it was sent from debbugs.gnu.org.  Otherwise, send
561 it to the submit address at the bug-tracker.
563 FIXME There's probably an issue with the mail-news gateway here that
564 still needs to be addressed (bug#936).
566 ** fencepost's /etc/exim4/local_domains configuration needs a line
567 !debbugs.gnu.org adding [gnu.org #503532].  Otherwise people on
568 fencepost can't report bugs, since *.gnu.org addresses are assumed to
569 be handled locally on fencepost, unless otherwise specified.
571 ** All mail arriving at debbugs.gnu.org is first run through SpamAssassin.
572 Obvious spam is rejected, the rest is sent on to the moderated list
573 debbugs-submit.  Approved mail is passed on to the tracker.
574 (Note this means that messages may appear out of sequence in the
575 tracker, since mail from whitelisted senders goes straight through.)
577 NOTE: An alternative to this would be to use listhelper AT nongnu.org
578 as a moderator address.  Eg the emacs-bug-tracker list uses this.
579 It does basic spam processing on the moderator requests and
580 automatically rejects the obviously bogus ones.  Someone still has to
581 accept the good ones though.  The advantage of this would not be having
582 to run and tune our own spam filter.  See
583 http://savannah.nongnu.org/projects/listhelper
585 An "X-Debbugs-Envelope-To" header is used to keep track of where the
586 mail was actually bound for:
587 http://lists.gnu.org/archive/html/emacs-devel/2009-11/msg01211.html
589 ** Mailing list recipient/sender filters.
590 The following mailman filters are useful to stop messages being
591 needlessly held for moderation:
593 *** debbugs-submit
594 (quiet|control|submit)@(debbugs\.gnu\.org|emacsbugs\.donarmstrong\.com)
595 [0-9]+(-done|-quiet|-subscribe)?@(debbugs\.gnu\.org|emacsbugs\.donarmstrong\.com)
596 (bug-gnu-emacs|emacs-pretest-bug|bug-(e|gnu)macs)@gnu\.org
598 bug-emacs and bug-gnumacs are lesser-used aliases from fencepost's
599 /etc/aliases file.
601 *** emacs-bug-tracker
602 sender: bug-gnu-emacs AT gnu.org
603 recipient: emacs-bug-tracker AT debbugs\.gnu\.org
605 The latter is because that is the address that debbugs actually sends to.
606 An /etc/aliases entry redirects it to the real emacs-bug-tracker address.
608 ** Recovering from moderation mistakes
610 All discarded messages are stored in /var/lib/mailman/spam.
611 If a non-spam message accidentally gets discarded, just do:
613 cat /var/lib/mailman/spam/not-really-spam.msg | /usr/lib/debbugs/receive
614 chown Debian-debbugs:Debian-debbugs /var/lib/debbugs/spool/incoming/*
615 ... check it works ...
616 mv /var/lib/mailman/spam/not-really-spam.msg /var/lib/mailman/not-spam/
618 Also check that the sender was not added to the auto-discard/reject list
619 in the debbugs-submit Mailman interface.
621 ** Administrivia
623 The debbugs-submit list should have the administrivia option off,
624 else it can by mistake filter out requests to subscribe to bugs.
625 But, this feature doesn't work anyway (see bug#5439).
627 ** How to test changes
629 Add an entry to /etc/debbugs/Maintainers like:
631 mytest       my.email.address
633 Then if you do all your testing with 'Package: mytest', the resulting
634 mails should only go to your email address.
636 ** Adding new tags
638 Add them to @gTags in /etc/debbugs/config.
639 I think you also have to add them to 'tags' and 'tags_single_letter'
640 in /usr/share/perl5/Debbugs/Config.pm.
641 And update /var/www/Developer.html with a description of what the tag means.
642 And the "valid tags" list in /var/www/index.html.