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