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