]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/contributor/administration.itexi
Doc: CG remove ugly bars at end of lines in doc
[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 @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 @code{-devel} when
114 they've had some initial review on the Frog list, pesters the
115 @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{Future release policy}:
364 (how) should we change any policies pertaining to releases? Should
365 an undocumented new feature count as release-blocking?
366
367 (prep: 1 hour.  discuss: 15 hours)
368
369 @item @strong{lilypond-hackers mailing list}:
370 Should we have a private mailing list for senior developers?  If
371 so, who should be on it?
372
373 (prep: 2 hours+3 weeks.  discuss: 10 hours)
374
375 @item @strong{Hackers B}:
376
377
378 @item @strong{Git repository(s)}:
379 We currently have a web/ branch in our main repo; this seems
380 misleading to new developers. More generally, should we have
381 branches that aren't related to the master? i.e. should we
382 restrict a git branch to code which is an actual "branch" of
383 development? Also, some of our code (notably the windows and osx
384 lilypad) isn't in a git repository at all.
385 We can add new repositories very easily; should make repositories
386 like
387 @example
388 git://git.sv.gnu.org/lilypond/gub.git
389 git://git.sv.gnu.org/lilypond/lilypad.git
390 git://git.sv.gnu.org/lilypond/misc.git
391 @end example
392 ? More information here:
393 @uref{http://code.google.com/p/lilypond/issues/detail?id=980}
394
395 (prep: 2 hours.  discuss: 10 hours)
396
397 @item @strong{Roadmap of future development}:
398 Many projects have a roadmap of planned (or desired) future work.
399 Should we use one? If so, what should go on it, bearing in mind
400 our volunteer status? Is there any way of having a roadmap that
401 isn't vaporware?
402
403 (prep: 1 hour.  discuss: 5 hours)
404
405 @item @strong{Official links to other organizations?}:
406 There's something called the "software freedom conservancy", and
407 in general, there's a bunch of "umbrella organizations". Joining
408 some of these might give us more visibility, possibly leading to
409 more users, more developers, maybe even financial grants or use in
410 schools, etc.
411
412 (prep: 2 hours.  discuss: 5 hours)
413
414 @item @strong{Mailing lists}:
415 We currently have a mix of official GNU mailing lists and lilynet
416 lists. Is there a strong rationale for having separate mailing
417 list servers? Why not pick one place, and put all our lists there?
418 (or at least, all "permanent" lists?)
419
420 (prep: 1 hour.  discuss: 5 hours)
421
422 @item @strong{Issue tracking with google code}:
423 We use the google issue tracker, but this means that we are
424 relying on a commercial entity for a large part of our
425 development. Would it be better (safer in the long run) to use the
426 savannah bug tracker?
427
428 (prep: 1 hour.  discuss: 5 hours)
429
430 @item @strong{Patch review tool}:
431 Reitveld is inconvenient in some respects: it requires a google
432 account, and there's no way to see all patches relating to
433 lilypond. Should we switch to something like gerritt?
434 @uref{http://code.google.com/p/lilypond/issues/detail?id=1184}
435
436 (prep: 5 hours.  discuss: 15 hours)
437
438 @item @strong{Subdomains of *.lilypond.org}:
439 Unless Jan has a really weird DNS hosting setup, there are no
440 technical barriers to having names like lsr.lilypond.org,
441 frog.lilypond.org, or news.lilypond.org. Is this something that we
442 want to do?
443
444 (prep: 1 hours+2 weeks.  discuss: 5 hours)
445
446 @item @strong{Authorship in source files}:
447 Our documentation currently does not attempt to track individual
448 authors of each file, while our source code makes a confused and
449 jumbled attempt to track this. A number of guidelines for F/OSS
450 projects explicitly recommends _not_ tracking this in individual
451 files, since the code repository will track that for you.
452
453 (prep: 2 hours.  discuss: 15 hours)
454
455 @item @strong{Clarity for sponsorships}:
456 We currently do not advertize bounties and sponsorships on the
457 webpage.  How much advertising do we want, and what type?
458 Should we change the "structure" / "framework" for bounties?
459
460 (prep: 2 hours.  discuss: 10 hours)
461
462 @item @strong{Separate branches for active development}:
463 it might be good to have @emph{everybody} working on separate
464 branches.  This complicates the git setup, but with sufficient
465 logic in lily-git.tcl, we can probably make it transparent to
466 newbies.  However, we'd need a reliable person to handle all the
467 required merging and stuff.
468
469 (prep: 2 hours.  discuss: 10 hours)
470
471 @item @strong{When do we add regtests?}:
472 There is a discrepancy between our stated policy on adding
473 regtests, and our actual practice in handling bugs and patches.
474 Clarify.
475
476 There is also a wider question how to organize the regtests, such
477 as where to put interesting-console-output regtests, including
478 stuff like lilypond-book and midi2ly in a sensible manner, and
479 possibly including regtests for currently-broken functionality.
480
481 (prep: 2 hours.  discuss: 5 hours)
482
483 @item @strong{code readability}:
484 "Our aim when producing source code for Lilypond in whatever
485 language is that it should be totally comprehensible to a
486 relatively inexperienced developer at the second reading."
487
488 Rationale:
489 - aids maintainability of code base
490 - "second reading" so newer developers can look up unfamiliar
491   stuff
492 - will help to keep things simple, even if the code is doing
493   complex stuff discourages "secret squirrel" coding, e.g.  "how
494   much functionality can I squeeze into as few characters as
495   possible" "comments are for wimps"
496 - will aid not *discouraging* new developers to join the project
497
498 (prep: 2 hours.  discuss: 10 hours)
499
500 @item @strong{C++ vs. scheme}:
501 what should be in scheme, what should be in C++, what can/should
502 be ported from one to the other, etc.  Questions of
503 maintainability, speed (especially considering guile 2.0), and the
504 amount of current material in either form, are important.
505
506 (prep: 5 hours.  discuss: 15 hours)
507
508 @end itemize
509
510 @node Policy decisions (finished)
511 @subsection Policy decisions (finished)
512
513 @subheading GOP-PROP 1: python formatting
514
515 We will follow the indentation described in PEP-8.
516 @uref{http://www.python.org/dev/peps/pep-0008/}
517
518 @itemize
519 @item
520 use 4 spaces per indentation level
521
522 @item
523 never mix tabs and spaces (for indentation)
524
525 @item
526 Code indented with a mixture of tabs and spaces should be
527 converted to using spaces exclusively
528
529 Once this is done, we should add @code{python -tt} to the build
530 system to avoid such errors in the future.
531
532 @end itemize
533
534 There should be absolutely no tab characters for indentation in
535 any @code{.py} file in lilypond git.  All such files should be
536 converted to use spaces only.
537
538
539
540 @node Grand LilyPond Input Syntax Standardization (GLISS)
541 @section Grand LilyPond Input Syntax Standardization (GLISS)
542
543 @subheading Summary
544
545 @itemize
546 @item
547 Start: sortly after 2.14 comes out, which is currently estimated
548 to happen in January 2011.
549
550 @item
551 Length: 6-12 months.  We're not going to rush this.
552
553 @item
554 Goal: define an input which we commit to being
555 machine-updateable for the forseeable future.  Any future patches
556 which change the syntax in a non-convert-ly-able format will be
557 rejected.  (subject to the limitations, below)
558 Once this is finished, we will release lilypond 3.0.
559
560 @end itemize
561
562
563 @subheading The Problem
564
565 One of the biggest complaints people have with lilypond -- other
566 than silly thing like "there's no gui" -- is the changing syntax.
567 Now, inventing a language or standards is difficult.  If you set
568 it in stone too soon, you risk being stuck with decisions which
569 may limit matters.  If you keep on updating the syntax,
570 interaction with older data (and other programs!) becomes complex.
571
572 @subheading Scope and Limitations
573
574 @itemize
575 @item
576 tweaks will not be included.  Anything with \override, \set,
577 \overrideProperty, \tweak, \revert, \unset... including even those
578 command names themselves... is still fair game for NOT_SMART
579 convert-ly updates.
580
581 @item
582 other than that, everything is on the table.  Is it a problem to
583 have the tagline inside \header?  What should the default behavior
584 of \include be?  When we abolish \times, do we move to \tuplet 3:2
585 or \tuplet 2/3 or what (for typical triplets in 4/4 time)?
586
587 @item
588 we need to get standards for command names.  This will help users
589 remember them, and reduce the options for future names (and
590 potential renamings later on).  \commandOn and \commandOff seem to
591 work well (should we *always* have an Off command?), but what
592 about the "command" part?  Should it be \nounVerbOn, or
593 \verbNounOn ?  Or \verbNotesWithExtraInformationOn ?
594
595 @item
596 we need standards for the location of commands.  Ligature
597 brackets, I'm looking at you.  (non-postfix notation must die!)
598
599 @item
600 this Grand Project doesn't affect whether we have a 2.16 or not.
601 The main problem will be deciding what to do (with a bit of
602 messiness anticipated for \tuplet); we should definitely release a
603 2.16 before merging _any_ of these changes.
604
605 @item
606 we obviously can't /guarantee/ that we'll /never/ make any
607 non-convert-ly changes in the basic format.  But we *can*
608 guarantee that such changes would force lilypond 4.0, and that we
609 would only do so for overwhelmingly good reasons.
610
611 @end itemize
612
613 @subheading Workflow
614
615 @itemize
616 @item
617 We're going to have lots and lots of emails flying around.  The
618 vast majority won't really fit into either -devel or -user, so
619 we'll use a list devoted to syntax issues.
620
621 @item
622 Once we have a serious proposal that gained general acceptance
623 from the separate syntax mailing list, I'll bring it to -devel.
624 We're not going to make any changes without discussing it on
625 -devel, but if we're going to have huge threads about English
626 grammar and silly ideas, and I don't want to clutter up -devel.
627 Once whatever chaotic silliness on the syntax list is settled
628 down, I'll bring the ideas to -devel.
629
630 @item
631 as with GDP, I'll moderate the discussion.  Not as with mailist
632 moderation, but rather by introducing issues at specific times.
633 We don't want a free-for-all discussion of all parts of the syntax
634 at once; nothing will get resolved.
635
636 @item
637 Whenever possible, we'll decide on policies at the highest level
638 of abstraction.  For example, consider \numericTimeSignature,
639 \slurUp, \xNotesOn, \startTextSpan, and \verylongfermata.  One of
640 them starts with the name of the notation first (slur).  One has
641 an abbreviation (x instead of cross).  One has the verb at the end
642 (On), another has it at the beginning (start).  The adjective can
643 come at the beginning (numeric, x) or end (Up).  Most are in
644 camelCase, but one isn't (verylongfermata).
645
646 @item
647 Instead of arguing about each individual command, we'll decide on
648 abstract questions.  Should each command begin the notation-noun,
649 or the verb?  Should all commands be in camelCase, or should we
650 make everything other than articulations in camelCase but make
651 articulations all lower-case?  Are abbreviations allowed?
652
653 @item
654 Once we've answered such fundamental questions, most of the syntax
655 should fall into place pretty easily.  There might be a few odd
656 questions left ("is it a span, or a spanner?"), but those can be
657 settled fairly quickly.
658
659 @end itemize
660
661 @subheading Implementation
662
663 Nothing until the project is finished, then we declare the next
664 stable release (2.16.0 or 2.18.0 ?) to be the final 2.x version,
665 release it, then apply all the GLISS syntax changes and start
666 testing a beta for 3.0 a week or two later.
667
668 @subheading Discussion
669
670 Don't respond to any of the specifics yet.  Yes, we all have our
671 pet irritations (like "what's up with \paper and \layout?!").
672 There will be plenty of time to discuss them once GLISS starts.
673
674 That said, we have a list of specific items that people really
675 wanted to have written down.  See @ref{Specific GLISS issues}.
676
677 @menu
678 * Specific GLISS issues::
679 @end menu
680
681
682 @node Specific GLISS issues
683 @subsection Specific GLISS issues
684
685 @itemize
686 @item
687 add regtests for every piece of syntax (not one-command-per-file,
688 but making a few files which, between them, use every single piece
689 of syntax.)  This is a great test for convert-ly.
690
691 @item
692 should GLISS cover suggested conventions?  (indentation,
693 one-bar-per-line, etc -- the kind of stuff we list for the
694 lilypond formatting in the docs ?)
695
696 @item
697 how much (if any) syntactic sugar should we add?  i.e.
698 @example
699   \instrumentName #'foo
700 % instead of
701   \set Staff.instrumentName
702 @end example
703 ?  Carl: maybe yes, Neil: no.  (for example, it fails for
704 pianostaff)
705
706 @item
707 the values that are used as arguments to common used overrides.
708 Sometimes they are a symbol (e.g. #'around), sometimes a
709 predefined variable referring to a Scheme value or object (e.g.
710 #LEFT, #all-visible ). The main trouble is that for novice users
711 it is not clear when there should be an apostrophe and when not.
712
713 @item
714 When do we need -\command and when is it just \command ?
715
716
717 @item
718 Command-line options to the lilypond binary.  -dfoo counts as a
719 tweak; we won't be trying to pin those down.
720
721 @item
722 @verbatim
723 \layout {
724   \context { \Score
725 % vs.
726 \layout {
727   \context {
728     \Score
729 @end verbatim
730
731 @item
732 If would be pedagogically simpler to realize this difference if
733 the syntax was separate if you define a context from scratch (as
734 is the case with \RemoveEmptyStaffContext) or if it's defined by
735 adding onto an existing context. For example, a syntax like
736
737 @verbatim
738 \context{
739  % Copy the current settings of the Staff context:
740  \use Staff
741  % do whatever additional settings
742 }
743 %%% could be used to distinguish from
744 \context{
745  % Take settings from a variable:
746  \Variable
747  % do whatever additional settings
748 }
749
750 %%% and
751
752 \context{
753  % Start from scratch:
754  \type ...
755  \name ...
756  \consists ...
757  ...
758 }
759 @end verbatim
760
761 @item
762 Capitalization of identifiers: \VoiceOne ?
763
764 @item
765 @verbatim
766 %%% Allow
767 { music expression } * 4
768 %%% instead of
769 \repeat unfold 4 { music expression }
770 @end verbatim
771
772 ?  patch here:
773 @smallexample
774 @uref{http://lists.gnu.org/archive/html/lilypond-devel/2010-04/msg00467.html}
775 @end smallexample
776
777 @item
778 Personally, I find it easier to understand when there's a repeated
779 8 in the half-bar position; it's much easier to see that you have
780 two groups of 4:
781
782 @example
783 c8 c c c c8 c c c
784 %%% instead of one group of eight:
785 c8 c c c c c c c
786 @end example
787
788 @item
789 trivially simple bar-lines:
790
791 c1 | c1 |
792
793 encourage, allow, or discourage, or disallow?
794
795 @item
796 indentation of \\ inside a @{@} construct.
797
798
799 @item
800 barline checks at the end of line should be preceded by at least 2
801 spaces?  barline checks should line up if possible (i.e.  if you
802 can use less than 4, 8, X empty spaces before a barline check to
803 make them line up?)
804
805 @item
806 Why doesn't \transpose respect \relative mode?
807
808
809 @item
810 on \score vs. \new Score
811
812 But in the light of a consistent syntax and semantic, I see no
813 reason (from the users POV) to disallow it.  After all, the real
814 top-level context is a \book @{@}, isn't it, and I don't see a point
815 in disallowing a \new Score construct just like \new Staff.
816
817 From a syntactical POV, I see the following pros for \new Score:
818 - You can write \with @{ ... @} for every other context but \Score,
819 which (for consistency) should also work with \new Score.
820 - When there's a \new Foo Bar, there's also a \context Foo Bar,
821   which makes the same as a parallel instantiation of all Bar's.
822 - [Quoting Rune from
823 @uref{http://www.mail-archive.com/lilypond-devel@@gnu.org/msg14713.html}
824   "I know that the \score-statement is a syntactical construct,
825 but I think it would be nice to hide this fact from the users.  I
826 think we could make the use of score-block much more intuitive if
827 changing the syntax to \new \Score and adding an implicit
828 sequential-statement to the score."
829
830
831 @item
832 Discussion on
833 @uref{http://code.google.com/p/lilypond/issues/detail?id=1322}
834 about \new vs. \context.
835
836
837 @item
838 Let users add their own items to the parser?  comment 11 on:
839 @uref{http://code.google.com/p/lilypond/issues/detail?id=1322}
840
841 @item
842 should engravers be pluralized (note_heads_engraver) or not
843 (note_head_engraver) ?
844
845 @item
846 should we allow numbers in identifier names?  Issue:
847 @uref{http://code.google.com/p/lilypond/issues/detail?id=1670}
848
849 @item
850 should we officially allow accented characters?  in general, how
851 do we feel about utf-8 stuff?
852
853 @item
854 for the sake of completeness/simplicity, what about *disallowing*
855 the "one-note" form of a music expression?  i.e. only allowing
856 stuff like
857 @verbatim
858   \transpose c d { e1 }
859   \transpose c d << e1 >>
860 @end verbatim
861
862 and never allowing
863 @verbatim
864   \transpose c d e1
865 @end verbatim
866
867 @end itemize
868
869
870 @node Unsorted policies
871 @section Unsorted policies
872
873 @subsubheading Language-specific mailing lists
874
875 A translator can ask for an official lilypond-xy mailing list once
876 they've finished all @qq{priority 1} translation items.
877
878 @subsubheading Performing yearly copyright update (@qq{grand-replace})
879
880 At the start of each year, copyright notices for all source files
881 should be refreshed by running the following command from the top of
882 the source tree:
883
884 @example
885 make grand-replace
886 @end example
887
888 Internally, this invokes the script @file{scripts/build/grand-replace.py},
889 which performs a regular expression substitution for old-year -> new-year
890 wherever it finds a valid copyright notice.
891
892 Note that snapshots of third party files such as @file{texinfo.tex} should
893 not be included in the automatic update; @file{grand-replace.py} ignores these
894 files if they are listed in the variable @code{copied_files}.
895
896
897 @subsubheading Push git access
898
899 Git access is given out when a contributor has a significant
900 record of patches being accepted without problems.  If existing
901 developers are tired of pushing patches for a contributor, we'll
902 discuss giving them push access.  Unsolicited requests from
903 contributors for access will almost always be turned down.
904