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