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