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