]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/contributor/administration.itexi
Merge branch 'lilypond/translation' into staging
[lilypond.git] / Documentation / contributor / administration.itexi
1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @node Administrative policies
3 @chapter Administrative policies
4
5 This chapter discusses miscellaneous administrative issues which
6 don't fit anywhere else.
7
8 @menu
9 * Meta-policy for this document::
10 * Meisters::
11 * Patchy::
12 * Administrative mailing list::
13 * Grand Organization Project (GOP)::
14 * Grand LilyPond Input Syntax Standardization (GLISS)::
15 * Unsorted policies::
16 @end menu
17
18 @node Meta-policy for this document
19 @section Meta-policy for this document
20
21 The Contributor's Guide as a whole is still a work in progress,
22 but some chapters are much more complete than others.  Chapters
23 which are @qq{almost finished} should not have major changes
24 without a discussion on @w{@code{-devel}}; in other chapters, a
25 disorganized @qq{wiki-style dump} of information is encouraged.
26
27 Do not change (other than spelling mistakes) without discussion:
28
29 @itemize
30
31 @item
32 @ref{Introduction to contributing}
33
34 @item
35 @ref{Working with source code}
36
37 @end itemize
38
39 Please dump info in an appropriate @@section within these manuals,
40 but discuss any large-scale reorganization:
41
42 @itemize
43
44 @item
45 @ref{Compiling}
46
47 @item
48 @ref{Documentation work}
49
50 @item
51 @ref{Issues}
52
53 @item
54 @ref{Regression tests}
55
56 @item
57 @ref{Programming work}
58
59
60 @end itemize
61
62 Totally disorganized; do whatever the mao you want:
63
64 @itemize
65
66 @item
67 @ref{Website work}
68
69 @item
70 @ref{LSR work}
71
72 @item
73 @ref{Release work}
74
75 @item
76 @ref{Administrative policies}
77
78 @end itemize
79
80
81
82 @node Meisters
83 @section Meisters
84
85 We have four jobs for organizing a team of contributors:
86
87 @itemize
88
89 @item
90 Bug Meister: trains new Bug Squad volunteers, organizes who works
91 on which part of their job, checks to make sure that everything is
92 running smoothly, and has final say on our policy for Issues.
93
94 Currently: Phil
95
96 @item
97 Doc Meister: trains new doc editors/writers, organizes who works
98 on which part of the job, checks to make sure that everything is
99 running smoothly, and has final say on our policy for
100 Documentation.  Also includes LSR work.
101
102 Currently: Graham
103
104 @item
105 Translation Meister: trains new translators, updates the
106 translation priority list, and handles merging branches (in both
107 directions).
108
109 Currently: Francisco
110
111 @item
112 Frog Meister: is responsible for code patches from (relatively)
113 inexperienced contributors.  Keeps track of patches, does initial
114 reviewing of those patches, sends them to @w{@code{-devel}} when
115 they've had some initial review on the Frog list, pesters the
116 @w{@code{-devel}} community into actually reviewing said patches, and
117 finally pushes the patches once they're accepted.  This person is
118 @emph{not} responsible for training new programmers, because that
119 would be far too much work -- his/her job is @qq{only} to guide
120 completed patches through our process.
121
122 Currently: Carl
123
124 @end itemize
125
126 @node Patchy
127 @section Patchy
128
129 @subheading Introduction
130
131 Patchy is a set of Python scripts to automate two administrative
132 tasks:
133
134 @itemize
135 @item
136 @code{lilypond-patchy-staging.py}: checks that new commits in
137 @code{staging} can compile the regtests and documentation before
138 merging @code{staging} into @code{master}.
139
140 (completely automatic)
141
142 @item
143 @code{test-patches.py}: checks that patches apply to git master,
144 compile, and lets a human check that there are no big unintended
145 changes to the regtests.
146
147 (requires some human input)
148
149 @end itemize
150
151 @subheading Installing patchy
152
153 To install patchy, you should do the following:
154
155 @enumerate
156 @item
157 Create a new user on your box to run patchy; this is a security
158 step for your own protection.  It is recommended that this should
159 not be an administrator.  New users are created from System;
160 Administration; Users and Groups.
161
162 @item
163 Get the patchy scripts from
164 @example
165 @uref{https://github.com/gperciva/lilypond-extra/}
166 @end example
167 Patchy is in the @file{patches/} directory.
168
169 @item
170 Put the scripts in a sensible place on your system
171
172 @item
173 Create a new git repository with
174 @example
175 git clone git://git.sv.gnu.org/lilypond.git
176 @end example
177 This will create a directory called lilypond with the repo in it.
178 Make sure it's where you want it and name it lilypond-git
179 (assuming you want to follow the standard naming conventions).
180
181 @item
182 Create an environment variable called LILYPOND_GIT and make it
183 equal to the location of your new git repo.  You can do this by
184 editing @file{$HOME/.profile} and adding the line:
185 @example
186 export LILYPOND_GIT=~/lilypond-git
187 @end example
188 then logging out and in.
189
190 @item
191 Run patchy once to set up config files.  Cancel this build
192 (ctrl-c).
193
194 @item
195 Edit @file{$HOME/.lilypond-patchy-config} to provide working
196 directories for your build directory, your results directory,
197 compiler options and notification method.  If you don't want to
198 use email notification, then delete everything after
199 @code{smtp_command:}.
200
201 @item
202 Ensure that your new user has git push access.  Follow the
203 instructions in the CG at @ref{Commit access}.  Do not set
204 password protection for the key - if you do you will not be able
205 to run patchy unattended.
206
207 @end enumerate
208
209 @subheading lilypond-patchy-staging.py
210
211 lilypond-patchy-staging.py is run with
212 @example
213 python lilypond-patchy-staging.py
214 @end example
215 Not much appears to happen except you can see a lot of CPU gets
216 used if you open System Monitor. There's not much point running
217 @code{lilypond-patchy-staging.py} unless there is something in
218 staging to be merged to master, however, if there's nothing in
219 staging then the script won't waste resources by compiling
220 anything.
221
222 The script fetches the current patches in staging and runs
223 @code{make}, @code{make test} and @code{make doc} to ensure that all of
224 these complete error-free. If you have set patchy up to use email,
225 it emails its results to you.  If you haven't, then you can view
226 them in a logfile.  It also merges staging into master.
227
228 @subheading test-patches.py
229 test-patches prepares a regtest comparison for a human to quickly
230 glance at, to determine if the patch is ready for a review.  After
231 looking at the comparison (or the lack of a comparison in the case
232 of problems), run @code{accept-patch.py} or
233 @code{reject-patch.py}.
234
235 Once a patch has gotten a "LGTM" from Patchy, it should be
236 reviewed by relevant developers, and if it passes this, it can be
237 considered for countdown (see @ref{Commits and patches}) and
238 pushing to staging (see @ref{Pushing to staging}).
239
240
241 @node Administrative mailing list
242 @section Administrative mailing list
243
244 A mailing list for administrative issues is maintained at
245 @code{lilypond-hackers@@gnu.org}.
246
247 This list is intended to be used for discussions that should be kept
248 private. Therefore, the archives are closed to the public.
249
250 Subscription to this list is limited to certain senior developers.
251
252 At the present time, the list is dormant.
253
254 Details about the criteria for membership, the types of discussion
255 to take place on the list, and other policies for the hackers list
256 will be finalized during the
257 @ref{Grand Organization Project (GOP)}.
258
259
260
261 @node Grand Organization Project (GOP)
262 @section Grand Organization Project (GOP)
263
264 GOP has two goals:
265
266 @itemize
267 @item
268 Clarify the various development tasks by writing down the policies
269 and techniques and/or simplifying the tasks directly.
270
271 @item
272 Get more people involved in development: specifically, find people
273 to do easy tasks to allow advanced developers to concentrate on
274 difficult tasks.
275
276 @end itemize
277
278 @menu
279 * Motivation::
280 * Ongoing jobs::
281 * Policy decisions::
282 * Policy decisions (finished)::
283 @end menu
284
285 @node Motivation
286 @subsection Motivation
287
288 Most readers are probably familiar with the LilyPond Grand
289 Documentation Project, which ran from Aug 2007 to Aug 2008. This
290 project involved over 20 people and resulted in an almost complete
291 rewrite of the documentation. Most of those contributors were
292 normal users who decided to volunteer their time and effort to
293 improve lilypond for everybody. By any measure, it was a great
294 success.
295
296 The Grand Organization Project aims to do the same thing with a
297 larger scope -- instead of focusing purely on documentation, the
298 project aims to improve all parts of LilyPond and its community.
299 Just as with GDP, the main goal is to encourage and train users to
300 become more involved.
301
302 If you have never contributed to an open-source project before --
303 especially if you use Windows or OSX and do not know how to
304 program or compile programs -- you may be wondering if there's
305 anything you can do. Rest assured that you @emph{can} help.
306
307 @subheading "Trickle-up" development
308
309 One of the reasons I'm organizing GOP is "trickle-up"
310 development.  The idea is this: doing easy tasks frees up advanced
311 developers to do harder tasks.  Don't ask "am I the @emph{best}
312 person for this job"; instead, ask "am I @emph{capable} of doing
313 this job, so that the current person can do stuff I @emph{can't}
314 do?".
315
316 For example, consider lilypond's poor handling of grace notes in
317 conjunction with clef and tempo changes. Fixing this will require
318 a fair amount of code rewriting, and would take an advanced
319 developer a few weeks to do. It's clearly beyond the scope of a
320 normal user, so we might as well sit back and do nothing, right?
321
322 No; we @emph{can} help, indirectly. Suppose that our normal user
323 starts answering more emails on lilypond-user. This in turn means
324 that documentation writers don't need to answer those emails, so
325 they can spend more time improving the docs. I've noticed that all
326 doc writers tackle harder and harder subjects, and when they start
327 writing docs on scheme programming and advanced tweaks, they start
328 contributing bug fixes to lilypond. Having people performing these
329 easy-to-moderate bug fixes frees up the advanced developers to
330 work on the really hard stuff... like rewriting the grace note
331 code.
332
333 Having 1 more normal user answering emails on lilypond-user won't
334 have a dramatic @q{trickle-up} effect all by itself, of course. But if
335 we had 8 users volunteering to answer emails, 6 users starting to
336 write documentation, and 2 users editing LSR... well, that would
337 free up a lot of current bug-fixing-capable contributors to focus
338 on that, and we could start to make a real dent in the number of
339 bugs in lilypond. Quite apart from the eased workload, having that
340 many new helpers will provide a great moral boost!
341
342 @node Ongoing jobs
343 @subsection Ongoing jobs
344
345 Although GOP is a short-term project, the main goal is to train
346 more people to handle ongoing jobs. The more people doing these
347 jobs, the lighter the work will be, and the more we can get done
348 with lilypond!
349
350 Also, it would be nice if we had at least one "replacement" /
351 "understudy" for each role -- too many tasks are only being done
352 by one person, so if that person goes on vacation or gets very
353 busy with other matters, work in that area grinds to a halt.
354
355 @subheading Jobs for normal users
356
357 @itemize
358 @item Consultant:
359 LilyPond is sometimes critized for not listening to users, but
360 whenever we ask for opinions about specific issues, we never get
361 enough feedback. This is somewhat aggravating.
362 We need a group of users to make a dedicated effort to test and
363 give feedback. If there's new documentation, read it. If there's
364 an experimental binary, download it and try compiling a score with
365 it. If we're trying to name a new command, think about it and give
366 serious suggestions.
367
368 @item lilypond-user support:
369 I think it would be nice if we had an official team of users
370 helping other users.
371
372 @item LilyPond Report:
373 Keeping a monthly newsletter running is a non-trivial task.  A lot
374 of work is needed to organize it; it would be great if we could
375 split up the work. One person could write the Snippet of the
376 Month, another person could do Quotes of the Month, another person
377 could do interviews, etc.
378
379 @item Documentation:
380 Although GDP (the Grand Documentation Project) did great work,
381 there's still many tasks remaining.
382
383 @item Translations:
384 Keeping the documentation translations is a monumental task; we
385 need all the help we can get!
386
387 @end itemize
388
389 @subheading Jobs for advanced users for developers
390
391 @itemize
392 @item Git help for writers:
393 We often receive reports of typos and minor text updates to the
394 documentation. It would be great if somebody could create
395 properly-formatted patches for these corrections.
396
397 Technical requirements: ability to run @ref{Lilydev}.
398
399 @item LSR editor:
400 LSR contains many useful examples of lilypond, but some snippets
401 are out of date and need updating. Other snippets need to be
402 advertized, and new snippets need to be sorted. We could use
403 another person to handle LSR.
404
405 Technical requirements: use of a web browser. LilyPond
406 requirements: you should be familiar with most of Notation
407 chapters 1 and 2 (or be willing to read the docs to find out).
408
409 @item Join the Frogs:
410 "Frogs" are a team of bug-fixers (because frogs eat bugs, and you
411 often find them in Ponds of Lilies) and new feature implementors.
412
413 Technical requirements: development environment (such as
414 @ref{Lilydev}), ability to read+write scheme and/or C++ code.
415
416 @end itemize
417
418
419 @node Policy decisions
420 @subsection Policy decisions
421
422 There are a number of policy decisions -- some of them fairly
423 important -- which we have been postponing for a few years.  We
424 are now discussing them slowly and thoroughly; agenda and exact
425 proposals are online:
426
427 @example
428 @uref{http://lilypond.org/~graham/gop/index.html}
429 @end example
430
431 Below is a list of policies which are not @qq{on the agenda} yet.
432
433 Note that the presence of an item on this list does @emph{not}
434 mean that everybody thinks that something needs to be done.
435 Inclusion in this simply means that one developer thinks that we
436 should discuss it.  We are not going to filter this list; if any
437 developer thinks we should discuss something, just add it to the
438 bottom of the list.  (the list is unsorted)
439
440 As GOP progresses, items from this list will be put on the agenda
441 and removed from this list.  I generally try to have one month's
442 discussion planned in advance, but I may shuffle things around to
443 respond to any immediate problems in the developer community.
444
445 There are some item(s) not displayed here; these are questions
446 that were posed to me privately, and I do not feel justified in
447 discussing them publicly without the consent of the person(s) that
448 brought them up. They will initially be discussed privately on the
449 lilypond-hackers mailing list -- but the first question will be
450 "do we absolutely need to do this privately", and if not, the
451 discussion will take place on lilypond-devel like the other items.
452
453 In most policy discussions in lilypond over the past few years,
454 the first half (or more) is wasted arguing on the basis of
455 incorrect or incomplete data; once all the relevant facts are
456 brought to light, the argument is generally resolved fairly
457 quickly.  In order to keep the GOP discussions focused, each topic
458 will be introduced with a collection of relevant facts and/or
459 proposals.  It is, of course, impossible to predict exactly which
460 facts will be relevant to the discussion -- but spending an hour
461 or two collecting information could still save hours of
462 discussion.
463
464 @warning{The estimated time required for "prep work", and the
465 following discussion, has been added to each item.  At the moment,
466 there is an estimated 30 hours of prep work and 140 hours of
467 discussion.}
468
469 @itemize
470 @item @strong{Patch reviewing}:
471 At the time of this writing, we have 23 (known) patches waiting
472 for review.  Some from main developers; some from new developers.
473 We desperately need more people helping with lilypond, but
474 ignoring patches is the best way to drive potential contributors
475 away.  This is not good.
476
477 (prep: 2 hours.  discuss: 10 hours)
478
479 @item @strong{Official links to other organizations?}:
480 There's something called the "software freedom conservancy", and
481 in general, there's a bunch of "umbrella organizations". Joining
482 some of these might give us more visibility, possibly leading to
483 more users, more developers, maybe even financial grants or use in
484 schools, etc.
485
486 (prep: 2 hours.  discuss: 5 hours)
487
488 @item @strong{Issue tracking with google code}:
489 We use the google issue tracker, but this means that we are
490 relying on a commercial entity for a large part of our
491 development. Would it be better (safer in the long run) to use the
492 savannah bug tracker?
493
494 (prep: 1 hour.  discuss: 5 hours)
495
496 @item @strong{Patch review tool}:
497 Reitveld is inconvenient in some respects: it requires a google
498 account, and there's no way to see all patches relating to
499 lilypond. Should we switch to something like gerritt?
500 @uref{http://code.google.com/p/lilypond/issues/detail?id=1184}
501
502 (prep: 5 hours.  discuss: 15 hours)
503
504 @item @strong{Clarity for sponsorships}:
505 We currently do not advertize bounties and sponsorships on the
506 webpage.  How much advertising do we want, and what type?
507 Should we change the "structure" / "framework" for bounties?
508
509 (prep: 2 hours.  discuss: 10 hours)
510
511 @item @strong{code readability}:
512 "Our aim when producing source code for Lilypond in whatever
513 language is that it should be totally comprehensible to a
514 relatively inexperienced developer at the second reading."
515
516 Rationale:
517 - aids maintainability of code base
518 - "second reading" so newer developers can look up unfamiliar
519   stuff
520 - will help to keep things simple, even if the code is doing
521   complex stuff discourages "secret squirrel" coding, e.g.  "how
522   much functionality can I squeeze into as few characters as
523   possible" "comments are for wimps"
524 - will aid not *discouraging* new developers to join the project
525
526 (prep: 2 hours.  discuss: 10 hours)
527
528 @item @strong{C++ vs. scheme}:
529 what should be in scheme, what should be in C++, what can/should
530 be ported from one to the other, etc.  Questions of
531 maintainability, speed (especially considering guile 2.0), and the
532 amount of current material in either form, are important.
533
534 (prep: 5 hours.  discuss: 15 hours)
535
536 @item @strong{always make an issue number for patches}:
537 there is a proposal that we should always have a google code issue
538 number for every patch.  This proposal is closely tied to our
539 choice of patch review tool; if we switch to a different tool (as
540 suggested in a different proposal), this proposal may become moot.
541
542 (prep: 1 hour.  discuss: 5 hours)
543
544 @item @strong{initalizer lists}:
545 shoudl we use initalizer lists for C++?  AFAIK they make no
546 difference for built-in types, but there's some weird case where
547 it's more efficient for objects, or something.
548
549 Probably not worth making this a weekly thing on its own, but we
550 can probably wrap it up with some other code-related questions.
551
552 (prep: 15 minutes.  discuss: 3 hours)
553
554 @end itemize
555
556 @node Policy decisions (finished)
557 @subsection Policy decisions (finished)
558
559 Here is a record the final decisions, along with links to the
560 discussions.
561
562 @menu
563 * GOP-PROP 1 - python formatting::
564 * GOP-PROP 2 - mentors and frogs::
565 * GOP-PROP 3 - C++ formatting::
566 * GOP-PROP 4 - lessons from 2.14::
567 * GOP-PROP 5 - build system output (not accepted)::
568 * GOP-PROP 6 - private mailing lists::
569 * GOP-PROP 7 - developers as resources::
570 * GOP-PROP 8 - issue priorities::
571 * GOP-PROP 9 - behavior of make doc::
572 @end menu
573
574 @node GOP-PROP 1 - python formatting
575 @subsubsection GOP-PROP 1 - python formatting
576
577 We will follow the indentation described in PEP-8.
578 @uref{http://www.python.org/dev/peps/pep-0008/}
579
580 @itemize
581 @item
582 use 4 spaces per indentation level
583
584 @item
585 never mix tabs and spaces (for indentation)
586
587 @item
588 Code indented with a mixture of tabs and spaces should be
589 converted to using spaces exclusively
590
591 Once this is done, we should add @code{python -tt} to the build
592 system to avoid such errors in the future.
593
594 @end itemize
595
596 There should be absolutely no tab characters for indentation in
597 any @code{.py} file in lilypond git.  All such files should be
598 converted to use spaces only.
599
600 @subsubheading Discussions
601
602 @smallexample
603 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00060.html}
604 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00084.html}
605 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00310.html}
606 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00574.html}
607 @end smallexample
608
609
610 @node GOP-PROP 2 - mentors and frogs
611 @subsubsection GOP-PROP 2 - mentors and frogs
612
613 Nothing much was decided.  The list of responsibilities was
614 slightly altered; see the new one in @ref{Mentors}.  We should
615 encourage more use of the Frogs mailing list.  There's a list of
616 contributor-mentor pairs in:
617
618 @smallexample
619 @uref{https://github.com/gperciva/lilypond-extra/blob/master/people/mentors.txt}
620 @end smallexample
621
622 That's pretty much it.
623
624 @subsubheading Discussions
625
626 @smallexample
627 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00311.html}
628 @uref{}
629 @uref{}
630 @end smallexample
631
632
633 @node GOP-PROP 3 - C++ formatting
634 @subsubsection GOP-PROP 3 - C++ formatting
635
636 Speaking academically, C++ code style is a "solved problem". Let's
637 pick one of the existing solutions, and let a computer deal with
638 this.  Humans should not waste their time, energy, and creativity
639 manually adding tabs or spaces to source code.
640
641 We have modified @code{fixcc.py} to use astyle, along with extra
642 regex tweaks.
643
644 @itemize
645 @item
646 the final script will be run @strong{blindly} on the lilypond
647 source code.  We will accept whatever formatting the final version
648 of this script produces, with no manual tweaking.
649
650 @item
651 patches which have been run through this tool will not be rejected
652 for style reasons.  Any code formatting @qq{desires} which are not
653 enforced by @code{fixcc.py} will not be considered grounds for
654 rejecting a patch.
655
656 @item
657 for now, this style will not be enforced.  It is not cause for
658 concern if patches which do not follow the formatting done by
659 @code{fixcc.py} are pushed.  From time to time, Graham will run
660 the formatter on the entire code base, and commit the resulting
661 changes.
662
663 In a few months, we will tighten up this policy item (with some
664 sort of automatic processing), but that is outside the scope of
665 this policy item and is a matter for later discussion.
666
667 @item
668 after the proposal is accepted, we will leave some time for
669 existing patches to be accepted and pushed.  The script was
670 run on the source code on @strong{2011 August 01}.
671
672 @end itemize
673
674 @subheading GNU code
675
676 LilyPond is a GNU project, so it makes sense to follow the GNU
677 coding standards.  These standards state:
678
679 @quotation
680 We don’t think of these recommendations as requirements, because
681 it causes no problems for users if two different programs have
682 different formatting styles.
683
684 But whatever style you use, please use it consistently, since a
685 mixture of styles within one program tends to look ugly. If you
686 are contributing changes to an existing program, please follow the
687 style of that program. 
688 @end quotation
689
690 (@uref{http://www.gnu.org/prep/standards/html_node/Formatting.html})
691
692 With that in mind, we do not think that we must blindly follow the
693 formatting given by the currrent version of Emacs.
694
695 @subheading Implementation notes
696
697 We can avoid some of the style change pollution in git history by
698 ignoring whitespaces changes:
699
700 @example
701 git diff -w
702 @end example
703
704 @subsubheading Discussions
705
706 @smallexample
707 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00526.html}
708 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00796.html}
709 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00200.html}
710 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00525.html}
711 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00751.html}
712 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00751.html}
713 @end smallexample
714
715
716 @node GOP-PROP 4 - lessons from 2.14
717 @subsubsection GOP-PROP 4 - lessons from 2.14
718
719 @subheading History
720
721 A brief history of releases:
722
723 @multitable @columnfractions .2 .2 .3
724 @headitem date (YYYY-MM-DD) @tab version @tab comment
725 @item 2008-10-28 @tab 2.11.63 @tab nobody checking regtests
726 @item 2008-11-17 @tab 2.11.64
727 @item 2008-11-29 @tab 2.11.65
728 @item 2008-12-23 @tab 2.12.0
729 @item 2009-01-01 @tab @tab somewhere around here, Graham becomes
730 officially release manager, but Han-Wen still builds the actual
731 releases
732 @item 2009-01-01 @tab 2.12.1
733 @item 2009-01-25 @tab 2.12.2
734 @item 2009-02-28 @tab 2.13.0
735 @item 2009-06-01 @tab 2.13.1 @tab note jump in time!
736 @item 2009-06-27 @tab 2.13.2 @tab first Graham release?
737 @item 2009-07-03 @tab 2.13.3
738 @item 2009-09-09 @tab @tab Graham arrives in Glasgow, gets a
739 powerful desktop computer, and begins serious work on GUB (sending
740 bug reports to Jan).  It takes approximately 100 hours until GUB
741 is stable enough to make regular releases.
742 @item 2009-09-24 @tab 2.13.4
743 @item 2009-10-02 @tab 2.13.5
744 @item 2009-10-22 @tab 2.13.6
745 @item 2009-11-05 @tab 2.13.7
746 @item ...
747 @item 2010-01-13 @tab 2.12.3
748 @item ...
749 @item 2010-03-19 @tab 2.13.16 @tab Bug squad starts doing a few
750 regtest comparisons, but IIRC the effort dies out after a few
751 weeks (BLUE)
752 @item ...
753 @item 2010-08-04 @tab 2.13.29 @tab Phil starts checking regtests (BLUE)
754 @item ...
755 @item 2011-01-12 @tab 2.13.46 @tab release candidate 1 (GREEN)
756 @item ...
757 @item 2011-05-30 @tab 2.13.63 @tab release candidate 7 (GREEN)
758 @item 2011-06-06 @tab 2.14.0
759 @end multitable
760
761 @c A graphical display of bugs:
762 @c 
763 @c @image{bugs-2.13-visualization,png}
764 @c @image{zoom-2.13-visualization,png}
765
766 @subheading Carl's analysis of the bugs
767
768 A @file{csv} spreadsheet is available.
769
770 @smallexample
771 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00852.html}
772 @end smallexample
773
774 @example
775 @uref{lilypond-issues-analysis.csv}
776 @uref{lilypond-issues-analysis-trim-duplicates.csv}
777 @end example
778
779 There 148 issues marked with Priority=Critical in the tracker.
780
781 I've done an analysis, and it looks to me like there was initially
782 a backlog of critical issues that weren't fixed, and little work
783 was being done to eliminate critical issues.
784
785 Somewhere about 2010-08-01, critical issues started to disappear,
786 but occasional new ones appeared.
787
788 There were a couple of major changes that introduced unanticipated
789 regressions (new spacing code, beam collision avoidance).  These
790 produced more than the expected number of regressions.
791
792 It appears to me that we didn't really get serious about
793 eliminating critical bugs until about 2010-06-15 or so.  After
794 that point, the number of critical bugs more-or-less steadily
795 decreased until we got to a release candidate.
796
797 Of particular interest, the first release candidate of 2.14 was
798 released on 2011-01-12.  Over the next 10 days, about a dozen bugs
799 were reported and fixed.  Release candidate 2 came out on
800 2011-02-09.   No surge of bugs occurred with this release.
801 Candidate 3 came out on 2011-03-13; we got 2 bugs per week.
802 Candidate 4 came out on 2011-03-29; 2 new bugs.  Candidate 6 came
803 out on 2011-04-07.  We got a couple of bugs per week.
804
805 @subheading Notes, commentary, and opinions
806
807 @example
808 Han-Wen: Overall, I think this cycle took too long
809 Mike: I agree
810 Graham: +1
811 @end example
812
813 @subsubheading Discussions
814
815 @smallexample
816 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00797.html}
817 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00364.html}
818 @uref{}
819 @end smallexample
820
821
822 @node GOP-PROP 5 - build system output (not accepted)
823 @subsubsection GOP-PROP 5 - build system output (not accepted)
824
825 This proposal was too broad; after a month of discussion, Graham
826 withdrew the proposal.  Portions of it will be introduced in later
827 proposals.
828
829 @subsubheading Discussions
830
831 @smallexample
832 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00320.html}
833 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00527.html}
834 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00753.html}
835 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg01042.html}
836 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00116.html}
837 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00310.html}
838 @end smallexample
839
840
841 @node GOP-PROP 6 - private mailing lists
842 @subsubsection GOP-PROP 6 - private mailing list
843
844 Potentially sensitive or private matters will be referred to
845 Graham.  He will then decide who should discuss the matter on an
846 ad-hoc basis, and forward or CC them on future emails.
847
848 For emphasis, the project administrators are Han-Wen, Jan, and
849 Graham; those three will always be CC'd on any important
850 discussions.
851
852 The lilypond-hackers mailing list will be removed.
853
854 @subheading History
855
856 There is some unhappy history about this idea in our development
857 community:
858
859 @example
860 @uref{http://lists.gnu.org/archive/html/lilypond-devel/2010-09/msg00178.html}
861 @uref{http://news.lilynet.net/spip.php?article121}
862 @uref{http://lists.gnu.org/archive/html/lilypond-devel/2010-11/msg00076.html}
863 @end example
864
865 @subheading Other projects
866
867 The idea of private mailing lists is hardly uncommon in
868 open-source software.  For example,
869
870 @example
871 @uref{http://lwn.net/Articles/394660/}   about debian-private
872 @uref{http://subversion.apache.org/mailing-lists.html}  private@@
873 @uref{http://www.freebsd.org/administration.html#t-core}
874 @uref{http://foundation.gnome.org/legal/}   board members pledge
875 to keep certain matters confidential
876
877 every security team of every linux distribution and OS
878 @end example
879
880 In fact, Karl Fogel's @qq{Producing Open Source Software}
881 explicitly suggests a private mailing list for some circumstances:
882
883 @example
884 [on granting commit/push access to a contributor]
885
886 But here is one of the rare instances where secrecy is
887 appropriate. You can't have votes about potential committers
888 posted to a public mailing list, because the candidate's feelings
889 (and reputation) could be hurt.
890
891 @uref{http://producingoss.com/en/consensus-democracy.html#electorate}
892 @end example
893
894 @subheading Board of governers, voting, etc?
895
896 Many projects have an official board of directors, or a list of
897 @qq{core developers}, with set term limits and elections and
898 stuff.
899
900 I don't think that we're that big.  I think we're still small
901 enough, and there's enough trust and consensus decisions, that we
902 can avoid that.  I would rather that we kept on going with
903 trust+consensus for at least the next 2-3 years, and spent more
904 time+energy on bug fixes and new features instead of
905 administrative stuff.
906
907 Project administrators are Han-Wen, Jan, and Graham.
908
909 @subsubheading Discussions
910
911 @smallexample
912 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00783.html}
913 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg01004.html}
914 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00117.html}
915 @end smallexample
916
917
918 @node GOP-PROP 7 - developers as resources
919 @subsubsection GOP-PROP 7 - developers as resources
920
921 We shall treat developers (and contributors) as
922 @strong{Independent volunteers}: each person does whatever they
923 want, whenever they want.  We have busy careers and lives; we make
924 no expectations of action from anybody (with the exception of the
925 6 people in @qq{Meister} positions).
926
927 @subsubheading Discussions
928
929 @smallexample
930 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg01092.html}
931 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00087.html}
932 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00497.html}
933 @end smallexample
934
935
936 @node GOP-PROP 8 - issue priorities
937 @subsubsection GOP-PROP 8 - issue priorities
938
939 We will delete the @qq{priority} field of the issue tracker
940 altogether.  The @qq{type} system will be tweaked.
941
942 Type-critical:
943
944 @itemize
945
946 @item
947 a reproducible failure to build either @code{make} or @code{make
948 doc}, from an empty build tree, in a first run, if
949 @code{configure} does not report any errors.
950
951 @item
952 any program behaviour which is @strong{unintentionally} worse than
953 the previous stable version or the current development version.
954 Developers may always use the @qq{this is intentional}, or even
955 the @qq{this is an unavoidable effect of an improvement in another
956 area}, reason to move this to a different type.
957
958 @item
959 anything which stops contributors from helping out (e.g.
960 lily-git.tcl not working, source tree(s) not being available,
961 lilydev being unable to compile git master, inaccurate
962 instructions in the Contributor's Guide 2 Quick start).
963
964 To limit this scope of this point, we will assume that the
965 contributor is using the latest lilydev and has read the relevant
966 part(s) of the Contributor's Guide.  Problems in other chapters of
967 the CG are not sufficient to qualify as Type-Critical.
968
969 @end itemize
970
971 @subsubheading More new/changed types and labels
972
973 Unless otherwise specified, the current types and labels will
974 continue to be used.  The new types introduced by this proposal
975 are:
976
977 @itemize
978
979 @item
980 Type-crash: any segfault, regardless of what the input file looks
981 like or which options are given.  Disclaimer: this might not be
982 possible in some cases, for example certain guile programs (we
983 certainly can't predict if a piece of scheme will ever stop
984 running, i.e. the halting problem), or if we rely on other
985 programs (i.e. ghostscript).  If there are any such cases that
986 make segfault-prevention impossible, we will document those
987 exceptions (and the issue will remain as a "crash" instead of
988 "documentation" until the warning has been pushed).
989
990 @item
991 Type-maintainability: anything which makes it difficult for
992 serious contributors to help out (e.g. difficult to find the
993 relevant source tree(s), confusing policies, problems with
994 automatic indentation tools, etc).
995
996 @item
997 Type-ugly: replaces Type-collision, and it will include things
998 like bad slurs in addition to actual collision.
999
1000 @end itemize
1001
1002 A new label will be added:
1003
1004 @itemize
1005 @item
1006 (label) Needs_evidence: it is not clear what the correct output
1007 should look like.  We need scans, references, examples, etc.
1008
1009 @end itemize
1010
1011 @subheading Reminding users about stars
1012
1013 We can remind users that they can @qq{star} an issue to indicate
1014 that they care about it.  Since we resolved to treat developers as
1015 independent volunteers, there is no expectation that anybody will
1016 look at those stars, but if any developer want to organize their
1017 work schedule according to the stars, they are welcome to do so.
1018
1019 @subsubheading Discussions
1020
1021 @smallexample
1022 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00019.html}
1023 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00277.html}
1024 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00413.html}
1025 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00624.html}
1026 @uref{}
1027 @end smallexample
1028
1029
1030 @node GOP-PROP 9 - behavior of make doc
1031 @subsubsection GOP-PROP 9 - behavior of make doc
1032
1033 If there are build problems, then it should be easier to find out
1034 why it's failing.  This will be achieved with log files, as well
1035 as possibly including scripts which automatically display portions
1036 of those log files for a failing build.
1037
1038 We will also add targets for building a specific manual (for
1039 quick+easy checking of doc work), as well as for building all
1040 documentation in a specific language (either English or a
1041 translated language).
1042
1043 When you run @code{make doc},
1044
1045 @itemize
1046
1047 @item
1048 All output will be saved to various log files, with the exception
1049 of output directly from @code{make(1)}.
1050
1051 Note that @code{make(1)} refers to a specific executable file on
1052 unix computers, and is not a general term for the build system.
1053
1054 @item
1055 By default, no other output will be displayed on the console, with
1056 one exception: if a build fails, we might display some portion(s)
1057 of log file(s) which give useful clues about the reason for the
1058 failure.
1059
1060 The user may optionally request additional output to be printed;
1061 this is controlled with the @code{VERBOSE=x} flag.  In such cases,
1062 all output will still be written to log files; the console output
1063 is strictly additional to the log files.
1064
1065 @item
1066 Logfiles from calling lilypond (as part of lilypond-book) will go
1067 in the relevant @file{build/out/lybook-db/12/lily-123456.log}
1068 file.  All other logfiles will go in the @file{build/logfiles/}
1069 directory.
1070
1071 A single @code{make doc} will therefore result in hundreds of log
1072 files.  Log files produced from individual lilypond runs are not
1073 under our control; apart from that, I anticipate having one or two
1074 dozen log files.  As long as it is clear which log file is
1075 associated with which operation(s), I think this is entirely
1076 appropriate.  The precise implementation will be discussed for
1077 specific patches as they appear.
1078
1079 @item
1080 Both stderr and stdout will be saved in @code{*.log}.  The order
1081 of lines from these streams should be preserved.
1082
1083 @item
1084 There will be no additional @qq{progress messages} during the
1085 build process.  If you run @code{make --silent}, a non-failing
1086 build should print absolutely nothing to the screen.
1087
1088 @item
1089 Assuming that the loglevels patch is accepted, lilypond (inside
1090 lilypond-book) will be run with --loglevel=WARN.
1091 @uref{http://codereview.appspot.com/4822055/}
1092
1093 @item
1094 Ideally, a failing build should provide hints about the reason why
1095 it failed, or at least hints about which log file(s) to examine.
1096
1097 @end itemize
1098
1099 If this proposal is accepted, none of these policies will be
1100 assumed to apply to any other aspect of the build system.
1101 Policies for any other aspect of the build system will be
1102 discussed in separate proposals.
1103
1104 @subheading Don't cause more build problems
1105
1106 However, there is a danger in this approach, that vital error
1107 messages can also be lost, thus preventing the cause of the
1108 failure of a make being found.  We therefore need to be
1109 exceptionally careful to move cautiously, include plenty of tests,
1110 and give time for people to experiment/find problems in each stage
1111 before proceeding to the next stage.
1112
1113 This will be done by starting from individual lilypond calls
1114 within lilypond-book, and slowly moving to @qq{larger} targets of
1115 the build system -- after the individual lilypond calls are are
1116 producing the appropriate amount of output and this is saved in
1117 the right place and we can automatically isolate parts of a
1118 failing build, we will work on lilypond-book in general, and only
1119 then will we look at the build system itself.
1120
1121 @subheading Implementation notes
1122
1123 There is an existing make variable QUIET_BUILD, which
1124 alter the amount of output being displayed
1125 (@uref{
1126 http://lilypond.org/doc/v2.15/Documentation/contributor/useful-make-variables}
1127 ).  We are not planning on keeping this make variable.
1128
1129 The standard way for GNU packages to give more output is with a
1130 @code{V=x} option.  Presumably this is done by increasing
1131 @code{x}?  If we support this option, we should still write log
1132 files; we would simply print more of the info in those log files
1133 to screen.
1134
1135 The command @code{tee} may be useful to write to a file and
1136 display to stdout (in the case of VERBOSE).
1137
1138
1139 @subsubheading Discussions
1140
1141 @smallexample
1142 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00378.html}
1143 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00703.html}
1144 @end smallexample
1145
1146
1147 @ignore
1148 @n ode GOP-PROP 10 - scheme indentation
1149 @s ubsubsection GOP-PROP 10 - scheme indentation
1150
1151 still under discussion
1152
1153 @subsubheading Discussions
1154
1155 @smallexample
1156 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00625.html}
1157 @uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg01026.html}
1158 @c @uref{}
1159 @end smallexample
1160 @end ignore
1161
1162
1163
1164 @node Grand LilyPond Input Syntax Standardization (GLISS)
1165 @section Grand LilyPond Input Syntax Standardization (GLISS)
1166
1167 @subheading Summary
1168
1169 @itemize
1170 @item
1171 Start: sortly after 2.14 comes out, which is currently estimated
1172 to happen in January 2011.
1173
1174 @item
1175 Length: 6-12 months.  We're not going to rush this.
1176
1177 @item
1178 Goal: define an input which we commit to being
1179 machine-updateable for the forseeable future.  Any future patches
1180 which change the syntax in a non-convert-ly-able format will be
1181 rejected.  (subject to the limitations, below)
1182 Once this is finished, we will release lilypond 3.0.
1183
1184 @end itemize
1185
1186
1187 @subheading The Problem
1188
1189 One of the biggest complaints people have with lilypond -- other
1190 than silly thing like "there's no gui" -- is the changing syntax.
1191 Now, inventing a language or standards is difficult.  If you set
1192 it in stone too soon, you risk being stuck with decisions which
1193 may limit matters.  If you keep on updating the syntax,
1194 interaction with older data (and other programs!) becomes complex.
1195
1196 @subheading Scope and Limitations
1197
1198 @itemize
1199 @item
1200 tweaks will not be included.  Anything with \override, \set,
1201 \overrideProperty, \tweak, \revert, \unset... including even those
1202 command names themselves... is still fair game for NOT_SMART
1203 convert-ly updates.
1204
1205 @item
1206 other than that, everything is on the table.  Is it a problem to
1207 have the tagline inside \header?  What should the default behavior
1208 of \include be?  When we abolish \times, do we move to \tuplet 3:2
1209 or \tuplet 2/3 or what (for typical triplets in 4/4 time)?
1210
1211 @item
1212 we need to get standards for command names.  This will help users
1213 remember them, and reduce the options for future names (and
1214 potential renamings later on).  \commandOn and \commandOff seem to
1215 work well (should we *always* have an Off command?), but what
1216 about the "command" part?  Should it be \nounVerbOn, or
1217 \verbNounOn ?  Or \verbNotesWithExtraInformationOn ?
1218
1219 @item
1220 we need standards for the location of commands.  Ligature
1221 brackets, I'm looking at you.  (non-postfix notation must die!)
1222
1223 @item
1224 this Grand Project doesn't affect whether we have a 2.16 or not.
1225 The main problem will be deciding what to do (with a bit of
1226 messiness anticipated for \tuplet); we should definitely release a
1227 2.16 before merging _any_ of these changes.
1228
1229 @item
1230 we obviously can't /guarantee/ that we'll /never/ make any
1231 non-convert-ly changes in the basic format.  But we *can*
1232 guarantee that such changes would force lilypond 4.0, and that we
1233 would only do so for overwhelmingly good reasons.
1234
1235 @end itemize
1236
1237 @subheading Workflow
1238
1239 @itemize
1240 @item
1241 We're going to have lots and lots of emails flying around.  The
1242 vast majority won't really fit into either -devel or -user, so
1243 we'll use a list devoted to syntax issues.
1244
1245 @item
1246 Once we have a serious proposal that gained general acceptance
1247 from the separate syntax mailing list, I'll bring it to -devel.
1248 We're not going to make any changes without discussing it on
1249 -devel, but if we're going to have huge threads about English
1250 grammar and silly ideas, and I don't want to clutter up -devel.
1251 Once whatever chaotic silliness on the syntax list is settled
1252 down, I'll bring the ideas to -devel.
1253
1254 @item
1255 as with GDP, I'll moderate the discussion.  Not as with mailist
1256 moderation, but rather by introducing issues at specific times.
1257 We don't want a free-for-all discussion of all parts of the syntax
1258 at once; nothing will get resolved.
1259
1260 @item
1261 Whenever possible, we'll decide on policies at the highest level
1262 of abstraction.  For example, consider \numericTimeSignature,
1263 \slurUp, \xNotesOn, \startTextSpan, and \verylongfermata.  One of
1264 them starts with the name of the notation first (slur).  One has
1265 an abbreviation (x instead of cross).  One has the verb at the end
1266 (On), another has it at the beginning (start).  The adjective can
1267 come at the beginning (numeric, x) or end (Up).  Most are in
1268 camelCase, but one isn't (verylongfermata).
1269
1270 @item
1271 Instead of arguing about each individual command, we'll decide on
1272 abstract questions.  Should each command begin the notation-noun,
1273 or the verb?  Should all commands be in camelCase, or should we
1274 make everything other than articulations in camelCase but make
1275 articulations all lower-case?  Are abbreviations allowed?
1276
1277 @item
1278 Once we've answered such fundamental questions, most of the syntax
1279 should fall into place pretty easily.  There might be a few odd
1280 questions left ("is it a span, or a spanner?"), but those can be
1281 settled fairly quickly.
1282
1283 @end itemize
1284
1285 @subheading Implementation
1286
1287 Nothing until the project is finished, then we declare the next
1288 stable release (2.16.0 or 2.18.0 ?) to be the final 2.x version,
1289 release it, then apply all the GLISS syntax changes and start
1290 testing a beta for 3.0 a week or two later.
1291
1292 @subheading Discussion
1293
1294 Don't respond to any of the specifics yet.  Yes, we all have our
1295 pet irritations (like "what's up with \paper and \layout?!").
1296 There will be plenty of time to discuss them once GLISS starts.
1297
1298 That said, we have a list of specific items that people really
1299 wanted to have written down.  See @ref{Specific GLISS issues}.
1300
1301 @menu
1302 * Specific GLISS issues::
1303 @end menu
1304
1305
1306 @node Specific GLISS issues
1307 @subsection Specific GLISS issues
1308
1309 @itemize
1310 @item
1311 add regtests for every piece of syntax (not one-command-per-file,
1312 but making a few files which, between them, use every single piece
1313 of syntax.)  This is a great test for convert-ly.
1314
1315 @item
1316 should GLISS cover suggested conventions?  (indentation,
1317 one-bar-per-line, etc -- the kind of stuff we list for the
1318 lilypond formatting in the docs ?)
1319
1320 @item
1321 how much (if any) syntactic sugar should we add?  i.e.
1322 @example
1323   \instrumentName #'foo
1324 % instead of
1325   \set Staff.instrumentName
1326 @end example
1327 ?  Carl: maybe yes, Neil: no.  (for example, it fails for
1328 pianostaff)
1329
1330 @item
1331 the values that are used as arguments to common used overrides.
1332 Sometimes they are a symbol (e.g. #'around), sometimes a
1333 predefined variable referring to a Scheme value or object (e.g.
1334 #LEFT, #all-visible ). The main trouble is that for novice users
1335 it is not clear when there should be an apostrophe and when not.
1336
1337 @item
1338 When do we need -\command and when is it just \command ?
1339
1340
1341 @item
1342 Command-line options to the lilypond binary.  -dfoo counts as a
1343 tweak; we won't be trying to pin those down.
1344
1345 @item
1346 @verbatim
1347 \layout {
1348   \context { \Score
1349 % vs.
1350 \layout {
1351   \context {
1352     \Score
1353 @end verbatim
1354
1355 @item
1356 If would be pedagogically simpler to realize this difference if
1357 the syntax was separate if you define a context from scratch (as
1358 is the case with \RemoveEmptyStaffContext) or if it's defined by
1359 adding onto an existing context. For example, a syntax like
1360
1361 @verbatim
1362 \context{
1363  % Copy the current settings of the Staff context:
1364  \use Staff
1365  % do whatever additional settings
1366 }
1367 %%% could be used to distinguish from
1368 \context{
1369  % Take settings from a variable:
1370  \Variable
1371  % do whatever additional settings
1372 }
1373
1374 %%% and
1375
1376 \context{
1377  % Start from scratch:
1378  \type ...
1379  \name ...
1380  \consists ...
1381  ...
1382 }
1383 @end verbatim
1384
1385 @item
1386 Capitalization of identifiers: \VoiceOne ?
1387
1388 @item
1389 @verbatim
1390 %%% Allow
1391 { music expression } * 4
1392 %%% instead of
1393 \repeat unfold 4 { music expression }
1394 @end verbatim
1395
1396 ?  patch here:
1397 @smallexample
1398 @uref{http://lists.gnu.org/archive/html/lilypond-devel/2010-04/msg00467.html}
1399 @end smallexample
1400
1401 @item
1402 Personally, I find it easier to understand when there's a repeated
1403 8 in the half-bar position; it's much easier to see that you have
1404 two groups of 4:
1405
1406 @example
1407 c8 c c c c8 c c c
1408 %%% instead of one group of eight:
1409 c8 c c c c c c c
1410 @end example
1411
1412 @item
1413 trivially simple bar-lines:
1414
1415 c1 | c1 |
1416
1417 encourage, allow, or discourage, or disallow?
1418
1419 @item
1420 indentation of \\ inside a @{@} construct.
1421
1422
1423 @item
1424 barline checks at the end of line should be preceded by at least 2
1425 spaces?  barline checks should line up if possible (i.e.  if you
1426 can use less than 4, 8, X empty spaces before a barline check to
1427 make them line up?)
1428
1429 @item
1430 Why doesn't \transpose respect \relative mode?
1431
1432
1433 @item
1434 on \score vs. \new Score
1435
1436 But in the light of a consistent syntax and semantic, I see no
1437 reason (from the users POV) to disallow it.  After all, the real
1438 top-level context is a \book @{@}, isn't it, and I don't see a point
1439 in disallowing a \new Score construct just like \new Staff.
1440
1441 From a syntactical POV, I see the following pros for \new Score:
1442 - You can write \with @{ ... @} for every other context but \Score,
1443 which (for consistency) should also work with \new Score.
1444 - When there's a \new Foo Bar, there's also a \context Foo Bar,
1445   which makes the same as a parallel instantiation of all Bar's.
1446 - [Quoting Rune from
1447 @uref{http://www.mail-archive.com/lilypond-devel@@gnu.org/msg14713.html}
1448   "I know that the \score-statement is a syntactical construct,
1449 but I think it would be nice to hide this fact from the users.  I
1450 think we could make the use of score-block much more intuitive if
1451 changing the syntax to \new \Score and adding an implicit
1452 sequential-statement to the score."
1453
1454
1455 @item
1456 Discussion on
1457 @uref{http://code.google.com/p/lilypond/issues/detail?id=1322}
1458 about \new vs. \context.
1459
1460
1461 @item
1462 Let users add their own items to the parser?  comment 11 on:
1463 @uref{http://code.google.com/p/lilypond/issues/detail?id=1322}
1464
1465 @item
1466 should engravers be pluralized (note_heads_engraver) or not
1467 (note_head_engraver) ?
1468
1469 @item
1470 should we allow numbers in identifier names?  Issue:
1471 @uref{http://code.google.com/p/lilypond/issues/detail?id=1670}
1472
1473 @item
1474 should we officially allow accented characters?  in general, how
1475 do we feel about utf-8 stuff?
1476
1477 @item
1478 for the sake of completeness/simplicity, what about *disallowing*
1479 the "one-note" form of a music expression?  i.e. only allowing
1480 stuff like
1481 @verbatim
1482   \transpose c d { e1 }
1483   \transpose c d << e1 >>
1484 @end verbatim
1485
1486 and never allowing
1487 @verbatim
1488   \transpose c d e1
1489 @end verbatim
1490
1491 @item
1492 What should be the officially encouraged way of writing music for
1493 transposing instruments? Maybe it should be simplified?
1494 See http://lists.gnu.org/archive/html/lilypond-user/2011-07/msg00130.html
1495
1496 @end itemize
1497
1498
1499 @node Unsorted policies
1500 @section Unsorted policies
1501
1502 @subsubheading Language-specific mailing lists
1503
1504 A translator can ask for an official lilypond-xy mailing list once
1505 they've finished all @qq{priority 1} translation items.
1506
1507 @subsubheading Performing yearly copyright update (@qq{grand-replace})
1508
1509 At the start of each year, copyright notices for all source files
1510 should be refreshed by running the following command from the top of
1511 the source tree:
1512
1513 @example
1514 make grand-replace
1515 @end example
1516
1517 Internally, this invokes the script @file{scripts/build/grand-replace.py},
1518 which performs a regular expression substitution for old-year -> new-year
1519 wherever it finds a valid copyright notice.
1520
1521 Note that snapshots of third party files such as @file{texinfo.tex} should
1522 not be included in the automatic update; @file{grand-replace.py} ignores these
1523 files if they are listed in the variable @code{copied_files}.
1524
1525
1526 @subsubheading Push git access
1527
1528 Git access is given out when a contributor has a significant
1529 record of patches being accepted without problems.  If existing
1530 developers are tired of pushing patches for a contributor, we'll
1531 discuss giving them push access.  Unsolicited requests from
1532 contributors for access will almost always be turned down.
1533