; doc/emacs/misc.texi (Network Security): Fix typo.
[emacs.git] / admin / notes / bugtracker
blobf3bc30455423aee51f95ac30de14514b014f92b1
1 NOTES ON THE EMACS BUG TRACKER   -*- outline -*-
3 The Emacs Bug Tracker can be found at https://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 (or
12 pseudo-header, see below) instead.
14 ** How do I comment on a bug?
15 Reply to a mail on the bug-gnu-emacs list in the normal way.
16 Or send a mail to 123@debbugs.gnu.org.
18 If the bug is old and closed, you may have to unarchive it first.
19 Send a mail to control@debbugs.gnu.org with
20 unarchive 123
21 on the first line of the body.
23 ** How do I close a bug?
24 Send a mail to 123-done@debbugs.gnu.org.  In the body, explain
25 why the bug is being closed.
27 ** How do I set bug meta-data?
28 By mailing commands to control@debbugs.gnu.org.  Place commands at the
29 start of the message body, one per line.
31 severity 123 serious|important|normal|minor|wishlist
32 tags 123 moreinfo|unreproducible|wontfix|patch
34 * More detailed information
36 For a list of all bugs, see https://debbugs.gnu.org/db/pa/lemacs.html
37 This is a static page, updated once a day.  There is also a dynamic
38 list, generated on request. This accepts various options, eg to see
39 the most recent bugs:
41 https://debbugs.gnu.org/cgi/pkgreport.cgi?newest=100
43 Or follow the links on the front page https://debbugs.gnu.org .
45 ** How do I report a bug in Emacs now?
46 The same way as you always did.  Send mail to bug-gnu-emacs@gnu.org,
47 or use M-x report-emacs-bug.
49 The only differences are:
51 i) Your report will be assigned a number and generate an automatic reply.
53 ii) Optionally, you can set some database parameters when you first
54 report a bug (see "Setting bug parameters" below).
56 iii) If you want to Cc someone, use X-Debbugs-Cc: (note this only
57 applies to _new_ reports, not followups).
59 Once your report is filed and assigned a number, it is sent out to the
60 bug mailing list.  In some cases, it may be appropriate to just file a
61 bug, without sending out a copy.  To do this, send mail to
62 quiet@debbugs.gnu.org.
64 ** How do I reply to an existing bug report?
65 Reply to 123@debbugs.gnu.org, replacing 123 with the number
66 of the bug you are interested in.  NB this only sends mail to the
67 bug-list, it does NOT send a Cc to the original bug submitter.
68 So you need to explicitly Cc him/her (and anyone else you like).
69 (This works the same way as all the Emacs mailing lists.  We generally
70 don't assume anyone who posts to a list is subscribed to it, so we
71 cc everyone on replies.)
73 (Many people think the submitter SHOULD be automatically subscribed
74 to subsequent discussion, but this does not seem to be implemented.
75 See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=37078
76 See also https://debbugs.gnu.org/5439 )
78 Do NOT send a separate copy to the bug list address, since this may
79 generate a new report.  The only time to send mail to the bug list
80 address is to create a new report.
82 Gnus users can add the following to message-dont-reply-to-names;
83 similarly with Rmail and rmail-dont-reply-to-names:
85 "\\(emacs-pretest-bug\\|bug-gnu-emacs\\|bug-\\(e\\|gnu\\)macs\\)@gnu\\.org\\|\
86 \\(submit\\|control\\|owner\\)@debbugs\\.gnu\\.org"
88 The "owner@debbugs.gnu.org" entry is there because it appears in the
89 "Resent-To" header.  For a long time Rmail erroneously included such
90 headers in replies.  If you correspond with an Rmail user on a bug,
91 these addresses may end up in the Cc.  Mailing to them does nothing
92 but create duplicates and errors.  (It is possible, but unlikely, that
93 you might want to have a dialog with the owner address, outside of
94 normal bug reporting.)
96 ** When reporting a new bug, to send a Cc to another address
97 (e.g. bug-cc-mode@gnu.org), do NOT just use a Cc: header.
98 Instead, use "X-Debbugs-Cc:".  This ensures the Cc address(es) will get a
99 mail with the bug report number in.  If you do not do this, each reply
100 in the subsequent discussion might end up creating a new bug.
101 This is annoying.  (So annoying that a form of message-id tracking has
102 been implemented to hopefully stop this happening, but it is still
103 better to use X-Debbugs-Cc.)
105 If you want to send copies to more than one address, add them
106 comma-separated in only one X-Debbugs-Cc line.
108 Like any X-Debbugs- header, this one can also be specified in the
109 pseudo-header (see below), if your mail client does not let you add
110 "X-" headers.
112 If a new report contains X-Debbugs-Cc in the input, this is
113 converted to a real Cc header in the output.  (See Bug#1780,5384)
114 It is also merged into the Resent-Cc header (see below).
116 ** How does Debbugs send out mails?
118 The mails are sent out to the bug list by being resent.  The From:
119 header is unchanged.  In new reports only (at present), the To:
120 address is altered as follows.  Any "bug-gnu-emacs",
121 "emacs-pretest-bug", or "submit@debbugs" address is replaced by
122 123@debbugs in the mail that gets sent out.  (This also applies to any
123 Cc: header, though you should be using X-Debbugs-Cc instead in new
124 reports).  The original header is stored as X-Debbugs-Original-To, if
125 it was changed.  Any X-Debbugs-Cc is merged into the Cc.
127 Mails arriving at the bug list have the following Resent-* headers:
129 Resent-From: person who submitted the bug
130 Resent-To:   owner@debbugs.gnu.org
131 Resent-Cc:   maintainer email address, plus any X-Debbugs-Cc: entries
133 The "maintainer email address" is "bug-gnu-emacs@gnu.org" in most cases.
135 ** To not get acknowledgment mail from the tracker,
136 add an "X-Debbugs-No-Ack:" header (with any value).  If you use Gnus,
137 you can add an element to gnus-posting-styles to do this automatically, eg:
139 ("gnu-emacs\\(-pretest\\)?-bug"
140    ("X-Debbugs-No-Ack" "yes"))
142 (adjust the regexp according to the name you use for the bug lists)
144 ** To record a bug in the tracker without sending mail to the bug list.
145 This can be useful to make a note of something discussed on
146 emacs-devel that needs fixing.
148 To: quiet@debbugs.gnu.org
149 [headers end]
150 Package: emacs
151 Version: 23.0.60
152 Severity: minor
154 Remember to fix FOO, as discussed on emacs-devel at http://... .
156 ** Not interested in tracker control messages (tags being set, etc)?
157 Discard mails matching:
159 ^X-GNU-PR-Message: (transcript|closed)
161 ** Not receiving messages in response to your control commands?
162 The messages debbugs sends out in response to control-server commands
163 always have headers To: your@email, and Cc: tracker@debbugs.gnu.org
164 (the latter is an alias for the emacs-bug-tracker mailing list).
165 These are also the addresses to which a copy of the response is sent.
166 (In general, there need not be any relation between the To: and Cc:
167 headers visible in a message and where debbugs actually sends it.)
168 If you used an X-Debbugs-No-Ack header, however, a copy is _not_ sent
169 to you, but the To: header is unchanged.  If you are subscribed to the
170 emacs-bug-tracker mailing list and have duplicate suppression turned
171 on, the presence of your address in the To: header will cause Mailman
172 to not send you a list copy, because it thinks you have received a
173 direct copy.  If you used X-Debbugs-No-Ack, this is not the case, and
174 you won't get any copy at all.  If this bothers you, don't use both
175 X-Debbugs-No-Ack and Mailman duplicate suppression for the
176 emacs-bug-tracker mailing list, just pick one or the other.
178 ** How to avoid multiple copies of mails.
179 If you reply to reports in the normal way, this should work fine.
180 Basically, reply only to the numbered bug address (and any individual
181 people's addresses). Do not send mail direct to bug-gnu-emacs or
182 emacs-pretest-bug unless you are reporting a new bug.
184 ** To close bug #123 (for example), send mail
186 To: 123-done@debbugs.gnu.org
188 with a brief explanation in the body as to why the bug was closed.
189 There is no need to cc the address without the "-done" part or the
190 submitter; they get copies anyway so this will just result in more
191 duplicate mail.
193 ** Details of closing a bug.
194 (For information only)
195 Sending a mail to 123-done does the following:
197 1) Mark the bug as closed in the database.
199 2) Send a mail to the original submitter telling them that their bug
200 has been closed.  This mail has a header:
202 X-GNU-PR-Message: they-closed 123
204 3) Send a mail to you and to the emacs-bug-tracker list confirming
205 that the bug has been closed.  This mail has a header:
207 X-GNU-PR-Message: closed 123
209 4) Send a copy of your mail to the bug-gnu-emacs list in exactly the
210 same way as if you had sent mail to "123" (sans -done). This mail has
211 headers:
213 X-GNU-PR-Message: cc-closed 123
214 Mail-Followup-To: 123@debbugs.gnu.org, person-who-closed
216 (This is Emacs-specific.  Normally the bug list gets the same mail as in 3).
218 ** Setting bug parameters.
219 There are two ways to set the parameters of bugs in the database
220 (tags, severity level, etc).  When you report a new bug, you can
221 provide a "pseudo-header" at the start of the report, eg:
223 Package: emacs
224 Version: 23.0.60
225 Severity: minor
227 This can also include tags, or any X-Debbugs- setting.
228 Some things (e.g. submitter) don't seem to work here.
230 Otherwise, send mail to the control server, control@debbugs.gnu.org.
231 At the start of the message body, supply the desired commands, one per
232 line:
234 command bug-number [arguments]
236 quit|stop|thank|thanks|thankyou|thank you
238 The control server ignores anything after the last line above.  So you
239 can place control commands at the beginning of a reply to a bug
240 report, and Bcc: the control server (note the commands have no effect
241 if you just send them to the bug-report number).  Bcc: is better than Cc:
242 in case people use Reply-To-All in response.
244 Some useful control commands:
246 *** To reopen a closed bug:
247 reopen 123
249 *** Bugs can be tagged in various ways (eg wontfix, patch, etc).
250 The available tags are:
251 patch wontfix moreinfo unreproducible fixed notabug
252 See https://debbugs.gnu.org/Developer#tags
253 The list of tags can be prefixed with +, - or =, meaning to add (the
254 default), remove, or reset the tags. E.g.:
256 tags 123 + wontfix
258 ** URL shortcuts
260 https://debbugs.gnu.org/...
262 123             # given bug number
263 123;mbox=yes    # mbox version of given bug
264 package         # bugs in given package
265 from:submitter@email.address
266 severity:severity      # all bugs of given severity
267 tag:tag                # all bugs with given tag
269 ** Usertags
271 See <http://wiki.debian.org/bugs.debian.org/usertags>
273 "Usertags" are very similar to tags: a set of labels that can be added
274 to a bug.  There are two differences between normal tags and user tags:
276 1) Anyone can define any valid usertag they like.  In contrast, only a
277 limited, predefined set of normal tags are available (see above).
279 2) A usertag is associated with a specific user.  This is normally
280 an email address (with an "@" sign and least 4 characters after the "@"),
281 but on debbugs.gnu.org, the definition is less strict - anything with
282 5 or more alphanumeric characters will work.  For personal tags,
283 using an email address is still recommended.  Please only use the
284 "emacs" user, or other short users, for "official" tags.
286 You set usertags in the same way as tags, by talking to the control server.
287 One difference is that you can also specify the associated user.
288 If you don't explicitly specify a user, then it will use the email
289 address from which you send the control message.
291 *** Setting usertags
293 a) In a control message:
295 user emacs      # or email@example.com
296 usertags 1234 any-tag-you-like
298 This will add a usertag "any-tag-you-like" to bug 1234.  The tag will
299 be associated with the user "emacs".  If you omit the first line,
300 the tag will be associated with your email address.
302 The syntax of the usertags command is the same as that of tags (eg wrt
303 the optional [=+-] argument).
305 b) In an initial submission, in the pseudo-header:
307 User: emacs
308 Usertags: a-new-tag
310 Again, the "User" is optional.
312 *** Searching by usertags
314 The search interface is not as advanced as for normal tags.  You need
315 to construct the relevant url yourself rather than just typing in a
316 search box.  The only piece you really need to add is the "users"
317 portion, the rest has the same syntax as normal.
319 **** To browse bugs by usertag:
320 https://debbugs.gnu.org/cgi/pkgindex.cgi?indexon=users
322 **** To find all bugs usertagged by a given email address:
324 https://debbugs.gnu.org/cgi/pkgreport.cgi?users=emacs
326 (Supposedly, the "users" field can be a comma-separated list of more
327 than one email address, but it does not seem to work for me.)
329 **** To find bugs tagged with a specific usertag:
331 This works just like a normal tags search, but with the addition of a
332 "users" field.  Eg:
334 https://debbugs.gnu.org/cgi/pkgreport.cgi?users=emacs;tag=calendar
336 *** To merge bugs:
337 Eg when bad replies create a bunch of new bugs for the same report.
338 Bugs must all be in the same state (e.g. same package(s) and severity
339 -- see 'reassign' and 'severity' below), but need not have the same
340 tags (tags are merged). E.g.:
342 merge 123 124 125 ...
344 Note that merging does not affect titles.  In particular, a "retitle"
345 of merged bugs only affects individual bugs, not all of them.
347 *** Forcing a merge:
348 Like 'merge', but bugs need not be in the same state.  The packages
349 must still match though (see 'reassign' below).  The first one listed
350 is the master.  E.g.:
352 forcemerge 123 124 125 ...
354 Note: you cannot merge with an archived bug - you must unarchive it first.
356 *** To unmerge bugs:
357 To disconnect a bug from all bugs it is merged with:
359 unmerge 123
361 This command accepts only one bug number.
363 *** To clone bugs:
364 Useful when one report refers to more than one bug.
366 clone 123 -1 [-2 ...]
367 retitle -1 second bug
368 retitle -2 third bug
370 The negative numbers provide a way to refer to the cloned bugs (which
371 will be assigned proper numbers).
373 NB you cannot clone a merged bug.  You'd think that trying to do so
374 would just give you an unmerged copy of the specified bug number, but no:
376 http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=474742
378 You must unmerge, clone, then re-merge.
380 *** To set severity:
381 severity 123 critical|grave|serious|important|normal|minor|wishlist
383 See https://debbugs.gnu.org/Developer#severities for the meanings.
385 *** To set the owner of a bug:
386 owner 123 A Hacker <none@example.com>
388 The shorthand '!' means your own address.
390 *** To remove the owner of a bug:
391 noowner 123
393 *** To mark a bug as fixed in a particular version:
394 fixed 123 23.0.60
396 *** To remove a "fixed" mark:
397 notfixed 123 23.0.60
399 *** To make a bug as present in a particular version:
400 found 123 23.2
401 NB if there is no specified "fixed" version, or if there is one and it
402 is earlier than the found version, this reopens a closed bug.
404 The leading "23.1;" that M-x report-emacs-bug adds to bug subjects
405 automatically sets a found version (if none is explicitly specified).
407 *** To assign or reassign a bug to a package or list of packages:
408 reassign 1234 emacs
410 Note that reassigning clears the list of found versions, even if the
411 new packages includes the original one.
413 ** To remove spam from the tracker, move it to the 'spam' pseudo-package:
414 reassign 123 spam
416 (Should not be necessary any more, now that the input is moderated.)
418 ** To change the title of a bug:
419 retitle 123 Some New Title
421 ** To change the submitter address:
422 submitter 123 none@example.com
424 Note that it does not seem to work to specify "Submitter:" in the
425 pseudo-header when first reporting a bug.
427 ** How does archiving work?
428 You can still send mail to a bug after it is closed.  After 28 days with
429 no activity, the bug is archived, at which point no more changes can
430 be made.  If you try to send mail to the bug after that (or merge with
431 it), it will be rejected.  To make any changes, you must unarchive it first:
433 unarchive 123
435 The bug will be re-archived after the next 28 day period of no activity.
437 ** The web-page with the list of bugs is slow to load
439 It's a function of the number of displayed bugs.  You can speed things
440 up by only looking at the newest 100 bugs:
441 https://debbugs.gnu.org/cgi-bin/pkgreport.cgi?newest=100;package=emacs
443 Or use the static index:
444 https://debbugs.gnu.org/db/ix/full.html
446 ** What are those "mbox folder" links on the bug report pages?
448 "mbox folder" = messages as they arrived at the tracker
450 "status mbox" = as above, but with a fake message at the start
451     summarizing the bug status
453 "maintainer mbox" = messages as sent out from the tracker to the
454     maintainers (ie, bug-gnu-emacs).  These have some changed headers
455     (Resent-*, Subject, etc).
457 ** What do the pkgreport.cgi sort options mean?
459 "normal" = by open/closed status, then severity, then tag, then bug number
461 "oldview" = as above, but without the tag part
463 "age" = as normal, but sort in decreasing order of last modification
464 time, rather than by increasing bug number
466 "raw" = ?
468 ** Change log issues
470 *** When you fix a bug, it can be helpful to put the bug number in the
471 change log entry, for example:
473    * lisp/menu-bar.el (menu-set-font): Doc fix.  (Bug#21303)
475 Then the relevant bug can be found for easy reference.  If it's an
476 obvious fix (e.g., a typo), there's no need to clutter the log with the
477 bug number.
479 Similarly, when you close a bug, it can be helpful to include the
480 relevant change log entry in the message to the bug tracker, so people
481 can see exactly what the fix was.
483 *** bug-reference-mode
485 Activate 'bug-reference-mode' in ChangeLogs to get clickable links to
486 the bug web-pages.
488 *** Debian stuff
490 https://lists.gnu.org/r/emacs-devel/2009-11/msg00440.html
492 ** Gnus-specific voodoo
494 *** Put point on a bug-number and try: M-x gnus-read-ephemeral-emacs-bug-group
496 *** If the above is not available:
497 (add-hook 'gnus-article-mode-hook
498           (lambda ()
499              (setq bug-reference-url-format "https://debbugs.gnu.org/%s")
500               (bug-reference-mode 1)))
502 and you can click on the bug number in the subject header.
505 * Technical Notes
507 The following are technical notes on how it works.  These are just for
508 reference, you don't need to read these as a user of the system.
510 Getting mail from the Emacs bug list into the tracker requires the
511 assistance of sysadmin at gnu.org.  The test tracker set-up was, I
512 think, [gnu.org #359140]:
513 https://lists.gnu.org/r/savannah-hackers/2008-03/msg00074.html
514 https://lists.gnu.org/r/savannah-hackers/2008-04/msg00034.html
516 ** The debbugs.gnu.org setup was handled in [gnu.org #510605].
517 There are two pieces (replace AT with @ in the following):
519 i) fencepost has an /etc/aliases entry:
520 emacs-pretest-bug: submit AT debbugs.gnu.org
522 ii) An exim router:
523 emacsbugs_router:
524   driver = redirect
525   senders = !Debian-debbugs AT debbugs.gnu.org
526   local_parts = bug-gnu-emacs
527   domains = gnu.org
528   data = submit AT debbugs.gnu.org
530 This says, for mail arriving at bug-gnu-emacs, only allow it through
531 to the list if it was sent from debbugs.gnu.org.  Otherwise, send
532 it to the submit address at the bug-tracker.
534 FIXME There's probably an issue with the mail-news gateway here that
535 still needs to be addressed (bug#936).
537 ** fencepost's /etc/exim4/local_domains configuration needs a line
538 !debbugs.gnu.org adding [gnu.org #503532].  Otherwise people on
539 fencepost can't report bugs, since *.gnu.org addresses are assumed to
540 be handled locally on fencepost, unless otherwise specified.
542 ** All mail arriving at debbugs.gnu.org is first run through SpamAssassin.
543 Obvious spam is rejected, the rest is sent on to the moderated list
544 debbugs-submit.  Approved mail is passed on to the tracker.
545 (Note this means that messages may appear out of sequence in the
546 tracker, since mail from whitelisted senders goes straight through.)
548 NOTE: An alternative to this would be to use listhelper AT nongnu.org
549 as a moderator address.  Eg the emacs-bug-tracker list uses this.
550 It does basic spam processing on the moderator requests and
551 automatically rejects the obviously bogus ones.  Someone still has to
552 accept the good ones though.  The advantage of this would not be having
553 to run and tune our own spam filter.  See
554 https://savannah.nongnu.org/projects/listhelper
556 An "X-Debbugs-Envelope-To" header is used to keep track of where the
557 mail was actually bound for:
558 https://lists.gnu.org/r/emacs-devel/2009-11/msg01211.html
560 ** Mailing list recipient/sender filters.
561 The following mailman filters are useful to stop messages being
562 needlessly held for moderation:
564 *** debbugs-submit
565 (quiet|control|submit)@(debbugs\.gnu\.org|emacsbugs\.donarmstrong\.com)
566 [0-9]+(-done|-quiet|-subscribe)?@(debbugs\.gnu\.org|emacsbugs\.donarmstrong\.com)
567 (bug-gnu-emacs|emacs-pretest-bug|bug-(e|gnu)macs)@gnu\.org
569 bug-emacs and bug-gnumacs are lesser-used aliases from fencepost's
570 /etc/aliases file.
572 *** emacs-bug-tracker
573 sender: bug-gnu-emacs AT gnu.org
574 recipient: emacs-bug-tracker AT debbugs\.gnu\.org
576 The latter is because that is the address that debbugs actually sends to.
577 An /etc/aliases entry redirects it to the real emacs-bug-tracker address.
579 ** Recovering from moderation mistakes
581 All discarded messages are stored in /var/lib/mailman/spam.
582 If a non-spam message accidentally gets discarded, just do:
584 /usr/lib/debbugs/receive < /var/lib/mailman/spam/not-really-spam.msg
585 chown Debian-debbugs:Debian-debbugs /var/lib/debbugs/spool/incoming/*
586 ... check it works ...
587 mv /var/lib/mailman/spam/not-really-spam.msg /var/lib/mailman/not-spam/
589 Also check that the sender was not added to the auto-discard/reject list
590 in the debbugs-submit Mailman interface.
592 If you don't have the actual mail, just the mailman moderation mail
593 version of it, you need to extract the original mail, and add the
594 following headers:
596 1) The leading envelope From line.
597 2) Message-ID (get it from /var/log/mailman/vette).
598 3) X-Debbugs-Envelope-To: xxx
599 For a new report, xxx = submit; for a control message, xxx = control;
600 for a reply to bug#123, xxx = 123
602 Then pipe it to receive as above.
604 ** Administrivia
606 The debbugs-submit list should have the administrivia option off,
607 else it can by mistake filter out requests to subscribe to bugs.
608 But, this feature doesn't work anyway (see bug#5439).
610 ** How to test changes
612 Add an entry to /etc/debbugs/Maintainers like:
614 mytest       my.email.address
616 Then if you do all your testing with 'Package: mytest', the resulting
617 mails should only go to your email address.
619 ** Adding new tags
621 Add them to @gTags in /etc/debbugs/config.
622 I think you also have to add them to 'tags' and 'tags_single_letter'
623 in /usr/share/perl5/Debbugs/Config.pm.
624 And update /var/www/Developer.html with a description of what the tag means.
625 And the "valid tags" list in /var/www/index.html.
627 ** Backups
629 The FSF sysadmins handle multi-generational backups of the filesystem
630 on debbugs.gnu.org.  But if you really want to have your own backup of
631 the bug database, you can use rsync (this requires login access to
632 debbugs.gnu.org):
634  rsync -azvv -e ssh USER@debbugs.gnu.org:/var/lib/debbugs/ DEST
636 Note that this occupies well over 1G of disk space.