]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/contributor/issues.itexi
CG: move "finding reg. commits" into Reg chapter.
[lilypond.git] / Documentation / contributor / issues.itexi
1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @node Issues
3 @chapter Issues
4
5 This chapter deals with defects, feature requests, and
6 miscellaneous development tasks.
7
8 @menu
9 * Introduction to issues::
10 * Bug Squad setup::
11 * Bug Squad checklists::
12 * Issue classification::
13 * Adding issues to the tracker::
14 * Summary of project status::
15 @end menu
16
17
18 @node Introduction to issues
19 @section Introduction to issues
20
21 @warning{Unless otherwise specified, all the tasks in this chapter
22 are @qq{simple} tasks: they can be done by a normal user with
23 nothing more than a web browser, email, and lilypond.}
24
25 @qq{Issues} isn't just a politically-correct term for @qq{bug}.
26 We use the same tracker for feature requests and code TODOs, so
27 the term @qq{bug} wouldn't be accurate.  Despite the difference
28 between @qq{issue} and @qq{bug}, we call our team of contributors
29 who organize issues the @emph{Bug Squad}.
30
31 The Bug Squad is mainly composed of non-programmers -- their job
32 is to @emph{organize} issues, not solve them.  Their duties
33 include removing false bug reports, ensuring that any real bug
34 report contains enough information for developers, and checking
35 that a developer's fix actually resolves the problem.
36
37 New volunteers for the Bug Squad should contact the
38 @ref{Meisters, Bug Meister}.
39
40
41 @node Bug Squad setup
42 @section Bug Squad setup
43
44 We highly recommend that you configure your email to use effective
45 sorting; this can reduce your workload @emph{immensely}.  The
46 email folders names were chosen specifically to make them work if
47 you sort your folders alphabetically.
48
49 @enumerate
50
51 @item
52 Skim through every section of this chapter, @ref{Issues}.  Read in
53 detail any sections called @qq{Bug Squad...}, or any page linked
54 from @ref{Bug Squad checklists}.
55
56 @item
57 If you do not have one already, create a gmail account and send
58 the email address to the @ref{Meisters, Bug Meister}.
59
60 @item
61 Subscribe your gmail account to @code{bug-lilypond}.
62
63 @item
64 Configure your google code account:
65
66 @enumerate
67
68 @item
69 Wait until your gmail account is listed in:
70
71 @example
72 @uref{http://code.google.com/p/lilypond/people/list}
73 @end example
74
75 @item
76 Sign in to google code by clicking in the top-right corner of:
77
78 @example
79 @uref{http://code.google.com/p/lilypond/issues/list}
80 @end example
81
82 You cannot log if you have Google Sharing
83 @uref{http://www.googlesharing.net/} enabled.
84
85 @item
86 Go to your @qq{Profile}, and select @qq{Settings}.
87
88 @item
89 Scroll down to @qq{Issue change notification}, and make sure that
90 you have @emph{selected} @qq{If I starred the issue}.
91
92 @end enumerate
93
94 @item
95 Configure your email client:
96
97 @enumerate
98
99 @item
100 Any email sent with your gmail address in the @code{To:} or
101 @code{CC:} fields should go to a @code{bug-answers} folder.
102
103 When setting up your filtering rules, be aware that Google Code
104 might use different versions of your email address, such as ones
105 ending in @code{@@googlemail.com} or @code{@@gmail.com}.
106
107 @item
108 Any other email either from, or CC'd to,
109
110 @example
111 lilypond@@googlecode.com
112 @end example
113
114 @noindent
115 should go into a separate @code{bug-ignore} folder.  Alternately,
116 you may automatically delete these emails.
117
118 You will @strong{not read} these emails as part of your Bug Squad
119 duties.  If you are curious, go ahead and read them later, but it
120 does @strong{not} count as Bug Squad work.
121
122 @item
123 Any other email sent to (or CC'd to):
124
125 @example
126 bug-lilypond
127 @end example
128
129 @noindent
130 should go into a separate @code{bug-current} folder.
131
132 @end enumerate
133
134 @end enumerate
135
136
137 @node Bug Squad checklists
138 @section Bug Squad checklists
139
140 When you do Bug Squad work, start at the top of this page and work
141 your way down.  Stop when you've done 15 minutes.
142
143 Please use the email sorting described in @ref{Bug Squad setup}.
144 This means that (as Bug Squad members) you will only ever respond
145 to emails sent or CC'd to the @code{bug-lilypond} mailing list.
146
147
148 @subsubheading Emails to you personally
149
150 You are not expected to work on Bug Squad matters outside of your
151 15 minutes, but sometimes a confused user will send a bug report
152 (or an update to a report) to you personally.  If that happens,
153 please forward such emails to the @code{bug-lilypond} list so that
154 the currently-active Bug Squad member(s) can handle the message.
155
156
157 @subsubheading Daily schedule
158
159 The Bug Meister is omitted from the daily schedule.
160
161 @example
162 Sunday: Colin
163 Monday: Dmytro
164 Tuesday: James Bailey
165 Wednesday: Ralph
166 Thursday: Patrick
167 Friday: Urs
168 Saturday: Kieren
169 @end example
170
171
172 @subsubheading Emails to @code{bug-answers}
173
174 Some of these emails will be comments on issues that you added to
175 the tracker.
176
177 @itemize
178 If they are asking for more information, give the additional
179 information.
180
181 @item
182 If the email says that the issue was classified in some other
183 manner, read the rationale given and take that into account for
184 the next issue you add.
185
186 @item
187 Otherwise, move them to your @code{bug-ignore} folder.
188
189 @end itemize
190
191 Some of these emails will be discussions about Bug Squad work;
192 read those.
193
194
195 @subsubheading Emails to @code{bug-current}
196
197 Dealing with these emails is your main task.  Your job is to get
198 rid of these emails in the first method which is applicable:
199
200 @enumerate
201 @item
202 If the email has already been handled by a Bug Squad member (i.e.
203 check to see who else has replied to it), delete it.
204
205 @item
206 If the email is a question about how to use LilyPond, reply with
207 this response:
208
209 @example
210 For questions about how to use LilyPond, please read our
211 documentation available from:
212   @uref{http://lilypond.org/website/manuals.html}
213 or ask the lilypond-user mailing list.
214 @end example
215
216 @item
217 If the email mentions @qq{the latest git}, or any version number
218 that has not yet been officially released, forward it to
219 @code{lilypond-devel}.
220
221 @item
222 If a bug report is not in the form of a Tiny example, direct the
223 user to resubmit the report with this response:
224
225 @example
226 I'm sorry, but due to our limited resources for handling bugs, we
227 can only accept reports in the form of Tiny examples.  Please see
228 step 2 in our bug reporting guidelines:
229   @uref{http://lilypond.org/website/bug-reports.html}
230 @end example
231
232 @item
233 If anything is unclear, ask the user for more information.
234
235 How does the graphical output differ from what the user expected?
236 What version of lilypond was used (if not given) and operating
237 system (if this is a suspected cause of the problem)?  In short,
238 if you cannot understand what the problem is, ask the user to
239 explain more.  It is the user's responsibility to explain the
240 problem, not your responsibility to understand it.
241
242 @item
243 If the behavior is expected, the user should be told to read the
244 documentation:
245
246 @example
247 I believe that this is the expected behaviour -- please read our
248 documentation about this topic.  If you think that it really is a
249 mistake, please explain in more detail.  If you think that the
250 docs are unclear, please suggest an improvement as described by
251 @qq{Simple tasks -- Documentation} on:
252   @uref{http://lilypond.org/website/help-us.html}
253 @end example
254
255 @item
256 If the issue already exists in the tracker, send an email to that
257 effect:
258
259 @example
260 This issue has already been reported; you can follow the
261 discussion and be notified about fixes here:
262 @end example
263
264 @noindent
265 (copy+paste the google code issue URL)
266
267 @item
268 Accept the report as described in
269 @ref{Adding issues to the tracker}.
270
271 @end enumerate
272
273 All emails should be CC'd to the @code{bug-lilypond} list so that
274 other Bug Squad members know that you have processed the email.
275
276 @warning{There is no option for @qq{ignore the bug report} -- if
277 you cannot find a reason to reject the report, you must accept
278 it.}
279
280
281 @ignore
282 @c Try omitting this from Bug Squad duties
283
284 @subheading Updates / discussion about issues
285
286 We try to keep discussions about issues on the tracker, but
287 sometimes it spills over onto email.  If discussion has ended with
288 no patch / resolution and at least @strong{3 days} have passed,
289 then either:
290
291 @itemize
292
293 @item
294 Summarize the recent discussion on the tracker, and add a link to
295 the original discussion.
296
297 @item
298 Add the comment @qq{there was some technical discussion which I
299 could not understand}, and include a link to the original
300 discussion.
301
302 We do not expect Bug Squad members to be programmers, or even to
303 be moderately-skilled users.  Your job is to keep track of issue
304 reports; it is @emph{perfectly acceptable} to not understand
305 discussions between advanced users and/or developers.
306
307 @end itemize
308 @end ignore
309
310
311 @subheading Regular maintenance
312
313 After @strong{every release} (both stable and unstable):
314
315 @itemize
316
317 @item
318 Regression test comparison: if anything has changed suspiciously,
319 ask if it was deliberate.  The official comparison is online, at:
320
321 @c NOTE: leave this here.  In this case, it's worth duplicating
322 @c       the link.  -gp
323 @example
324 @uref{http://lilypond.org/test/}
325 @end example
326
327 More information is available from in
328 @ref{Precompiled regression tests}.
329
330
331 @item
332 Issues to verify: try to reproduce the bug with the latest
333 version; if you cannot reproduce the bug, mark the item
334 @qq{Verified} (i.e. @qq{the fix has been verified to work}).
335
336 @example
337 @uref{http://code.google.com/p/lilypond/issues/list?can=7}
338 @end example
339
340 A few (approximately 10%) of these fixed issues relate to the
341 build system or fundamental architecture changes; there is no way
342 for you to verify these.  Leave those issues alone; somebody else
343 will handle them.
344
345 @end itemize
346
347
348 @ignore
349 @c try omitting from daily tasks for now. -gp
350
351 Once every @strong{two weeks} or so:
352
353 @itemize
354
355 @item
356 Check for any incorrectly-classified items in the tracker.  This
357 generally just means looking at the grid to see any items without
358 a Type or Priority.
359
360 @item
361 Check for any items with @code{label:patch}.  If it's been more
362 than a week since the last action on the issue, send an email to
363 -devel to remind them about it.  If the patch was withdrawn for
364 more work, then remove the @code{patch} label.
365
366 @example
367 @uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:patch}
368 @end example
369
370 @end itemize
371
372
373 @subheading Irregular maintenance
374
375 @warning{These tasks are a lot of work; gathering more volunteers
376 to help is definitely recommended.  However, the Bug Squad should
377 handle the organization and training of new volunteers.}
378
379 Once every year or two:
380
381 @itemize
382
383 @item
384 Checking all regtests: although we have a system for checking the
385 regtests between two versions, occasionally a bug will slip
386 through the cracks.  It is therefore good to manually examine all
387 the regtests (compare the images to the text description).  More
388 information is available from in @ref{Regression tests}.
389
390
391 @item
392 Checking all issues: we try to mark each Issue @q{fixed} when we
393 fix it, but occasionally one or two issues will slip through the
394 cracks.  It is therefore good to check all Issues.  If you see the
395 same (broken) output as the initial report, then simply post a
396 @qq{Problem still exists in 2.x.y} message to the issue.
397
398 @end itemize
399
400 @end ignore
401
402
403 @node Issue classification
404 @section Issue classification
405
406 The Bug Squad should classify issues according to the guidelines
407 given by developers.  Every issue should have a Status, Type, and
408 Priority; the other fields are optional.
409
410 @subheading Status (mandatory)
411
412 Open issues:
413
414 @itemize
415
416 @item
417 New: the item was added by a non-member, despite numerous warnings
418 not to do this.  Should be reviewed by a member of the Bug Squad.
419
420 @item
421 Accepted: the Bug Squad added it, or reviewed the item.
422
423 @item
424 Started: a contributor is working on a fix.  Owner should change
425 to be this contributor.
426
427 @end itemize
428
429
430 Closed issues:
431
432 @itemize
433
434 @item
435 Invalid: issue should not have been added in the current state.
436
437 @item
438 Duplicate: issue already exists in the tracker.
439
440 @item
441 Fixed: a contributor claims to have fixed the bug.  The Bug
442 Squad should check the fix with the next official binary release
443 (not by compiling the source from git).  Owner should be set to
444 that contributor.
445
446 @item
447 Verified: Bug Squad has confirmed that the issue is closed.  This
448 means that nobody should ever need look at the report again -- if
449 there is any information in the issue that should be kept, open a
450 new issue for that info.
451
452 @end itemize
453
454
455 @subheading Owner (optional)
456
457 Newly-added issues should have @emph{no owner}.  When a
458 contributor indicates that he has Started or Fixed an item, he
459 should become the owner.
460
461
462 @subheading Type (mandatory)
463
464 The issue's Type should be the first relevant item in this list.
465
466 @itemize
467
468 @item
469 Type-Collision: overlapping notation.
470
471 @item
472 Type-Defect: a problem in the core program.  (the @code{lilypond}
473 binary, scm files, fonts, etc).
474
475 @item
476 Type-Documentation: inaccurate, missing, confusing, or desired
477 additional info.  Must be fixable by editing a texinfo, ly, or scm
478 file.
479
480 @item
481 Type-Build: problem or desired features in the build system.  This
482 includes the makefiles, stepmake, python scripts, and GUB.
483
484 @item
485 Type-Scripts: problem or desired feature in the non-build-system
486 scripts.  Mostly used for convert-ly, lilypond-book, etc.
487
488 @item
489 Type-Enhancement: a feature request for the core program.  The
490 distinction between enhancement and defect isn't extremely clear;
491 when in doubt, mark it as enhancement.
492
493 @item
494 Type-Other: anything else.
495
496 @end itemize
497
498
499 @subheading Priority (mandatory)
500
501 Currently, only Critical items will block a stable release.
502
503 @itemize
504
505 @item
506 Priority-Critical: LilyPond segfaults, a regression (see below)
507 against a previous stable version or a regression against a fix
508 developed for this version. This does not apply where the
509 @qq{regression} occurred because a feature was removed
510 deliberately - this is not a bug.
511
512 @item
513 Priority-High: An issue which produces output which does not
514 accurately reflect the input (e.g. where the user would expect
515 an accidental, but none is shown) or which produces aesthetically
516 poor output in a situation which could be expected to crop up
517 frequently in real-world music.  It should not be used where the
518 problem can be avoided with a simple workaround.  It can also
519 be used to flag where new code in a development version is not
520 functioning as it should.  This level is also used for issues
521 which produce no output and fail to give the user a clue about
522 what's wrong.
523
524 @item
525 Priority-Medium: Normal priority - use this as the default.
526
527 @item
528 Priority-Low: A minor problem which produces slightly undesirable
529 output, or which will only occur in contrived examples, or which
530 is very easily worked around.
531
532 @item
533 Priority-Postponed: no fix planned.  Generally used for things
534 which nobody wants to touch.
535
536 @end itemize
537
538 Note that these are initial classifications and can be subject
539 to change by others in the development team.  For example, a
540 regression against an old stable version which hasn't been
541 noticed for a long time and which is unlikely to get fixed could
542 be downgraded from Priority-Critical by one of the programmers.
543
544 @subheading Opsys (optional)
545
546 Issues that only affect specific operating systems.
547
548
549 @subheading Other items (optional)
550
551 Other labels:
552
553 @itemize
554
555 @item
556 Regression: it used to work intentionally in an earlier
557 stable release.  If the earlier output was accidental (i.e. we
558 didn't try to stop a collision, but it just so happened that two
559 grobs didn't collide), then breaking it does not count as a
560 regression.
561
562 To help decide whether the change is a regression, and therefore
563 should be Priority-Critical, please adopt the following process:
564
565 @enumerate
566
567 @item
568 Are you certain the change is OK?  If so, do nothing.
569
570 @item
571 Are you certain that the change is bad?  Add it to the tracker
572 as a Critical issue, regression.
573
574 @item
575 If you're not certain either way, add it to the tracker as a
576 Critical issue, regression but be aware that it may be
577 recategorised or marked invalid.
578
579 @end enumerate
580
581 In particular, anything that breaks a regression test is a
582 regression.
583
584 @item
585 Patch: a patch to fix an issue is attached.
586
587 @item
588 Frog: the fix is believed to be suitable for a new contributor
589 (does not require a great deal of knowledge about LilyPond).  The
590 issue should also have an estimated time in a comment.
591
592 @item
593 Maintainability: hinders development of LilyPond.  For example,
594 improvements to the build system, or @qq{helper} python scripts.
595
596 @item
597 Bounty: somebody is willing to pay for the fix.  Only add this tag
598 if somebody has offered an exact figure in US dollars or euros.
599
600 @item
601 Warning: graphical output is fine, but lilypond prints a
602 false/misleading warning message.  Alternately, a warning should
603 be printed (such as a bar line error), but was not.  Also applies
604 to warnings when compiling the source code or generating
605 documentation.
606
607 @item
608 Security: might potentially be used.
609
610 @item
611 Performance: might potentially be used.
612
613 @end itemize
614
615 If you particularly want to add a label not in the list, go
616 ahead, but this is not recommended.
617
618
619 @node Adding issues to the tracker
620 @section Adding issues to the tracker
621
622 @warning{This should only be done by the Bug Squad or experienced
623 developers.  Normal users should not do this; instead, they should
624 follow the guidelines for @rweb{Bug reports}.}
625
626 In order to assign labels to issues, Bug Squad members should log
627 in to their google account before adding an item.
628
629 @subsubheading Normal issues
630
631 @enumerate
632
633 @item
634 Check if the issue falls into any previous category given on the
635 relevant checklists in @ref{Bug Squad checklists}.  If in doubt,
636 add a new issue for a report.  We would prefer to have some
637 incorrectly-added issues rather than lose information that should
638 have been added.
639
640 @item
641 Add the issue and classify it according to the guidelines in
642 @ref{Issue classification}.  In particular, the item should have
643 @code{Status}, @code{Type-}, and @code{Priority-} labels.
644
645 Include output with the first applicable method:
646
647 @itemize
648
649 @item
650 If the issue has a notation example which fits in one system,
651 generate a small @file{bug.preview.png} file with:
652
653 @example
654 lilypond -dpreview bug.ly
655 @end example
656
657 @item
658 If the issue has an example which requires more than one system
659 (i.e. a spacing bug), generate a @file{bug.png} file with:
660
661 @example
662 lilypond --png bug.ly
663 @end example
664
665 @item
666 If the issue requires one or two pages of output, then generate a
667 @file{bug.png} file with the normal:
668
669 @example
670 lilypond --png bug.ly
671 @end example
672
673 @item
674 If the issue cannot be shown with less than three pages, then
675 generate a @file{bug.pdf} file with:
676
677 @example
678 lilypond --pdf bug.ly
679 @end example
680
681 Note that this is likely to be extremely rare; most bugs should fit
682 into the first two categories above.
683
684
685 @end itemize
686
687 @item
688 After adding the issue, please send a response email to the same
689 group(s) that the initial patch was sent to.  If the initial email
690 was sent to multiple mailing lists (such as both @code{user} and
691 @code{bugs}), then reply to all those mailing lists as well.  The
692 email should contain a link to the issue you just added.
693
694 @end enumerate
695
696
697 @subsubheading Patch reminders
698
699 @warning{This is not a Bug Squad responsibility; we have a
700 separate person handling this task.}
701
702 There is a special category of issues: reminders of an existing
703 patch.  These should be added if a patch has been sent to a
704 lilypond mailing list (generally @code{lilypond-devel}, but they
705 sometimes appear on @code{bug-lilypond} as well) and has had no
706 discussion for at least @strong{3 days}.  Do not add issues for
707 patches under active discussion.
708
709 Before adding a patch-reminder issue, do a quick check to see if
710 it was pushed without sending any email.  This can be checked for
711 searching for relevant terms (from the patch subject or commit
712 message) on the webgit page:
713
714 @example
715 @uref{http://git.savannah.gnu.org/gitweb/?p=lilypond.git}
716 @end example
717
718 After adding the issue, please send a response email to the same
719 group(s) that the initial patch was sent to.  If the initial email
720 was sent to multiple mailing lists (such as both @code{bugs} and
721 @code{devel}), then reply to all those mailing lists as well.  The
722 email should contain a link to the issue you just added.
723
724
725
726 @node Summary of project status
727 @section Summary of project status
728
729 The best overview of our current status is given by the grid view:
730
731 @example
732 @uref{http://code.google.com/p/lilypond/issues/list?mode=grid&y=Priority&x=Type&cells=ids}
733 @end example
734
735 Also of interest might be the issues hindering future development:
736
737 @example
738 @uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:Maintainability&mode=grid&y=Priority&x=Type&cells=ids}
739 @end example
740
741 Finally, issues tagged with @code{Frog} indicates a task suitable
742 for a relatively new contributor.  The time given is a quick
743 (inaccurate) estimate of the time required for somebody who is
744 familiar with material in this manual, but does not know anything
745 else about LilyPond development.
746
747 @example
748 @uref{http://code.google.com/p/lilypond/issues/list?can=2&q=label:Frog&mode=grid&y=Priority&x=Type&cells=ids}
749 @end example
750
751