1 @c -*- coding: utf-8; mode: texinfo; -*-
3 Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
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..
10 @include included/acknowledge.itexi
11 @include included/authors.itexi
12 @include included/helpus.itexi
17 @divClass{link-headings}
19 @divClass{column-center-top}
20 @subheading Interacting with the community
25 @ref{Contact}: get help, discuss, and keep in touch!
28 @ref{Tiny examples}: these are @emph{highly} recommended when
32 @ref{Bug reports}: something went wrong.
37 @divClass{column-left-bottom}
38 @subheading Making LilyPond better
43 @ref{Help us}: your assistance is requested.
46 @ref{Sponsoring}: financial contributions.
49 @ref{Development}: for contributors and testers.
52 @ref{Google Summer of Code}: ideas for Google Summer of Code (GSoC).
55 @ref{Authors}: the people who made LilyPond what it is today.
58 @ref{Acknowledgements}: projects and institutions that support LilyPond
63 @divClass{column-right-bottom}
64 @subheading Miscellaneous
69 @ref{Publications}: what we wrote, and have had written about us.
72 @ref{News}: news from the LilyPond project.
75 @ref{Attic}: announcements and changelogs from past versions.
90 * Google Summer of Code::
101 @unnumberedsec Contact
104 @divClass{column-left-bottom}
105 @subheading User Discussions and Help
107 @subsubheading User mailing list: @code{lilypond-user@@gnu.org}
109 This mailing list is the main place for users to discuss and help
113 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-user,
114 lilypond-user subscribe and info}
116 @uref{http://lists.gnu.org/archive/html/lilypond-user/,
118 @uref{http://www.mail-archive.com/lilypond-user@@gnu.org/,
120 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.general,
123 @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.general,
124 send to lilypond-user with gmane}
127 @warning{When asking questions, please use @ref{Tiny examples}!}
129 @subsubheading LilyPond Snippet Repository
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,
137 @uref{http://lsr.di.unimi.it}
140 Particularly instructive examples from LSR are included in our
141 official documentation, in @ref{Snippets}.
146 Some level of support is provided on our IRC channel,
149 @uref{irc://irc.freenode.net/lilypond, #lilypond@@irc.freenode.net}
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.
156 <form action="http://webchat.freenode.net"
160 <input name="nick" type="text" size="15" value="">
162 <input name="channels" type="hidden" value="lilypond">
163 <input type="submit" value="Join #lilypond IRC Chat">
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;
178 @subsubheading Other languages
181 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-user-fr,
184 @uref{http://www.lilypondforum.de/,
187 @uref{http://groups.google.com/group/lilypond-brasil,
190 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-es,
191 Spanish mailing list}
196 @divClass{column-right-top}
197 @subheading The LilyPond Blog
199 Read our community blog, @q{Scores of Beauty}:
202 @uref{http://lilypondblog.org}
205 @subsubheading Releases mailing list: @code{info-lilypond@@gnu.org}
207 This mailing list is a low-volume, read-only list which receives
208 notifications of new releases.
211 @uref{http://lists.gnu.org/mailman/listinfo/info-lilypond,
212 info-lilypond subscribe and info}
214 @uref{http://lists.gnu.org/archive/html/info-lilypond/,
216 @uref{http://www.mail-archive.com/info-lilypond@@gnu.org/,
218 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.announce,
221 @c don't include gmane posting here. -gp
228 @divClass{column-right-bottom}
229 @subheading Developer Discussions and Translations
231 @subsubheading Developer mailing list: @code{lilypond-devel@@gnu.org}
233 Developer discussions take place on this list. Patches can also be sent
237 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-devel,
238 lilypond-devel subscribe and info}
240 @uref{http://lists.gnu.org/archive/html/lilypond-devel/,
242 @uref{http://www.mail-archive.com/lilypond-devel@@gnu.org/,
244 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.devel,
247 @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.devel,
248 send to lilypond-devel with gmane}
252 @subsubheading Bug mailing list: @code{bug-lilypond@@gnu.org}
254 Bug reports and discussions should be sent here. Do not send patches
258 @uref{http://lists.gnu.org/mailman/listinfo/bug-lilypond,
259 bug-lilypond subscribe and info}
261 @uref{http://lists.gnu.org/archive/html/bug-lilypond/,
263 @uref{http://www.mail-archive.com/bug-lilypond@@gnu.org/,
265 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.bugs,
268 @c don't include gmane posting here. -gp
271 @warning{Before sending a message to the bug list, please read our
272 guidelines for @ref{Bug reports}.}
275 @subsubheading Translation mailing list: @code{translations@@lilynet.org}
277 All discussions about translating LilyPond manuals should be sent here.
278 Do not send patches to this list.
281 @uref{http://lilypond-translations.3384276.n2.nabble.com/,
282 Translation mailing list archive}
289 @unnumberedsec Tiny examples
291 @divClass{column-center-top}
292 @subheading What are @qq{Tiny examples}?
294 A tiny example is an example from which @strong{nothing} can be removed.
297 @divClass{column-left-bottom}
298 @subheading Why create them?
300 @divClass{keep-bullets}
304 The simpler the example is, the quicker potential helpers can
305 understand it and help you.
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.
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!
325 @divClass{column-right-bottom}
326 @subheading How to create them?
328 @divClass{keep-bullets}
332 Include the @code{\version} number.
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.
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.
346 Avoid using complicated notes, keys or time signatures, unless
347 the bug is about the behavior of those items.
350 Do not use @code{\override} or @code{\set} commands unless the bug
351 is about those specific commands.
354 Optionally, attach an image showing the desired graphical output.
361 @divClass{column-center-bottom}
362 @subheading How tiny should they be?
364 Is the code below a minimal example?
368 \include "english.ly"
373 \numericTimeSignature
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?
379 <cs' d'' b''>8 [ <b d'' a''> ]
384 Well, it is not very big, but a truly minimal example is here:
389 % middle tie looks funny here:
390 <c' d'' b''>8. ~ <c' d'' b''>8
394 Very few tiny examples exceed 10 lines of code -
395 quite often 4 lines are enough to demonstrate the problem!
401 @unnumberedsec Bug reports
404 @divClass{heading-center}
405 If you have input that results in a crash or wrong output,
409 @divClass{column-center-top}
410 @subheading Step 1: Known bugs
412 We may already know about this bug. Check here:
415 @uref{http://sourceforge.net/p/testlilyissues/issues/}
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.}
425 @divClass{column-left-bottom}
426 @subheading Step 2: Creating a bug report
428 If you have discovered a bug which is not listed,
429 please help us by creating a bug report.
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!}
436 Here is an example of a good bug report:
439 % Accidentals should be printed for only
440 % the first note in a tie, but this version
441 % prints flats on both notes.
452 @divClass{column-right-bottom}
453 @subheading Step 3: Sending a bug report
455 Once you have verified that the issue is not already known and
456 created a bug report, please send it to us!
458 @divClass{keep-bullets}
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.
466 If you are not subscribed, you can still post a bug report with
468 @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs,
469 gmane lilypond.bugs web interface}.
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:
476 > I'm not top posting.
480 (you @emph{must} include the @code{>} ) to the top of your bug
487 @divClass{column-center-bottom}
488 @subheading Step 4: Wait for a response
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.
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.
503 @divClass{column-center-bottom}
504 @subheading Optional help: show the desired behavior
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!
516 @unnumberedsec Help us
518 @divClass{column-center-top}
523 @divClass{column-left-top}
524 @divClass{keep-bullets}
530 @divClass{column-right-top}
537 @unnumberedsec Sponsoring
539 @divClass{keep-bullets}
540 @divClass{column-left-top}
546 @item some users have paid for new features
547 @item some developers have added new features for hire
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
557 @divClass{column-right-top}
558 @subheading Guidelines
560 Any user wanting to offer money in exchange for work should bear
561 in mind the following points:
565 LilyPond developers may advertise their services on the lilypond
566 email lists from time to time.
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.
579 @divClass{column-center-bottom}
580 @subheading Interested developers
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".
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
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}
599 Interested developers:
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.
606 @c @item @email{name@@adress.domain, Name}
607 @c area of interest (256 chars max)
616 @unnumberedsec Development
618 @divClass{heading-center}
620 @heading Development for LilyPond @version
623 @heading Development for LilyPond @versionDevel
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}.}
636 @divClass{column-center-top}
637 @subheading Release numbers
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).
648 @divClass{column-left-top}
651 Instructions for git and compiling are in the Contributor's Guide.
654 @uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git, lilypond git repository}
657 Documentation writers and testers will generally want to download
662 @downloadDevelLinuxNormal
664 @downloadDevelLinuxBig
666 @downloadDevelLinuxPPC
668 @downloadDevelFreeBSDNormal
670 @downloadDevelFreeBSDBig
672 @downloadDevelDarwinNormal
674 @downloadDevelDarwinPPC
676 @downloadDevelWindows
685 @divClass{column-right-top}
686 @subheading Contributor's Guide
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.
692 @docLinksBare{Contributor's Guide, contributor,
693 @rcontribnamed{Top,Contributor's Guide},
694 @manualDevelContributorSplit,
695 @manualDevelContributorBig, 500 kB,
696 @manualDevelContributorPdf, 2.8 MB}
701 @divClass{column-center-top}
702 @subheading Regression tests
704 @divClass{keep-bullets}
710 @uref{../../input/regression/collated-files.html, Regression tests}:
711 This release's regtests.
712 (@uref{../../input/regression/collated-files.pdf, pdf version})
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})
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})
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})
733 @subsubheading Development version
736 @item @regtestDevel (@regtestDevelPdf{})
738 @item @regtestDevelXml (@regtestDevelXmlPdf{})
740 @item @regtestDevelAbc (@regtestDevelAbcPdf{})
742 @item @regtestDevelLilypondBook (@regtestDevelLilypondBookPdf{})
745 @subsubheading Stable version
748 @item @regtestStable (@regtestStablePdf{})
750 @item @regtestStableXml (@regtestStableXmlPdf{})
752 @item @regtestStableAbc (@regtestStableAbcPdf{})
754 @item @regtestStableLilypondBook (@regtestStableLilypondBookPdf{})
759 @subsubheading All versions
762 @item @uref{http://lilypond.org/test, Comparisons between regression tests}
764 @item @uref{http://lilypond.org/downloads/binaries/test-output/,
765 Archive of all regression tests}
774 @divClass{column-center-bottom}
778 @warning{These manuals are for LilyPond @version{}; the latest
779 manuals can be found at @url{http://lilypond.org}}
782 @divClass{normal-table}
783 @multitable @columnfractions .3 .3 .3
784 @headitem Introduction
787 @docLinkSplit{Learning,learning,@manualDevelLearningSplit}
789 @docLinkBig{Learning,learning,@manualDevelLearningBig}
791 @docLinkPdf{Learning,learning,@manualDevelLearningPdf}
794 @docLinkSplit{Glossary,music-glossary,@manualDevelGlossarySplit}
796 @docLinkBig{Glossary,music-glossary,@manualDevelGlossaryBig}
798 @docLinkPdf{Glossary,music-glossary,@manualDevelGlossaryPdf}
801 @docLinkSplit{Essay,essay,@manualDevelEssaySplit}
803 @docLinkBig{Essay,essay,@manualDevelEssayBig}
805 @docLinkPdf{Essay,essay,@manualDevelEssayPdf}
808 @multitable @columnfractions .3 .3 .3
812 @docLinkSplit{Notation,notation,@manualDevelNotationSplit}
814 @docLinkBig{Notation,notation,@manualDevelNotationBig}
816 @docLinkPdf{Notation,notation,@manualDevelNotationPdf}
819 @docLinkSplit{Usage,usage,@manualDevelUsageSplit}
821 @docLinkBig{Usage,usage,@manualDevelUsageBig}
823 @docLinkPdf{Usage,usage,@manualDevelUsagePdf}
826 @docLinkSplit{Snippets,snippets,@manualDevelSnippetsSplit}
828 @docLinkBig{Snippets,snippets,@manualDevelSnippetsBig}
830 @docLinkPdf{Snippets,snippets,@manualDevelSnippetsPdf}
833 @multitable @columnfractions .3 .3 .3
837 @docLinkSplit{Web,web,@manualDevelWebSplit}
839 @docLinkBig{Web,web,@manualDevelWebBig}
841 @docLinkPdf{Web,web,@manualDevelWebPdf}
844 @docLinkSplit{Changes,changes,@manualDevelChangesSplit}
846 @docLinkBig{Changes,changes,@manualDevelChangesBig}
848 @docLinkPdf{Changes,changes,@manualDevelChangesPdf}
851 @docLinkSplit{Extending,extending,@manualDevelExtendingSplit}
853 @docLinkBig{Extending,extending,@manualDevelExtendingBig}
855 @docLinkPdf{Extending,extending,@manualDevelExtendingPdf}
858 @docLinkSplit{Internals,internals,@manualDevelInternalsSplit}
860 @docLinkBig{Internals,internals,@manualDevelInternalsBig}
862 @docLinkPdf{Internals,internals,@manualDevelInternalsPdf}
866 @multitable @columnfractions .3
867 @headitem Downloadable
881 @node Google Summer of Code
882 @unnumberedsec Google Summer of Code
884 @divClass{column-center-top}
885 @subheading What is Google Summer of Code?
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}.
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.
902 We have had GSoC participants in 2012, 2015 and 2016 and encourage
903 students to apply for future summers.
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.
913 @divClass{column-center-middle-color2}
914 @subheading Project Ideas List
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
926 A full list of all the current open issues can be found
927 @uref{http://sourceforge.net/p/testlilyissues/issues/, here}.
931 @divClass{column-center-middle-color3}
932 @subheading Improve internal chord structure
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
943 @strong{Difficulty:} Easy/medium
944 @strong{Requirements:} Scheme (Guile), but the level necessary can be
946 @strong{Recommended:} Chord theory and naming
947 @strong{Mentor:} Carl Sorensen
951 @divClass{column-center-middle-color3}
952 @subheading Adopt the SMuFL music font encoding standard
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.
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.
969 @strong{Difficulty:} Easy/medium
970 @strong{Requirements:} C++ and willingness to get familiar with LilyPond
972 @strong{Recommended:} Interest and experience in working with font files.
973 A little bit of METAFONT.
974 @strong{Mentors:} Werner Lemberg, Abraham Lee
978 @divClass{column-center-middle-color3}
979 @subheading Adding variants of font glyphs
981 @divClass{keep-bullets}
985 Adding @q{on} and @q{between} staff-line variants.
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
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
1003 @divClass{column-center-middle-color3}
1004 @subheading Contemporary Notation
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.
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.
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
1028 @divClass{column-center-middle-color3}
1029 @subheading Rewrite LibreOffice LilyPond Extension with Python
1031 The @uref{http://ooolilypond.sourceforge.net/, OOoLilyPond} extension
1032 made it possible to conveniently include LilyPond score snippets in
1033 OpenOffice.org/LibreOffice Writer, Draw and Impress documents while
1034 keeping source and image together. After many years without development
1035 an initial effort has started to make the extension compatible again
1036 with current versions of LibreOffice and LilyPond.
1038 However, as the LibreOffice ecosystem has changed substantially it is
1039 now possible to rewrite the extension with Python and PyQt. This will
1040 not only be more powerful in general but will allow the integration of
1041 functionality from @uref{http://frescobaldi.org, Frescobaldi}, such as
1042 for example syntax highlighting, entry helpers, score wizards or musical
1045 @strong{Difficulty:} easy/medium
1046 @strong{Requirements:} Python, PyQt, LilyPond basics, LibreOffice
1048 @strong{Recommended knowledge:} Familiarity with Frescobaldi code based
1049 or willingness to learn during bonding period
1050 @strong{Mentor(s):} Urs Liska, (Thorsten Behrens/LibreOffice)
1054 @divClass{column-center-middle-color3}
1055 @subheading Automated testing and documentation for openLilyLib
1057 @uref{https://github.com/openlilylib, openLilyLib} is an extension
1058 framework for LilyPond code providing a “snippets” repository and a
1059 suite of integrated packages such as for example page layout tools or
1060 scholarly annotations. It is very powerful and promising, but to really
1061 get off the ground two features are missing: automated testing and
1062 documentation generation.
1064 Automated testing is necessary to ensure modifications to functionality
1065 don't break other functions within the library. There is already some
1066 Automated Testing of the “snippets” repository with Github's Travis
1067 server, but this has to be reconsidered and extended to cover the
1068 standalone packages too.
1070 In order to be usable for a wider range of LilyPond users on a “consumer
1071 level” openLilyLib needs proper documentation. This documentation has
1072 to be generated from the sources, so a system is needed that requires
1073 package authors to document the input files and provide additional usage
1074 examples, from which documentation is generated. Ideally but not
1075 necessarily this is implemented as a Git hook, i.e. automatically upon
1076 each update to the repository. We don't prescribe the tools and
1077 approaches to be used, but the most widely used language in the LilyPond
1078 domain is Python, so there would be some bias towards that.
1079 Alternatively a Scheme solution could be fine so generating the
1080 documentation would actually be triggered by “compiling” a certain
1081 LilyPond input file. In general it is advisable to make use of proven
1082 concepts and tools from other languages.
1084 The eventual output of the documentation should be a static HTML site
1085 that can be viewed locally and/or uploaded to a website. But it would
1086 be beneficial if the tool would first generate an intermediate
1087 representation (e.g. a JSON file with additional media files) from which
1088 a Single Page Application could retrieve content for display on
1089 openLilyLib's @uref{https://openlilylib.org, website}. Development of
1090 such a SPA @emph{can} be part of the GSoC project, but is optional.
1092 @strong{Difficulty:} medium
1093 @strong{Requirements:} Python or Scheme, static website generator(s) or
1094 (Node.js based) dynamic web application technology. Continuous
1095 Integration (can be learned during the bonding period)
1096 @strong{Mentors:} Urs Liska, Matteo Ceccarello
1100 @divClass{column-center-middle-color3}
1101 @subheading MusicXML
1103 Improving MusicXML import and export functions:
1105 @divClass{keep-bullets}
1109 Handle basic musical content export like the MIDI export (i.e. using
1110 dedicated exporter classes, derived from the translator class).
1113 Build the XML tree of the basic musical content, add a connection from
1114 music event to XML tag.
1117 Let all LilyPond engravers do their job.
1120 Link each output object (i.e. each stencil or group of stencils) to the
1121 music cause (and thus to the XML tag in the XML tree).
1124 Add an XML output backend, which can then add layout information for
1125 each output object to the XML tags.
1130 There are several possibilities for this project, including building upon
1131 the MusicXML export project from GSoC 2015.
1133 @strong{Difficulty:} medium
1134 @strong{Requirements:} MusicXML, Python, Scheme, basic LilyPond knowledge
1135 @strong{Recommended:} Familiarity with other scorewriters (for cross-testing)
1136 @strong{Mentor:} Jan-Peter Voigt
1142 @divClass{column-center-middle-color2}
1143 @subheading Information for Applicants/Participants
1145 In order to have a satisfying experience with GSoC applicants are
1146 strongly advised to thoroughly read the following recommendations. Some
1147 of these are relevant for the application process, others for the time
1153 Read all applicable information on the program's website, particularly
1155 @uref{https://developers.google.com/open-source/gsoc/resources/manual,
1156 students' manual}. Make sure you fulfil all of Google's prerequisites
1157 and are willing to join the program as a full-time commitment over the
1158 coding period of three months.
1161 Please get in touch with us as soon as possible if you are interested in
1162 applying with a project. Mentor availability may change without notice,
1163 project proposals may need fine-tuning, and many other reasons might
1164 require us to reject or ignore an application that hasn't been discussed
1168 We do not know in advance how many “slots” we will have available for
1169 projects, so please be aware that you may find yourself in competition
1170 with other applicants or not. Interested or even enthusiastic response
1171 from our mentors is no guarantee of eventually being accepted, and
1172 @emph{not} being accepted does not necessarily indicate a negative
1173 evaluation of your application. If we have to decide between different
1174 applicants there may be various aspects to consider.
1177 Integration in the LilyPond community is a fundamental part of GSoC, and
1178 we expect our students to make substantial efforts to become community
1179 members. Within the @emph{bonding period} we expect you to write a blog
1180 post about your project (either on @uref{http://lilypondblog.org, Scores
1181 of Beauty} or on any other blog) and to be active on our mailing lists,
1182 introducing yourself but also communicating about unrelated tasks. This
1183 goes beyond the mere setting up of a working environment and
1184 familiarizing yourself with the relevant code, but we think it is
1185 crucial for the GSoC project to be mutually satisfying.
1188 If you are accepted to the program you will have one mentor explicitly
1189 assigned to your project. With this mentor you will have to agree upon
1190 a communication strategy, be it emails, chatrooms, issue trackers or
1191 voice/video chats. Regular communication is absolutely crucial for the
1192 success of a GSoC project so you are stricly required to keep talking to
1193 your mentor. But keep in mind that your mentor has explicitly taken
1194 over the responsibility for your project, and while unlike you he isn't
1195 paid for this activity you are still entitled to get regular attention
1199 In order to get support from your mentor you have to give him a chance
1200 to follow your progress and efforts. Therefore it is important to
1201 regularly commit your changes to the versioning repository you are
1202 working on. Don't hesitate making unfinished code available because you
1203 are afraid of criticism, and don't suppress questions because you think
1204 they might be considered stupid. But ideally your code should at any
1205 time be accompanied by compatible testing code. Your mentor may not be
1206 able to properly assess your code by only @emph{reading} it without the
1207 opportunity to apply it in a real example.
1211 There is a list of inactive projects in the @ref{Attic}. We list
1212 projects there that are still considered valuable but for which there
1213 are currently no mentors available.
1218 @unnumberedsec Authors
1220 @divClass{column-left-top}
1221 @subheading Current Development Team
1223 @divClass{keep-bullets}
1228 @divClass{column-right-top}
1229 @subheading Previous Development Team
1231 @divClass{keep-bullets}
1237 @divClass{column-center-top}
1238 @subheading Current Contributors
1240 @divClass{keep-bullets}
1241 @subsubheading Programming
1249 @subsubheading Documentation
1253 @subsubheading Bug squad
1257 @subsubheading Support
1261 @subsubheading Translation
1263 @translationsCurrent
1269 @divClass{column-center-bottom}
1270 @subheading Previous Contributors
1272 @divClass{keep-bullets}
1273 @subsubheading Programming
1281 @subsubheading Documentation
1285 @c uncomment when we have any previous members -gp
1286 @c @subsubheading Bug squad
1290 @subsubheading Support
1294 @subsubheading Translation
1296 @translationsPrevious
1301 @node Acknowledgements
1302 @unnumberedsec Acknowledgements
1304 @divClass{column-center-top}
1305 @subheading Acknowledgements
1307 @divClass{keep-bullets}
1308 @acknowledgementsCurrent
1314 @unnumberedsec Publications
1316 @divClass{column-center-top}
1317 @subheading What we wrote about LilyPond
1319 @divClass{keep-bullets}
1321 @include we-wrote.itexi
1326 @divClass{column-center-bottom}
1327 @subheading What people did with LilyPond
1329 @divClass{keep-bullets}
1331 @include others-did.itexi
1336 @contactUsAbout{academic papers}
1342 @divClass{heading-center}
1343 @warning{Many old announcements and changelogs can be found in
1347 @include web/news-front.itexi
1349 @include web/news.itexi
1353 @unnumberedsec Attic
1355 @divClass{column-center-top}
1356 @subheading Announcements
1358 Announcements and news by version:
1359 @uref{http://lilypond.org/doc/v2.16/Documentation/web/index#Lilypond-2_002e16_002e0-released_0021-August-24_002c-2012-1,v2.16},
1360 @uref{http://lilypond.org/doc/v2.14/Documentation/web/index#LilyPond-2_002e14_002e0-released_0021-June-6_002c-2011,v2.14},
1361 @miscLink{announce-v2.12,v2.12},
1362 @miscLink{announce-v2.10,v2.10},
1363 @miscLink{announce-v2.8,v2.8},
1364 @miscLink{announce-v2.6,v2.6},
1365 @miscLink{announce-v2.4,v2.4},
1366 @miscLink{announce-v2.2,v2.2},
1367 @miscLink{announce-v2.0,v2.0},
1368 @miscLink{ANNOUNCE-1.2,v1.2},
1369 @miscLink{ANNOUNCE-1.0,v1.0},
1370 @miscLink{ANNOUNCE-0.1,v0.1}
1372 Descriptive list of changes by version:
1373 @uref{http://lilypond.org/doc/v2.16/Documentation/changes/index.html,v2.16},
1374 @uref{http://lilypond.org/doc/v2.14/Documentation/changes/index.html,v2.14},
1375 @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS,v2.12},
1376 @uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS,v2.10},
1377 @uref{http://lilypond.org/doc/v2.8/Documentation/topdocs/NEWS,v2.8},
1378 @uref{http://lilypond.org/doc/v2.6/Documentation/topdocs/NEWS,v2.6},
1379 @uref{http://lilypond.org/doc/v2.4/Documentation/topdocs/out-www/NEWS,v2.4},
1380 @uref{http://lilypond.org/doc/v2.2/Documentation/topdocs/out-www/NEWS,v2.2},
1381 @uref{http://lilypond.org/doc/v2.0/Documentation/topdocs/out-www/NEWS,v2.0},
1382 @uref{http://lilypond.org/doc/v1.8/Documentation/topdocs/out-www/NEWS,v1.8},
1383 @uref{http://lilypond.org/doc/v1.6/Documentation/out-www/NEWS,v1.6},
1384 @miscLink{NEWS-1.4,v1.4},
1385 @miscLink{NEWS-1.2,v1.2}
1389 @divClass{column-center-bottom}
1392 Thanks to developers, contributors, bug hunters and suggestions for
1393 @miscLink{THANKS-2.16,v2.16},
1394 @miscLink{THANKS-2.14,v2.14},
1395 @miscLink{THANKS-2.12,v2.12},
1396 @miscLink{THANKS-2.10,v2.10},
1397 @miscLink{THANKS-2.8,v2.8},
1398 @miscLink{THANKS-2.6,v2.6},
1399 @miscLink{THANKS-2.4,v2.4},
1400 @miscLink{THANKS-2.2,v2.2},
1401 @miscLink{THANKS-2.0,v2.0},
1402 @miscLink{THANKS-1.8,v1.8}
1406 @divClass{column-center-bottom}
1407 @subheading Changelogs
1409 Developers' changelogs by version:
1410 @miscLink{ChangeLog-2.10,v2.10},
1411 @miscLink{ChangeLog-2.3,v2.3},
1412 @miscLink{ChangeLog-2.1,v2.1},
1413 @miscLink{ChangeLog-1.5,v1.5 (1)},
1414 @miscLink{CHANGES-1.5,v1.5 (2)},
1415 @miscLink{CHANGES-1.4,v1.4},
1416 @miscLink{CHANGES-1.3,v1.3},
1417 @miscLink{CHANGES-1.2,v1.2},
1418 @miscLink{CHANGES-1.1,v1.1},
1419 @miscLink{CHANGES-1.0,v1.0},
1420 @miscLink{CHANGES-0.1,v0.1},
1421 @miscLink{CHANGES-0.0,v0.0}
1425 @divClass{column-center-middle-color2}
1426 @subheading Unused Google Summer of Code project suggestions
1428 The following list describes GSoC projects that had been proposed
1429 in recent years and which are still considered valuable but for
1430 which we currently don't have mentors available.
1434 @divClass{column-center-middle-color3}
1435 @subheading Improve slurs and ties
1437 The engraving quality of slurs and ties is often unsatisfactory. Ties
1438 @q{broken} by clef or staff changes are not handled well. The project
1439 could include collecting and sorting examples of bad output, deciding on
1440 the intended output and writing code to improve them.
1442 @strong{Difficulty:} hard
1443 @strong{Requirements:} C++, experience with writing heuristics
1444 @strong{Recommended knowledge:} LilyPond knowledge, aesthetic sense
1449 @divClass{column-center-middle-color3}
1450 @subheading Grace notes
1452 Fix problems with synchronization of grace notes. Grace notes can
1453 interfere with LilyPond's timing and cause odd effects, especially when
1454 multiple staffs are used where some have grace notes and others don't.
1455 This is one of the longest-standing and one of the more embarrassing
1456 @uref{https://sourceforge.net/p/testlilyissues/issues/34/,bugs} in
1459 @strong{Difficulty:} medium
1460 @strong{Requirements:} C++, MIDI
1461 @strong{Recommended:} familiarity with LilyPond internals
1465 @divClass{column-center-middle-color3}
1466 @subheading Improve default beam positioning
1468 For regular, cross-staff, broken and kneed beams. Beaming should depend
1469 on context and neighbor notes (see section 2.2 of
1470 @uref{http://imslp.org/wiki/Repository_of_Music-Notation_Mistakes_%28Coulon%2C_Jean-Pierre%29,
1471 this book}). If possible also reduce beaming-computation time.
1473 @strong{Difficulty:} medium
1474 @strong{Requirements:} C++, experience with writing heuristics
1475 @strong{Recommended knowledge:} aesthetic sense
1479 @divClass{column-center-middle-color3}
1480 @subheading Help improve compilation behavior
1482 Automatic code analysis tools, like valgrind memory leak detection or
1483 callgrind code profilers, provide valuable information about possible
1484 flaws in our C++ code. Cleaning up warnings would allow us to automate
1485 the rejection of any patch which introduced extra warnings.
1487 @strong{Difficulty:} medium
1488 @strong{Requirements:} C++