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