]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/web/community.itexi
5060: Web-GSoC: Add contemporary notation project
[lilypond.git] / Documentation / web / community.itexi
1 @c -*- coding: utf-8; mode: texinfo; -*-
2 @ignore
3     Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
4
5     When revising a translation, copy the HEAD committish of the
6     version that you are working on.  For details, see the Contributors'
7     Guide, node Updating translation committishes..
8 @end ignore
9
10 @include included/acknowledge.itexi
11 @include included/authors.itexi
12 @include included/helpus.itexi
13
14 @node Community
15 @unnumbered Community
16
17 @divClass{link-headings}
18
19 @divClass{column-center-top}
20 @subheading Interacting with the community
21
22 @itemize
23
24 @item
25 @ref{Contact}: get help, discuss, and keep in touch!
26
27 @item
28 @ref{Tiny examples}: these are @emph{highly} recommended when
29 discussing LilyPond.
30
31 @item
32 @ref{Bug reports}: something went wrong.
33
34 @end itemize
35 @divEnd
36
37 @divClass{column-left-bottom}
38 @subheading Making LilyPond better
39
40 @itemize
41
42 @item
43 @ref{Help us}: your assistance is requested.
44
45 @item
46 @ref{Sponsoring}: financial contributions.
47
48 @item
49 @ref{Development}: for contributors and testers.
50
51 @item
52 @ref{Google Summer of Code}: ideas for Google Summer of Code (GSoC).
53
54 @item
55 @ref{Authors}: the people who made LilyPond what it is today.
56
57 @item
58 @ref{Acknowledgements}: projects and institutions that support LilyPond
59
60 @end itemize
61 @divEnd
62
63 @divClass{column-right-bottom}
64 @subheading Miscellaneous
65
66 @itemize
67
68 @item
69 @ref{Publications}: what we wrote, and have had written about us.
70
71 @item
72 @ref{News}: news from the LilyPond project.
73
74 @item
75 @ref{Attic}: announcements and changelogs from past versions.
76
77 @end itemize
78 @divEnd
79
80 @divEnd
81
82 @divClass{hide}
83 @menu
84 * Contact::
85 * Tiny examples::
86 * Bug reports::
87 * Help us::
88 * Sponsoring::
89 * Development::
90 * Google Summer of Code::
91 * Authors::
92 * Acknowledgements::
93 * Publications::
94 * News::
95 * Attic::
96 @end menu
97 @divEnd
98
99
100 @node Contact
101 @unnumberedsec Contact
102
103
104 @divClass{column-left-bottom}
105 @subheading User Discussions and Help
106
107 @subsubheading User mailing list: @code{lilypond-user@@gnu.org}
108
109 This mailing list is the main place for users to discuss and help
110 each other.
111
112 @quotation
113 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-user,
114 lilypond-user subscribe and info}
115
116 @uref{http://lists.gnu.org/archive/html/lilypond-user/,
117 user archive1}
118 @uref{http://www.mail-archive.com/lilypond-user@@gnu.org/,
119 archive2}
120 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.general,
121 archive3}
122
123 @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.general,
124 send to lilypond-user with gmane}
125 @end quotation
126
127 @warning{When asking questions, please use @ref{Tiny examples}!}
128
129 @subsubheading LilyPond Snippet Repository
130
131 The LilyPond Snippet Repository is a large collection of
132 user-submitted examples, which can freely be copied and used
133 in your own works.  See what other people have written,
134 and add your own!
135
136 @example
137 @uref{http://lsr.di.unimi.it}
138 @end example
139
140 Particularly instructive examples from LSR are included in our
141 official documentation, in @ref{Snippets}.
142
143
144 @subsubheading IRC
145
146 Some level of support is provided on our IRC channel,
147
148 @example
149 @uref{irc://irc.freenode.net/lilypond, #lilypond@@irc.freenode.net}
150 @end example
151
152 This channel has no public archive, so any question that may
153 be useful for others would better be posted to one of the mailing lists.
154
155 @html
156 <form action="http://webchat.freenode.net"
157       method="get"
158       name="f_lily_irc"
159   <label>irc name:
160     <input name="nick" type="text" size="15" value="">
161   </label>
162   <input name="channels" type="hidden" value="lilypond">
163   <input type="submit" value="Join #lilypond IRC Chat">
164 </form>
165
166 <script language="JavaScript" type="text/javascript">
167   var username = "web";
168   var lang = window.navigator.userLanguage ? window.navigator.userLanguage
169   : window.navigator.language;
170   username += '-' + lang.substr(0, 2);
171   username += '-' + navigator.appName.substr(0, 2);
172   username += navigator.appCodeName.replace (" ", "").substr(0, 2);
173   username += navigator.platform.replace (" ", "").replace("nux", "").replace("n32", "");
174   document.forms["f_lily_irc"].nick.value = username;
175 </script>
176 @end html
177
178 @subsubheading Other languages
179
180 @quotation
181 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-user-fr,
182 French mailing list}
183
184 @uref{http://www.lilypondforum.de/,
185 German forum}
186
187 @uref{http://groups.google.com/group/lilypond-brasil,
188 Portuguese group}
189
190 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-es,
191 Spanish mailing list}
192 @end quotation
193 @divEnd
194
195
196 @divClass{column-right-top}
197 @subheading The LilyPond Blog
198
199 Read our community blog, @q{Scores of Beauty}:
200
201 @example
202 @uref{http://lilypondblog.org}
203 @end example
204
205 @subsubheading Releases mailing list: @code{info-lilypond@@gnu.org}
206
207 This mailing list is a low-volume, read-only list which receives
208 notifications of new releases.
209
210 @quotation
211 @uref{http://lists.gnu.org/mailman/listinfo/info-lilypond,
212 info-lilypond subscribe and info}
213
214 @uref{http://lists.gnu.org/archive/html/info-lilypond/,
215 info archive1}
216 @uref{http://www.mail-archive.com/info-lilypond@@gnu.org/,
217 archive2}
218 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.announce,
219 archive3}
220
221 @c don't include gmane posting here.  -gp
222 @end quotation
223
224
225 @divEnd
226
227
228 @divClass{column-right-bottom}
229 @subheading Developer Discussions and Translations
230
231 @subsubheading Developer mailing list: @code{lilypond-devel@@gnu.org}
232
233 Developer discussions take place on this list. Patches can also be sent
234 here.
235
236 @quotation
237 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-devel,
238 lilypond-devel subscribe and info}
239
240 @uref{http://lists.gnu.org/archive/html/lilypond-devel/,
241 devel archive1}
242 @uref{http://www.mail-archive.com/lilypond-devel@@gnu.org/,
243 archive2}
244 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.devel,
245 archive3}
246
247 @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.devel,
248 send to lilypond-devel with gmane}
249 @end quotation
250
251
252 @subsubheading Bug mailing list: @code{bug-lilypond@@gnu.org}
253
254 Bug reports and discussions should be sent here.  Do not send patches
255 to this list.
256
257 @quotation
258 @uref{http://lists.gnu.org/mailman/listinfo/bug-lilypond,
259 bug-lilypond subscribe and info}
260
261 @uref{http://lists.gnu.org/archive/html/bug-lilypond/,
262 bug archive1}
263 @uref{http://www.mail-archive.com/bug-lilypond@@gnu.org/,
264 archive2}
265 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.bugs,
266 archive3}
267
268 @c don't include gmane posting here.  -gp
269 @end quotation
270
271 @warning{Before sending a message to the bug list, please read our
272 guidelines for @ref{Bug reports}.}
273
274
275 @subsubheading Translation mailing list: @code{translations@@lilynet.org}
276
277 All discussions about translating LilyPond manuals should be sent here.
278 Do not send patches to this list.
279
280 @quotation
281 @uref{http://lilypond-translations.3384276.n2.nabble.com/,
282 Translation mailing list archive}
283 @end quotation
284
285 @divEnd
286
287
288 @node Tiny examples
289 @unnumberedsec Tiny examples
290
291 @divClass{column-center-top}
292 @subheading What are @qq{Tiny examples}?
293
294 A tiny example is an example from which @strong{nothing} can be removed.
295 @divEnd
296
297 @divClass{column-left-bottom}
298 @subheading Why create them?
299
300 @divClass{keep-bullets}
301 @itemize
302
303 @item
304 The simpler the example is, the quicker potential helpers can
305 understand it and help you.
306
307 @item
308 A tiny example demonstrates that you have put effort towards
309 solving the problem yourself.  When people send huge portions of
310 input, it looks like they don't care if we help them or not.
311
312 @item
313 Creating a tiny example helps you to understand what is
314 happening.  Many false problem reports can be avoided by
315 attempting to create a tiny example; if you cannot replicate a
316 @qq{bug} in a tiny example, then the problem was probably an
317 insufficient understanding of LilyPond, not an actual bug!
318
319 @end itemize
320 @divEnd
321
322 @divEnd
323
324
325 @divClass{column-right-bottom}
326 @subheading How to create them?
327
328 @divClass{keep-bullets}
329 @itemize
330
331 @item
332 Include the @code{\version} number.
333
334 @item
335 Make it small!  Examples about spacing or page layout might
336 require many bars of music, but most issues can be reproduced
337 using less than a single measure.
338
339 @item
340 When trying to create an example, try commenting out @w{(@code{%}
341 or @code{%@{ @dots{} %@}})} sections of your file.  If you
342 can comment something while still demonstrating the main idea,
343 then remove the commented-material.
344
345 @item
346 Avoid using complicated notes, keys or time signatures, unless
347 the bug is about the behavior of those items.
348
349 @item
350 Do not use @code{\override} or @code{\set} commands unless the bug
351 is about those specific commands.
352
353 @item
354 Optionally, attach an image showing the desired graphical output.
355
356 @end itemize
357 @divEnd
358
359 @divEnd
360
361 @divClass{column-center-bottom}
362 @subheading How tiny should they be?
363
364 Is the code below a minimal example?
365
366 @example
367 \version "2.14.1"
368 \include "english.ly"
369
370 \score @{
371   \new Staff @{
372     \key d \major
373     \numericTimeSignature
374     \time 2/4
375     <cs' d'' b''>16 <cs' d'' b''>8.
376     %% Here: the tie on the D's looks funny
377     %% Too tall? Left-hand endpoint is not aligned with the B tie?
378     ~
379     <cs' d'' b''>8 [ <b d'' a''> ]
380   @}
381 @}
382 @end example
383
384 Well, it is not very big, but a truly minimal example is here:
385
386 @example
387 \version "2.14.1"
388 @{
389   % middle tie looks funny here:
390   <c' d'' b''>8. ~ <c' d'' b''>8
391 @}
392 @end example
393
394 Very few tiny examples exceed 10 lines of code -
395 quite often 4 lines are enough to demonstrate the problem!
396
397 @divEnd
398
399
400 @node Bug reports
401 @unnumberedsec Bug reports
402
403
404 @divClass{heading-center}
405 If you have input that results in a crash or wrong output,
406 then that is a bug.
407 @divEnd
408
409 @divClass{column-center-top}
410 @subheading Step 1: Known bugs
411
412 We may already know about this bug.  Check here:
413
414 @example
415 @uref{http://sourceforge.net/p/testlilyissues/issues/}
416 @end example
417
418 @warning{Please @strong{DO NOT} add bug reports directly to the
419 bug tracker.  Once an issue has been added to the tracker, feel
420 free to add more information to that report.}
421
422 @divEnd
423
424
425 @divClass{column-left-bottom}
426 @subheading Step 2: Creating a bug report
427
428 If you have discovered a bug which is not listed,
429 please help us by creating a bug report.
430
431 @warning{We only accept reports in the form of
432 @ref{Tiny examples}.  We have very limited resources,
433 so any non-minimal example will be rejected.  Almost
434 every bug can be demonstrated in four notes or less!}
435
436 Here is an example of a good bug report:
437
438 @example
439 % Accidentals should be printed for only
440 % the first note in a tie, but this version
441 % prints flats on both notes.
442 \version "2.10.1"
443
444 \relative c'' @{
445  bes1 ~
446  bes1
447 @}
448 @end example
449
450 @divEnd
451
452 @divClass{column-right-bottom}
453 @subheading Step 3: Sending a bug report
454
455 Once you have verified that the issue is not already known and
456 created a bug report, please send it to us!
457
458 @divClass{keep-bullets}
459 @itemize
460
461 @item
462 If you are subscribed to the @uref{mailto:bug-lilypond@@gnu.org,
463 bug-lilypond@@gnu.org} mailing list, send an email like normal.
464
465 @item
466 If you are not subscribed, you can still post a bug report with
467 the
468 @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs,
469 gmane lilypond.bugs web interface}.
470
471 However, there is a strict @qq{no top-posting} check on the gmane
472 interface, which is often incorrectly triggered by lilypond files.
473 To avoid this, please add:
474
475 @example
476 > I'm not top posting.
477 @end example
478
479 @noindent
480 (you @emph{must} include the @code{>} ) to the top of your bug
481 report.
482
483 @end itemize
484 @divEnd
485 @divEnd
486
487 @divClass{column-center-bottom}
488 @subheading Step 4: Wait for a response
489
490 Once your bug report has been sent to the list, our Bug Squad will
491 examine it; they may ask you for more information.  You will be notified
492 when the report will be added to the bug tracker.  Please allow up to 4
493 days, as we have a limited number of volunteers for this task.
494
495 Once a bug has been added to the tracker, you can comment it to add
496 more information about it.
497 In order to be automatically notified about any activity on the
498 tracker issue, you may subscribe by clicking the envelope
499 symbol next to the issue title.
500 Commenting and subscribing require being logged in with a sourceforge account.
501 @divEnd
502
503 @divClass{column-center-bottom}
504 @subheading Optional help: show the desired behavior
505
506 Once an issue has been added to the tracker, it can be very
507 helpful if we can see the desired output.  Feel free to add input
508 code and/or images (possibly created with other tools) which
509 demonstrate what you think it should look like!
510
511 @divEnd
512
513
514
515 @node Help us
516 @unnumberedsec Help us
517
518 @divClass{column-center-top}
519 @helpusNeed
520
521 @divEnd
522
523 @divClass{column-left-top}
524 @divClass{keep-bullets}
525 @helpusSimple
526
527 @divEnd
528 @divEnd
529
530 @divClass{column-right-top}
531 @helpusAdvanced
532
533 @divEnd
534
535
536 @node Sponsoring
537 @unnumberedsec Sponsoring
538
539 @divClass{keep-bullets}
540 @divClass{column-left-top}
541 @subheading Bounties
542
543 In the past,
544
545 @itemize
546 @item some users have paid for new features
547 @item some developers have added new features for hire
548 @end itemize
549
550 The LilyPond project does not organize such efforts; we neither
551 endorse nor discourage such agreements.  Any contracts between
552 private individuals is the business of those individuals, not
553 ours.
554
555 @divEnd
556
557 @divClass{column-right-top}
558 @subheading Guidelines
559
560 Any user wanting to offer money in exchange for work should bear
561 in mind the following points:
562
563 @itemize
564 @item
565 LilyPond developers may advertise their services on the lilypond
566 email lists from time to time.
567
568 @item
569 Any agreements between private individuals should include the
570 normal precautions when conducting business: who pays, how much do
571 they pay, with what method of payment, and upon what set of
572 conditions.  We suggest that any ambiguity or uncertainty in these
573 questions should be resolved before any work begins.
574
575 @end itemize
576
577 @divEnd
578
579 @divClass{column-center-bottom}
580 @subheading Interested developers
581
582 Here is a list of people who have expressed an interest in
583 bounties.  Note that the amount of work done by individuals varies
584 quite a bit throughout the years.  We do not guarantee that this
585 list is up-to-date, nor do we guarantee that the people listed
586 here have any ability.  The only criteria is "XYZ asked to be
587 listed on this page".
588
589 Looking at the git history is a good way to determine who the most
590 active and experienced developers are.  Statistics up to version
591 @versionDevel{}:
592
593 @multitable @columnfractions .3 .3 .3
594 @item @uref{http://lilypond.org/~graham/gitstats-all/, overall history}
595 @tab @uref{http://lilypond.org/~graham/gitstats-1year/, past year}
596 @tab @uref{http://lilypond.org/~graham/gitstats-3months/, past three months}
597 @end multitable
598
599 Interested developers:
600 @table @asis
601 @item @email{lilypond-devel@@gnu.org, LilyPond developer list}
602 Since no developer currently is listed for commercial development,
603 your best bet is asking on the developer list.
604
605 @c Format
606 @c @item @email{name@@adress.domain, Name}
607 @c area of interest (256 chars max)
608
609 @end table
610
611 @divEnd
612 @divEnd
613
614
615 @node Development
616 @unnumberedsec Development
617
618 @divClass{heading-center}
619 @ifclear web_version
620   @heading Development for LilyPond @version
621 @end ifclear
622 @ifset web_version
623   @heading Development for LilyPond @versionDevel
624 @end ifset
625
626
627 @c we normally don't allow named references, but in this case
628 @c it's good to emphasize the "stable" part.  -gp
629 @warning{These are @emph{unstable development} versions.  If you
630 have the slightest doubt about how to use or install LilyPond, we
631 urge you to use the @ref{Download, stable Download}, and read the
632 @ref{Manuals, stable Manuals}.}
633
634 @divEnd
635
636 @divClass{column-center-top}
637 @subheading Release numbers
638
639 There are two sets of releases for LilyPond: stable releases, and
640 unstable development releases.  Stable versions have an
641 even-numbered @q{minor} version number (e.g., 2.8, 2.10, 2.12).
642 Development versions have an odd-numbered @q{minor} version number
643 (e.g., 2.7, 2.9, 2.11).
644
645 @divEnd
646
647
648 @divClass{column-left-top}
649 @subheading Download
650
651 Instructions for git and compiling are in the Contributor's Guide.
652
653 @quotation
654 @uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git, lilypond git repository}
655 @end quotation
656
657 Documentation writers and testers will generally want to download
658 the latest binary:
659
660 @quotation
661
662 @downloadDevelLinuxNormal
663
664 @downloadDevelLinuxBig
665
666 @downloadDevelLinuxPPC
667
668 @downloadDevelFreeBSDNormal
669
670 @downloadDevelFreeBSDBig
671
672 @downloadDevelDarwinNormal
673
674 @downloadDevelDarwinPPC
675
676 @downloadDevelWindows
677
678 @downloadDevelSource
679
680 @end quotation
681
682 @divEnd
683
684
685 @divClass{column-right-top}
686 @subheading Contributor's Guide
687
688 LilyPond development is a fairly complicated matter.  In order to
689 help new contributors, and to keep the whole system (mostly)
690 stable, we have written a manual for development tasks.
691
692 @docLinksBare{Contributor's Guide, contributor,
693   @rcontribnamed{Top,Contributor's Guide},
694   @manualDevelContributorSplit,
695   @manualDevelContributorBig, 500 kB,
696   @manualDevelContributorPdf, 2.8 MB}
697
698 @divEnd
699
700
701 @divClass{column-center-top}
702 @subheading Regression tests
703
704 @divClass{keep-bullets}
705
706 @ifclear web_version
707
708 @itemize
709 @item
710 @uref{../../input/regression/collated-files.html, Regression tests}:
711 This release's regtests.
712 (@uref{../../input/regression/collated-files.pdf, pdf version})
713
714 @item
715 @uref{../../input/regression/musicxml/collated-files.html, MusicXML tests}:
716 This release's musicXML tests.
717 (@uref{../../input/regression/musicxml/collated-files.pdf, pdf version})
718
719 @item
720 @uref{../../input/regression/abc2ly/collated-files.html, abc2ly tests}:
721 This release's abc2ly tests.
722 (@uref{../../input/regression/abc2ly/collated-files.pdf, pdf version})
723
724 @item
725 @uref{../../input/regression/lilypond-book/collated-files.html, lilypond-book tests}:
726 This release's lilypond-book tests.
727 (@uref{../../input/regression/lilypond-book/collated-files.pdf, pdf version})
728 @end itemize
729
730 @end ifclear
731
732 @ifset web_version
733 @subsubheading Development version
734
735 @itemize
736 @item @regtestDevel (@regtestDevelPdf{})
737
738 @item @regtestDevelXml (@regtestDevelXmlPdf{})
739
740 @item @regtestDevelAbc (@regtestDevelAbcPdf{})
741
742 @item @regtestDevelLilypondBook (@regtestDevelLilypondBookPdf{})
743 @end itemize
744
745 @subsubheading Stable version
746
747 @itemize
748 @item @regtestStable (@regtestStablePdf{})
749
750 @item @regtestStableXml (@regtestStableXmlPdf{})
751
752 @item @regtestStableAbc (@regtestStableAbcPdf{})
753
754 @item @regtestStableLilypondBook (@regtestStableLilypondBookPdf{})
755 @end itemize
756 @end ifset
757
758
759 @subsubheading All versions
760
761 @itemize
762 @item @uref{http://lilypond.org/test, Comparisons between regression tests}
763
764 @item @uref{http://lilypond.org/downloads/binaries/test-output/,
765 Archive of all regression tests}
766
767 @end itemize
768
769 @divEnd
770 @divEnd
771
772
773
774 @divClass{column-center-bottom}
775 @subheading Manuals
776
777 @ifclear web_version
778 @warning{These manuals are for LilyPond @version{}; the latest
779 manuals can be found at @url{http://lilypond.org}}
780 @end ifclear
781
782 @divClass{normal-table}
783 @multitable @columnfractions .3 .3 .3
784 @headitem Introduction
785
786 @item
787 @docLinkSplit{Learning,learning,@manualDevelLearningSplit}
788 @tab
789 @docLinkBig{Learning,learning,@manualDevelLearningBig}
790 @tab
791 @docLinkPdf{Learning,learning,@manualDevelLearningPdf}
792
793 @item
794 @docLinkSplit{Glossary,music-glossary,@manualDevelGlossarySplit}
795 @tab
796 @docLinkBig{Glossary,music-glossary,@manualDevelGlossaryBig}
797 @tab
798 @docLinkPdf{Glossary,music-glossary,@manualDevelGlossaryPdf}
799
800 @item
801 @docLinkSplit{Essay,essay,@manualDevelEssaySplit}
802 @tab
803 @docLinkBig{Essay,essay,@manualDevelEssayBig}
804 @tab
805 @docLinkPdf{Essay,essay,@manualDevelEssayPdf}
806 @end multitable
807
808 @multitable @columnfractions .3 .3 .3
809 @headitem Regular
810
811 @item
812 @docLinkSplit{Notation,notation,@manualDevelNotationSplit}
813 @tab
814 @docLinkBig{Notation,notation,@manualDevelNotationBig}
815 @tab
816 @docLinkPdf{Notation,notation,@manualDevelNotationPdf}
817
818 @item
819 @docLinkSplit{Usage,usage,@manualDevelUsageSplit}
820 @tab
821 @docLinkBig{Usage,usage,@manualDevelUsageBig}
822 @tab
823 @docLinkPdf{Usage,usage,@manualDevelUsagePdf}
824
825 @item
826 @docLinkSplit{Snippets,snippets,@manualDevelSnippetsSplit}
827 @tab
828 @docLinkBig{Snippets,snippets,@manualDevelSnippetsBig}
829 @tab
830 @docLinkPdf{Snippets,snippets,@manualDevelSnippetsPdf}
831 @end multitable
832
833 @multitable @columnfractions .3 .3 .3
834 @headitem Infrequent
835
836 @item
837 @docLinkSplit{Web,web,@manualDevelWebSplit}
838 @tab
839 @docLinkBig{Web,web,@manualDevelWebBig}
840 @tab
841 @docLinkPdf{Web,web,@manualDevelWebPdf}
842
843 @item
844 @docLinkSplit{Changes,changes,@manualDevelChangesSplit}
845 @tab
846 @docLinkBig{Changes,changes,@manualDevelChangesBig}
847 @tab
848 @docLinkPdf{Changes,changes,@manualDevelChangesPdf}
849
850 @item
851 @docLinkSplit{Extending,extending,@manualDevelExtendingSplit}
852 @tab
853 @docLinkBig{Extending,extending,@manualDevelExtendingBig}
854 @tab
855 @docLinkPdf{Extending,extending,@manualDevelExtendingPdf}
856
857 @item
858 @docLinkSplit{Internals,internals,@manualDevelInternalsSplit}
859 @tab
860 @docLinkBig{Internals,internals,@manualDevelInternalsBig}
861 @tab
862 @docLinkPdf{Internals,internals,@manualDevelInternalsPdf}
863 @end multitable
864
865 @ifset web_version
866 @multitable @columnfractions .3
867 @headitem Downloadable
868
869 @item
870 @doctarballDevel
871 @end multitable
872 @end ifset
873
874
875 @divEnd
876 @divEnd
877
878
879
880
881 @node Google Summer of Code
882 @unnumberedsec Google Summer of Code
883
884 @divClass{column-center-top}
885 @subheading What is Google Summer of Code?
886
887 @uref{https://summerofcode.withgoogle.com/, GSoC} is a global program
888 that offers students stipends to write code for free software and open
889 source projects during the summer.  For three months students work to
890 complete a given task as part of the project's community and under the
891 guidance of experienced mentors.  The program is an excellent
892 opportunity for students to gain experience with real-world software
893 development and make a contribution that benefits everyone.  It brings
894 new contributors to LilyPond and enables students who are already
895 involved to become more involved.  LilyPond participates in GSoC as part
896 of the @uref{http://www.gnu.org/, GNU project}.
897
898 @strong{Note:} The accepted mentoring organizations will be announced on
899 February 27, so only then we will officially know that we can
900 participate in this year's program.
901
902 We have had GSoC participants in 2012, 2015 and 2016 and encourage
903 students to apply for future summers.
904
905 If you are interested to apply for the program with LilyPond as a
906 project, please read the information below and don't hesitate to write
907 us on our developer mailing list (see @ref{Contact}).  The student
908 application window is March 20 to April 3, 2017, but we strongly
909 encourage you to get in touch with our community ahead of that.
910
911 @divEnd
912
913 @divClass{column-center-middle-color2}
914 @subheading Project Ideas List
915
916 Below is a list of GSoC project ideas (last update: January 2017), but
917 if you have other ideas for a project you may complete within the three
918 months of the program you're welcome to make a suggestion on our
919 developer mailing list (see @ref{Contact}).  There are a number of areas
920 where LilyPond could be improved, and our development team is always
921 willing to help those who would like to tackle a project similar to
922 those listed below.  As mentor availability varies from project to
923 project and from year to year it is wise to get in touch with us as
924 early as possible.
925
926 A full list of all the current open issues can be found
927 @uref{http://sourceforge.net/p/testlilyissues/issues/, here}.
928
929 @divEnd
930
931 @divClass{column-center-middle-color3}
932 @subheading Improve internal chord structure
933
934 The internal representation of LilyPond chords is not powerful enough
935 to capture the nomenclature of jazz chords.  Currently the chord has
936 a root, a bass and an inversion.  It would be nice to be able to handle
937 stacked or polychords, minor/major, etc.  In order to do this, an
938 internal representation with the ability to capture the essence of
939 complex chords must be developed.  As a bonus, once the internal
940 representation is developed, the output formatting of chord names can
941 be improved.
942
943 @strong{Difficulty:} Easy/medium
944 @strong{Requirements:} Scheme (Guile), but the level necessary can be
945 easily learned
946 @strong{Recommended:} Chord theory and naming
947 @strong{Mentor:} Carl Sorensen
948
949 @divEnd
950
951 @divClass{column-center-middle-color3}
952 @subheading Adopt the SMuFL music font encoding standard
953
954 For several years now a new standard for music fonts has been around:
955 @uref{http://www.smufl.org/, SMuFL}, which is also discussed as becoming part of
956 a future W3C standard for music encoding.  As a FLOSS tool LilyPond should
957 adhere to such an open standard instead of using an isolated solution like it
958 does today.  Adopting SMuFL will help integrating LilyPond with the world of
959 music notation software and eventually give LilyPond users access to a wider
960 selection of notation fonts.
961
962 Making LilyPond compliant to SMuFL includes remapping of the glyphs that are
963 built from METAFONT sources, adjusting the glyphs' metrics to SMuFL's
964 specifications, and finally updating the way LilyPond looks up and positions the
965 glyphs.  As an optional part of this project LilyPond's font loading mechanism
966 could be modified to use notation fonts installed as system fonts instead of
967 inside the LilyPond installation.
968
969 @strong{Difficulty:} Easy/medium
970 @strong{Requirements:} C++ and willingness to get familiar with LilyPond
971 internals.
972 @strong{Recommended:} Interest and experience in working with font files.
973 A little bit of METAFONT.
974 @strong{Mentors:} Werner Lemberg, Abraham Lee
975
976 @divEnd
977
978 @divClass{column-center-middle-color3}
979 @subheading Adding variants of font glyphs
980
981 @divClass{keep-bullets}
982 @itemize
983
984 @item
985 Adding @q{on} and @q{between} staff-line variants.
986
987 @item
988 Shorter and narrower variants of some glyphs for example, accidentals.
989 Another, more specific example could be an ancient notation breve
990 notehead coming in two variants one with a small or big @q{hole} within
991 it.
992
993 @end itemize
994 @divEnd
995
996 @strong{Difficulty:} easy
997 @strong{Requirements:} MetaFont, C++, good eye for details
998 @strong{Recommended knowledge:} basic LilyPond knowledge
999 @strong{Mentor:} Werner Lemberg
1000
1001 @divEnd
1002
1003 @divClass{column-center-middle-color3}
1004 @subheading Contemporary Notation
1005
1006 LilyPond is very good at creating non-standard notation.  Having to
1007 @emph{code} every graphical element instead of simply @emph{drawing}
1008 it may seem cumbersome but is in fact a strong asset.  New notational
1009 functionality can be provided with consistent appearance, automatic
1010 layout and a natural syntactic interface.
1011
1012 Within the @uref{https://github.com/openlilylib/oll-core, openLilyLib}
1013 library system the student will create a fundamental infrastructure
1014 and building blocks to make creating contemporary notation easier.
1015 Additionally (at least) @emph{one} concrete package is developed to
1016 cover specific contemporary notation, such as for example the style
1017 of a given composer, extended playing techniques for a specific
1018 instrument or a certain category of effects.
1019
1020 @strong{Difficulty:} medium
1021 @strong{Requirements:} Scheme (interaction with LilyPond internals),
1022 contemporary notation techniques
1023 @strong{Recommended:} sense of building hierarchical frameworks
1024 @strong{Mentors:} @strong{NN,} Urs Liska
1025
1026 @divEnd
1027
1028 @divClass{column-center-middle-color3}
1029 @subheading Automated testing and documentation for openLilyLib
1030
1031 @uref{https://github.com/openlilylib, openLilyLib} is an extension
1032 framework for LilyPond code providing a “snippets” repository and a
1033 suite of integrated packages such as for example page layout tools or
1034 scholarly annotations.  It is very powerful and promising, but to really
1035 get off the ground two features are missing: automated testing and
1036 documentation generation.
1037
1038 Automated testing is necessary to ensure modifications to functionality
1039 don't break other functions within the library.  There is already some
1040 Automated Testing of the “snippets” repository with Github's Travis
1041 server, but this has to be reconsidered and extended to cover the
1042 standalone packages too.
1043
1044 In order to be usable for a wider range of LilyPond users on a “consumer
1045 level” openLilyLib needs proper documentation.  This documentation has
1046 to be generated from the sources, so a system is needed that requires
1047 package authors to document the input files and provide additional usage
1048 examples, from which documentation is generated.  Ideally but not
1049 necessarily this is implemented as a Git hook, i.e. automatically upon
1050 each update to the repository.  We don't prescribe the tools and
1051 approaches to be used, but the most widely used language in the LilyPond
1052 domain is Python, so there would be some bias towards that.
1053 Alternatively a Scheme solution could be fine so generating the
1054 documentation would actually be triggered by “compiling” a certain
1055 LilyPond input file.  In general it is advisable to make use of proven
1056 concepts and tools from other languages.
1057
1058 The eventual output of the documentation should be a static HTML site
1059 that can be viewed locally and/or uploaded to a website.  But it would
1060 be beneficial if the tool would first generate an intermediate
1061 representation (e.g. a JSON file with additional media files) from which
1062 a Single Page Application could retrieve content for display on
1063 openLilyLib's @uref{https://openlilylib.org, website}.  Development of
1064 such a SPA @emph{can} be part of the GSoC project, but is optional.
1065
1066 @strong{Difficulty:} medium
1067 @strong{Requirements:} Python or Scheme, static website generator(s) or
1068 (Node.js based) dynamic web application technology. Continuous
1069 Integration (can be learned during the bonding period)
1070 @strong{Mentors:} Urs Liska, Matteo Ceccarello
1071
1072 @divEnd
1073
1074 @divClass{column-center-middle-color3}
1075 @subheading MusicXML
1076
1077 Improving MusicXML import and export functions:
1078
1079 @divClass{keep-bullets}
1080 @itemize
1081
1082 @item
1083 Handle basic musical content export like the MIDI export (i.e. using
1084 dedicated exporter classes, derived from the translator class).
1085
1086 @item
1087 Build the XML tree of the basic musical content, add a connection from
1088 music event to XML tag.
1089
1090 @item
1091 Let all LilyPond engravers do their job.
1092
1093 @item
1094 Link each output object (i.e. each stencil or group of stencils) to the
1095 music cause (and thus to the XML tag in the XML tree).
1096
1097 @item
1098 Add an XML output backend, which can then add layout information for
1099 each output object to the XML tags.
1100
1101 @end itemize
1102 @divEnd
1103
1104 There are several possibilities for this project, including building upon
1105 the MusicXML export project from GSoC 2015.
1106
1107 @strong{Difficulty:} medium
1108 @strong{Requirements:} MusicXML, Python, Scheme, basic LilyPond knowledge
1109 @strong{Recommended:} Familiarity with other scorewriters (for cross-testing)
1110 @strong{Mentor:} Jan-Peter Voigt
1111
1112
1113
1114 @divEnd
1115
1116 @divClass{column-center-middle-color2}
1117 @subheading Information for Applicants/Participants
1118
1119 In order to have a satisfying experience with GSoC applicants are
1120 strongly advised to thoroughly read the following recommendations.  Some
1121 of these are relevant for the application process, others for the time
1122 within the project.
1123
1124 @itemize
1125
1126 @item
1127 Read all applicable information on the program's website, particularly
1128 the
1129 @uref{https://developers.google.com/open-source/gsoc/resources/manual,
1130 students' manual}.  Make sure you fulfil all of Google's prerequisites
1131 and are willing to join the program as a full-time commitment over the
1132 coding period of three months.
1133
1134 @item
1135 Please get in touch with us as soon as possible if you are interested in
1136 applying with a project.  Mentor availability may change without notice,
1137 project proposals may need fine-tuning, and many other reasons might
1138 require us to reject or ignore an application that hasn't been discussed
1139 before.
1140
1141 @item
1142 We do not know in advance how many “slots” we will have available for
1143 projects, so please be aware that you may find yourself in competition
1144 with other applicants or not.  Interested or even enthusiastic response
1145 from our mentors is no guarantee of eventually being accepted, and
1146 @emph{not} being accepted does not necessarily indicate a negative
1147 evaluation of your application.  If we have to decide between different
1148 applicants there may be various aspects to consider.
1149
1150 @item
1151 Integration in the LilyPond community is a fundamental part of GSoC, and
1152 we expect our students to make substantial efforts to become community
1153 members.  Within the @emph{bonding period} we expect you to write a blog
1154 post about your project (either on @uref{http://lilypondblog.org, Scores
1155 of Beauty} or on any other blog) and to be active on our mailing lists,
1156 introducing yourself but also communicating about unrelated tasks.  This
1157 goes beyond the mere setting up of a working environment and
1158 familiarizing yourself with the relevant code, but we think it is
1159 crucial for the GSoC project to be mutually satisfying.
1160
1161 @item
1162 If you are accepted to the program you will have one mentor explicitly
1163 assigned to your project.  With this mentor you will have to agree upon
1164 a communication strategy, be it emails, chatrooms, issue trackers or
1165 voice/video chats.  Regular communication is absolutely crucial for the
1166 success of a GSoC project so you are stricly required to keep talking to
1167 your mentor.  But keep in mind that your mentor has explicitly taken
1168 over the responsibility for your project, and while unlike you he isn't
1169 paid for this activity you are still entitled to get regular attention
1170 from him.
1171
1172 @item
1173 In order to get support from your mentor you have to give him a chance
1174 to follow your progress and efforts.  Therefore it is important to
1175 regularly commit your changes to the versioning repository you are
1176 working on.  Don't hesitate making unfinished code available because you
1177 are afraid of criticism, and don't suppress questions because you think
1178 they might be considered stupid.  But ideally your code should at any
1179 time be accompanied by compatible testing code.  Your mentor may not be
1180 able to properly assess your code by only @emph{reading} it without the
1181 opportunity to apply it in a real example.
1182
1183 @end itemize
1184
1185 There is a list of inactive projects in the @ref{Attic}.  We list
1186 projects there that are still considered valuable but for which there
1187 are currently no mentors available.
1188
1189 @divEnd
1190
1191 @node Authors
1192 @unnumberedsec Authors
1193
1194 @divClass{column-left-top}
1195 @subheading Current Development Team
1196
1197 @divClass{keep-bullets}
1198 @developersCurrent
1199 @divEnd
1200 @divEnd
1201
1202 @divClass{column-right-top}
1203 @subheading Previous Development Team
1204
1205 @divClass{keep-bullets}
1206 @developersPrevious
1207 @divEnd
1208 @divEnd
1209
1210
1211 @divClass{column-center-top}
1212 @subheading Current Contributors
1213
1214 @divClass{keep-bullets}
1215 @subsubheading Programming
1216
1217 @coreCurrent
1218
1219 @subsubheading Font
1220
1221 @fontCurrent
1222
1223 @subsubheading Documentation
1224
1225 @docCurrent
1226
1227 @subsubheading Bug squad
1228
1229 @bugsquadCurrent
1230
1231 @subsubheading Support
1232
1233 @supportCurrent
1234
1235 @subsubheading Translation
1236
1237 @translationsCurrent
1238
1239 @divEnd
1240 @divEnd
1241
1242
1243 @divClass{column-center-bottom}
1244 @subheading Previous Contributors
1245
1246 @divClass{keep-bullets}
1247 @subsubheading Programming
1248
1249 @corePrevious
1250
1251 @subsubheading Font
1252
1253 @fontPrevious
1254
1255 @subsubheading Documentation
1256
1257 @docPrevious
1258
1259 @c    uncomment when we have any previous members -gp
1260 @c @subsubheading Bug squad
1261
1262 @c @bugsquadCurrent
1263
1264 @subsubheading Support
1265
1266 @supportPrevious
1267
1268 @subsubheading Translation
1269
1270 @translationsPrevious
1271
1272 @divEnd
1273 @divEnd
1274
1275 @node Acknowledgements
1276 @unnumberedsec Acknowledgements
1277
1278 @divClass{column-center-top}
1279 @subheading Acknowledgements
1280
1281 @divClass{keep-bullets}
1282 @acknowledgementsCurrent
1283 @divEnd
1284 @divEnd
1285
1286
1287 @node Publications
1288 @unnumberedsec Publications
1289
1290 @divClass{column-center-top}
1291 @subheading What we wrote about LilyPond
1292
1293 @divClass{keep-bullets}
1294
1295 @include we-wrote.itexi
1296
1297 @divEnd
1298 @divEnd
1299
1300 @divClass{column-center-bottom}
1301 @subheading What people did with LilyPond
1302
1303 @divClass{keep-bullets}
1304
1305 @include others-did.itexi
1306
1307 @divEnd
1308 @divEnd
1309
1310 @contactUsAbout{academic papers}
1311
1312
1313 @node News
1314 @unnumberedsec News
1315
1316 @divClass{heading-center}
1317 @warning{Many old announcements and changelogs can be found in
1318 the @ref{Attic}}
1319 @divEnd
1320
1321 @include web/news-front.itexi
1322
1323 @include web/news.itexi
1324
1325
1326 @node Attic
1327 @unnumberedsec Attic
1328
1329 @divClass{column-center-top}
1330 @subheading Announcements
1331
1332 Announcements and news by version:
1333 @uref{http://lilypond.org/doc/v2.16/Documentation/web/index#Lilypond-2_002e16_002e0-released_0021-August-24_002c-2012-1,v2.16},
1334 @uref{http://lilypond.org/doc/v2.14/Documentation/web/index#LilyPond-2_002e14_002e0-released_0021-June-6_002c-2011,v2.14},
1335 @miscLink{announce-v2.12,v2.12},
1336 @miscLink{announce-v2.10,v2.10},
1337 @miscLink{announce-v2.8,v2.8},
1338 @miscLink{announce-v2.6,v2.6},
1339 @miscLink{announce-v2.4,v2.4},
1340 @miscLink{announce-v2.2,v2.2},
1341 @miscLink{announce-v2.0,v2.0},
1342 @miscLink{ANNOUNCE-1.2,v1.2},
1343 @miscLink{ANNOUNCE-1.0,v1.0},
1344 @miscLink{ANNOUNCE-0.1,v0.1}
1345
1346 Descriptive list of changes by version:
1347 @uref{http://lilypond.org/doc/v2.16/Documentation/changes/index.html,v2.16},
1348 @uref{http://lilypond.org/doc/v2.14/Documentation/changes/index.html,v2.14},
1349 @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS,v2.12},
1350 @uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS,v2.10},
1351 @uref{http://lilypond.org/doc/v2.8/Documentation/topdocs/NEWS,v2.8},
1352 @uref{http://lilypond.org/doc/v2.6/Documentation/topdocs/NEWS,v2.6},
1353 @uref{http://lilypond.org/doc/v2.4/Documentation/topdocs/out-www/NEWS,v2.4},
1354 @uref{http://lilypond.org/doc/v2.2/Documentation/topdocs/out-www/NEWS,v2.2},
1355 @uref{http://lilypond.org/doc/v2.0/Documentation/topdocs/out-www/NEWS,v2.0},
1356 @uref{http://lilypond.org/doc/v1.8/Documentation/topdocs/out-www/NEWS,v1.8},
1357 @uref{http://lilypond.org/doc/v1.6/Documentation/out-www/NEWS,v1.6},
1358 @miscLink{NEWS-1.4,v1.4},
1359 @miscLink{NEWS-1.2,v1.2}
1360
1361 @divEnd
1362
1363 @divClass{column-center-bottom}
1364 @subheading Thanks
1365
1366 Thanks to developers, contributors, bug hunters and suggestions for
1367 @miscLink{THANKS-2.16,v2.16},
1368 @miscLink{THANKS-2.14,v2.14},
1369 @miscLink{THANKS-2.12,v2.12},
1370 @miscLink{THANKS-2.10,v2.10},
1371 @miscLink{THANKS-2.8,v2.8},
1372 @miscLink{THANKS-2.6,v2.6},
1373 @miscLink{THANKS-2.4,v2.4},
1374 @miscLink{THANKS-2.2,v2.2},
1375 @miscLink{THANKS-2.0,v2.0},
1376 @miscLink{THANKS-1.8,v1.8}
1377
1378 @divEnd
1379
1380 @divClass{column-center-bottom}
1381 @subheading Changelogs
1382
1383 Developers' changelogs by version:
1384 @miscLink{ChangeLog-2.10,v2.10},
1385 @miscLink{ChangeLog-2.3,v2.3},
1386 @miscLink{ChangeLog-2.1,v2.1},
1387 @miscLink{ChangeLog-1.5,v1.5 (1)},
1388 @miscLink{CHANGES-1.5,v1.5 (2)},
1389 @miscLink{CHANGES-1.4,v1.4},
1390 @miscLink{CHANGES-1.3,v1.3},
1391 @miscLink{CHANGES-1.2,v1.2},
1392 @miscLink{CHANGES-1.1,v1.1},
1393 @miscLink{CHANGES-1.0,v1.0},
1394 @miscLink{CHANGES-0.1,v0.1},
1395 @miscLink{CHANGES-0.0,v0.0}
1396
1397 @divEnd
1398
1399 @divClass{column-center-middle-color2}
1400 @subheading Unused Google Summer of Code project suggestions
1401
1402 The following list describes GSoC projects that had been proposed
1403 in recent years and which are still considered valuable but for
1404 which we currently don't have mentors available.
1405
1406 @divEnd
1407
1408 @divClass{column-center-middle-color3}
1409 @subheading Improve slurs and ties
1410
1411 The engraving quality of slurs and ties is often unsatisfactory. Ties
1412 @q{broken} by clef or staff changes are not handled well.  The project
1413 could include collecting and sorting examples of bad output, deciding on
1414 the intended output and writing code to improve them.
1415
1416 @strong{Difficulty:} hard
1417 @strong{Requirements:} C++, experience with writing heuristics
1418 @strong{Recommended knowledge:} LilyPond knowledge, aesthetic sense
1419
1420
1421 @divEnd
1422
1423 @divClass{column-center-middle-color3}
1424 @subheading Grace notes
1425
1426 Fix problems with synchronization of grace notes.  Grace notes can
1427 interfere with LilyPond's timing and cause odd effects, especially when
1428 multiple staffs are used where some have grace notes and others don't.
1429 This is one of the longest-standing and one of the more embarrassing
1430 @uref{https://sourceforge.net/p/testlilyissues/issues/34/,bugs} in
1431 LilyPond.
1432
1433 @strong{Difficulty:} medium
1434 @strong{Requirements:} C++, MIDI
1435 @strong{Recommended:} familiarity with LilyPond internals
1436
1437 @divEnd
1438
1439 @divClass{column-center-middle-color3}
1440 @subheading Improve default beam positioning
1441
1442 For regular, cross-staff, broken and kneed beams.  Beaming should depend
1443 on context and neighbor notes (see section 2.2 of
1444 @uref{http://imslp.org/wiki/Repository_of_Music-Notation_Mistakes_%28Coulon%2C_Jean-Pierre%29,
1445 this book}).  If possible also reduce beaming-computation time.
1446
1447 @strong{Difficulty:} medium
1448 @strong{Requirements:} C++, experience with writing heuristics
1449 @strong{Recommended knowledge:} aesthetic sense
1450
1451 @divEnd
1452
1453 @divClass{column-center-middle-color3}
1454 @subheading Help improve compilation behavior
1455
1456 Automatic code analysis tools, like valgrind memory leak detection or
1457 callgrind code profilers, provide valuable information about possible
1458 flaws in our C++ code.  Cleaning up warnings would allow us to automate
1459 the rejection of any patch which introduced extra warnings.
1460
1461 @strong{Difficulty:} medium
1462 @strong{Requirements:} C++
1463
1464 @divEnd