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