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