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,
91 * Google Summer of Code::
102 @unnumberedsec Contact
105 @divClass{column-left-bottom}
106 @subheading User Discussions and Help
108 @subsubheading User mailing list: @code{lilypond-user@@gnu.org}
110 This mailing list is the main place for users to discuss and help
114 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-user,
115 lilypond-user subscribe and info}
117 @uref{http://lists.gnu.org/archive/html/lilypond-user/,
119 @uref{http://www.mail-archive.com/lilypond-user@@gnu.org/,
121 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.general,
124 @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.general,
125 send to lilypond-user with gmane}
128 @warning{When asking questions, please use @ref{Tiny examples}!}
130 @subsubheading LilyPond Snippet Repository
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,
138 @uref{http://lsr.di.unimi.it}
141 Particularly instructive examples from LSR are included in our
142 official documentation, in @ref{Snippets}.
147 Some level of support is provided on our IRC channel,
150 @uref{irc://irc.freenode.net/lilypond, #lilypond@@irc.freenode.net}
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.
157 <form action="http://webchat.freenode.net"
161 <input name="nick" type="text" size="15" value="">
163 <input name="channels" type="hidden" value="lilypond">
164 <input type="submit" value="Join #lilypond IRC Chat">
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;
179 @subsubheading Other languages
182 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-user-fr,
185 @uref{http://www.lilypondforum.de/,
188 @uref{http://groups.google.com/group/lilypond-brasil,
191 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-es,
192 Spanish mailing list}
197 @divClass{column-right-top}
198 @subheading The LilyPond Blog
200 Read our community blog, @q{Scores of Beauty}:
203 @uref{http://lilypondblog.org}
206 @subsubheading Releases mailing list: @code{info-lilypond@@gnu.org}
208 This mailing list is a low-volume, read-only list which receives
209 notifications of new releases.
212 @uref{http://lists.gnu.org/mailman/listinfo/info-lilypond,
213 info-lilypond subscribe and info}
215 @uref{http://lists.gnu.org/archive/html/info-lilypond/,
217 @uref{http://www.mail-archive.com/info-lilypond@@gnu.org/,
219 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.announce,
222 @c don't include gmane posting here. -gp
229 @divClass{column-right-bottom}
230 @subheading Developer Discussions and Translations
232 @subsubheading Developer mailing list: @code{lilypond-devel@@gnu.org}
234 Developer discussions take place on this list. Patches can also be sent
238 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-devel,
239 lilypond-devel subscribe and info}
241 @uref{http://lists.gnu.org/archive/html/lilypond-devel/,
243 @uref{http://www.mail-archive.com/lilypond-devel@@gnu.org/,
245 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.devel,
248 @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.devel,
249 send to lilypond-devel with gmane}
253 @subsubheading Bug mailing list: @code{bug-lilypond@@gnu.org}
255 Bug reports and discussions should be sent here. Do not send patches
259 @uref{http://lists.gnu.org/mailman/listinfo/bug-lilypond,
260 bug-lilypond subscribe and info}
262 @uref{http://lists.gnu.org/archive/html/bug-lilypond/,
264 @uref{http://www.mail-archive.com/bug-lilypond@@gnu.org/,
266 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.bugs,
269 @c don't include gmane posting here. -gp
272 @warning{Before sending a message to the bug list, please read our
273 guidelines for @ref{Bug reports}.}
276 @subsubheading Translation mailing list: @code{translations@@lilynet.org}
278 All discussions about translating LilyPond manuals should be sent here.
279 Do not send patches to this list.
282 @uref{http://lilypond-translations.3384276.n2.nabble.com/,
283 Translation mailing list archive}
290 @unnumberedsec Tiny examples
292 @divClass{column-center-top}
293 @subheading What are @qq{Tiny examples}?
295 A tiny example is an example from which @strong{nothing} can be removed.
298 @divClass{column-left-bottom}
299 @subheading Why create them?
301 @divClass{keep-bullets}
305 The simpler the example is, the quicker potential helpers can
306 understand it and help you.
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.
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!
326 @divClass{column-right-bottom}
327 @subheading How to create them?
329 @divClass{keep-bullets}
333 Include the @code{\version} number.
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.
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.
347 Avoid using complicated notes, keys or time signatures, unless
348 the bug is about the behavior of those items.
351 Do not use @code{\override} or @code{\set} commands unless the bug
352 is about those specific commands.
355 Optionally, attach an image showing the desired graphical output.
362 @divClass{column-center-bottom}
363 @subheading How tiny should they be?
365 Is the code below a minimal example?
369 \include "english.ly"
374 \numericTimeSignature
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?
380 <cs' d'' b''>8 [ <b d'' a''> ]
385 Well, it is not very big, but a truly minimal example is here:
390 % middle tie looks funny here:
391 <c' d'' b''>8. ~ <c' d'' b''>8
395 Very few tiny examples exceed 10 lines of code -
396 quite often 4 lines are enough to demonstrate the problem!
402 @unnumberedsec Bug reports
405 @divClass{heading-center}
406 If you have input that results in a crash or wrong output,
410 @divClass{column-center-top}
411 @subheading Step 1: Known bugs
413 We may already know about this bug. Check here:
416 @uref{http://sourceforge.net/p/testlilyissues/issues/}
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.}
426 @divClass{column-left-bottom}
427 @subheading Step 2: Creating a bug report
429 If you have discovered a bug which is not listed,
430 please help us by creating a bug report.
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!}
437 Here is an example of a good bug report:
440 % Accidentals should be printed for only
441 % the first note in a tie, but this version
442 % prints flats on both notes.
453 @divClass{column-right-bottom}
454 @subheading Step 3: Sending a bug report
456 Once you have verified that the issue is not already known and
457 created a bug report, please send it to us!
459 @divClass{keep-bullets}
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.
467 If you are not subscribed, you can still post a bug report with
469 @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs,
470 gmane lilypond.bugs web interface}.
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:
477 > I'm not top posting.
481 (you @emph{must} include the @code{>} ) to the top of your bug
488 @divClass{column-center-bottom}
489 @subheading Step 4: Wait for a response
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.
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.
504 @divClass{column-center-bottom}
505 @subheading Optional help: show the desired behavior
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!
517 @unnumberedsec Help us
519 @divClass{column-center-top}
524 @divClass{column-left-top}
525 @divClass{keep-bullets}
531 @divClass{column-right-top}
538 @unnumberedsec Sponsoring
540 @divClass{keep-bullets}
541 @divClass{column-left-top}
547 @item some users have paid for new features
548 @item some developers have added new features for hire
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
558 @divClass{column-right-top}
559 @subheading Guidelines
561 Any user wanting to offer money in exchange for work should bear
562 in mind the following points:
566 LilyPond developers may advertise their services on the lilypond
567 email lists from time to time.
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.
580 @divClass{column-center-bottom}
581 @subheading Interested developers
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".
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
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}
600 Interested developers:
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.
607 @c @item @email{name@@adress.domain, Name}
608 @c area of interest (256 chars max)
617 @unnumberedsec Development
619 @divClass{heading-center}
621 @heading Development for LilyPond @version
624 @heading Development for LilyPond @versionDevel
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}.}
637 @divClass{column-center-top}
638 @subheading Release numbers
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).
649 @divClass{column-left-top}
652 Instructions for git and compiling are in the Contributor's Guide.
655 @uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git, lilypond git repository}
658 Documentation writers and testers will generally want to download
663 @downloadDevelLinuxNormal
665 @downloadDevelLinuxBig
667 @downloadDevelLinuxPPC
669 @downloadDevelFreeBSDNormal
671 @downloadDevelFreeBSDBig
673 @downloadDevelDarwinNormal
675 @downloadDevelDarwinPPC
677 @downloadDevelWindows
686 @divClass{column-right-top}
687 @subheading Contributor's Guide
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.
693 @docLinksBare{Contributor's Guide, contributor,
694 @rcontribnamed{Top,Contributor's Guide},
695 @manualDevelContributorSplit,
696 @manualDevelContributorBig, 500 kB,
697 @manualDevelContributorPdf, 2.8 MB}
702 @divClass{column-center-top}
703 @subheading Regression tests
705 @divClass{keep-bullets}
711 @uref{../../input/regression/collated-files.html, Regression tests}:
712 This release's regtests.
713 (@uref{../../input/regression/collated-files.pdf, pdf version})
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})
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})
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})
734 @subsubheading Development version
737 @item @regtestDevel (@regtestDevelPdf{})
739 @item @regtestDevelXml (@regtestDevelXmlPdf{})
741 @item @regtestDevelAbc (@regtestDevelAbcPdf{})
743 @item @regtestDevelLilypondBook (@regtestDevelLilypondBookPdf{})
746 @subsubheading Stable version
749 @item @regtestStable (@regtestStablePdf{})
751 @item @regtestStableXml (@regtestStableXmlPdf{})
753 @item @regtestStableAbc (@regtestStableAbcPdf{})
755 @item @regtestStableLilypondBook (@regtestStableLilypondBookPdf{})
760 @subsubheading All versions
763 @item @uref{http://lilypond.org/test, Comparisons between regression tests}
765 @item @uref{http://lilypond.org/downloads/binaries/test-output/,
766 Archive of all regression tests}
775 @divClass{column-center-bottom}
779 @warning{These manuals are for LilyPond @version{}; the latest
780 manuals can be found at @url{http://lilypond.org}}
783 @divClass{normal-table}
784 @multitable @columnfractions .3 .3 .3
785 @headitem Introduction
788 @docLinkSplit{Learning,learning,@manualDevelLearningSplit}
790 @docLinkBig{Learning,learning,@manualDevelLearningBig}
792 @docLinkPdf{Learning,learning,@manualDevelLearningPdf}
795 @docLinkSplit{Glossary,music-glossary,@manualDevelGlossarySplit}
797 @docLinkBig{Glossary,music-glossary,@manualDevelGlossaryBig}
799 @docLinkPdf{Glossary,music-glossary,@manualDevelGlossaryPdf}
802 @docLinkSplit{Essay,essay,@manualDevelEssaySplit}
804 @docLinkBig{Essay,essay,@manualDevelEssayBig}
806 @docLinkPdf{Essay,essay,@manualDevelEssayPdf}
809 @multitable @columnfractions .3 .3 .3
813 @docLinkSplit{Notation,notation,@manualDevelNotationSplit}
815 @docLinkBig{Notation,notation,@manualDevelNotationBig}
817 @docLinkPdf{Notation,notation,@manualDevelNotationPdf}
820 @docLinkSplit{Usage,usage,@manualDevelUsageSplit}
822 @docLinkBig{Usage,usage,@manualDevelUsageBig}
824 @docLinkPdf{Usage,usage,@manualDevelUsagePdf}
827 @docLinkSplit{Snippets,snippets,@manualDevelSnippetsSplit}
829 @docLinkBig{Snippets,snippets,@manualDevelSnippetsBig}
831 @docLinkPdf{Snippets,snippets,@manualDevelSnippetsPdf}
834 @multitable @columnfractions .3 .3 .3
838 @docLinkSplit{Web,web,@manualDevelWebSplit}
840 @docLinkBig{Web,web,@manualDevelWebBig}
842 @docLinkPdf{Web,web,@manualDevelWebPdf}
845 @docLinkSplit{Changes,changes,@manualDevelChangesSplit}
847 @docLinkBig{Changes,changes,@manualDevelChangesBig}
849 @docLinkPdf{Changes,changes,@manualDevelChangesPdf}
852 @docLinkSplit{Extending,extending,@manualDevelExtendingSplit}
854 @docLinkBig{Extending,extending,@manualDevelExtendingBig}
856 @docLinkPdf{Extending,extending,@manualDevelExtendingPdf}
859 @docLinkSplit{Internals,internals,@manualDevelInternalsSplit}
861 @docLinkBig{Internals,internals,@manualDevelInternalsBig}
863 @docLinkPdf{Internals,internals,@manualDevelInternalsPdf}
867 @multitable @columnfractions .3
868 @headitem Downloadable
882 @node Google Summer of Code
883 @unnumberedsec Google Summer of Code
885 @divClass{column-center-top}
886 @subheading What is Google Summer of Code?
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}.
899 We have had GSoC participants in 2012, 2015 and 2016 and encourage
900 students to apply for the 2017 program.
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.
910 @divClass{column-center-middle-color2}
911 @subheading Project Ideas List
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
923 A full list of all the current open issues can be found
924 @uref{http://sourceforge.net/p/testlilyissues/issues/, here}.
928 @divClass{column-center-middle-color3}
929 @subheading Improve internal chord structure
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
940 @strong{Difficulty:} Easy/medium
941 @strong{Requirements:} Scheme (Guile), but the level necessary can be
943 @strong{Recommended:} Chord theory and naming
944 @strong{Mentor:} Carl Sorensen
948 @divClass{column-center-middle-color3}
949 @subheading Adopt the SMuFL music font encoding standard
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.
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.
966 @strong{Difficulty:} Easy/medium
967 @strong{Requirements:} C++ and willingness to get familiar with LilyPond
969 @strong{Recommended:} Interest and experience in working with font files.
970 A little bit of METAFONT.
971 @strong{Mentors:} Werner Lemberg, Abraham Lee
975 @divClass{column-center-middle-color3}
976 @subheading Adding variants of font glyphs
978 @divClass{keep-bullets}
982 Adding @q{on} and @q{between} staff-line variants.
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
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
1000 @divClass{column-center-middle-color3}
1001 @subheading Contemporary Notation
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.
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.
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
1025 @divClass{column-center-middle-color3}
1026 @subheading Rewrite LibreOffice LilyPond Extension with Python
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.
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
1042 @strong{Difficulty:} easy/medium
1043 @strong{Requirements:} Python, PyQt, LilyPond basics, LibreOffice
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)
1051 @divClass{column-center-middle-color3}
1052 @subheading Automated testing and documentation for openLilyLib
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.
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.
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.
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.
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
1097 @divClass{column-center-middle-color3}
1098 @subheading MusicXML
1100 Improving MusicXML import and export functions:
1102 File interchange between LilyPond and other applications using MusicXML
1103 is still a difficult matter. To import MusicXML it has to be converted
1104 manually by the @code{musicxml2ly} script. Export @emph{to} MusicXML is
1105 only available as a rudimentary feature inside Frescobaldi. In order to
1106 provide natural interchange between LilyPond and MusicXML based
1107 applications there's the need of actual import functionality and a
1108 dedicated export backend.
1110 Importing XML shall provide file, line and column to add origin
1111 attributes to generated objects. That way point and click can be
1112 made available in Frescobaldi or other supported IDEs.
1114 Exporting XML shall be realized with an exporter class like the MIDI
1115 export. This may be based on the work already done in
1116 @uref{https://github.com/DavidGarfinkle/Lilypond_MusicXMLexport, GSoC 2015}
1117 by David Garfinkle. It should be checked if it is possible to use
1118 another XML library than the one provided by guile-2 in order to have
1119 this feature available in current LilyPond (which is based on guile-1.8).
1121 @strong{Difficulty:} medium
1122 @strong{Requirements:} MusicXML, Python, Scheme, basic LilyPond knowledge
1123 @strong{Recommended:} Familiarity with other scorewriters (for cross-testing)
1124 @strong{Mentor:} Jan-Peter Voigt
1128 @divClass{column-center-middle-color2}
1129 @subheading Information for Applicants/Participants
1131 In order to have a satisfying experience with GSoC applicants are
1132 strongly advised to thoroughly read the following recommendations. Some
1133 of these are relevant for the application process, others for the time
1139 Read all applicable information on the program's website, particularly
1141 @uref{https://developers.google.com/open-source/gsoc/resources/manual,
1142 students' manual}. Make sure you fulfil all of Google's prerequisites
1143 and are willing to join the program as a full-time commitment over the
1144 coding period of three months.
1147 Please get in touch with us as soon as possible if you are interested in
1148 applying with a project. Mentor availability may change without notice,
1149 project proposals may need fine-tuning, and many other reasons might
1150 require us to reject or ignore an application that hasn't been discussed
1154 We do not know in advance how many “slots” we will have available for
1155 projects, so please be aware that you may find yourself in competition
1156 with other applicants or not. Interested or even enthusiastic response
1157 from our mentors is no guarantee of eventually being accepted, and
1158 @emph{not} being accepted does not necessarily indicate a negative
1159 evaluation of your application. If we have to decide between different
1160 applicants there may be various aspects to consider.
1163 Integration in the LilyPond community is a fundamental part of GSoC, and
1164 we expect our students to make substantial efforts to become community
1165 members. Within the @emph{bonding period} we expect you to write a blog
1166 post about your project (either on @uref{http://lilypondblog.org, Scores
1167 of Beauty} or on any other blog) and to be active on our mailing lists,
1168 introducing yourself but also communicating about unrelated tasks. This
1169 goes beyond the mere setting up of a working environment and
1170 familiarizing yourself with the relevant code, but we think it is
1171 crucial for the GSoC project to be mutually satisfying.
1174 If you are accepted to the program you will have one mentor explicitly
1175 assigned to your project. With this mentor you will have to agree upon
1176 a communication strategy, be it emails, chatrooms, issue trackers or
1177 voice/video chats. Regular communication is absolutely crucial for the
1178 success of a GSoC project so you are stricly required to keep talking to
1179 your mentor. But keep in mind that your mentor has explicitly taken
1180 over the responsibility for your project, and while unlike you he isn't
1181 paid for this activity you are still entitled to get regular attention
1185 In order to get support from your mentor you have to give him a chance
1186 to follow your progress and efforts. Therefore it is important to
1187 regularly commit your changes to the versioning repository you are
1188 working on. Don't hesitate making unfinished code available because you
1189 are afraid of criticism, and don't suppress questions because you think
1190 they might be considered stupid. But ideally your code should at any
1191 time be accompanied by compatible testing code. Your mentor may not be
1192 able to properly assess your code by only @emph{reading} it without the
1193 opportunity to apply it in a real example.
1197 There is a list of inactive projects in the @ref{Attic}. We list
1198 projects there that are still considered valuable but for which there
1199 are currently no mentors available.
1204 @unnumberedsec Authors
1206 @divClass{column-left-top}
1207 @subheading Current Development Team
1209 @divClass{keep-bullets}
1214 @divClass{column-right-top}
1215 @subheading Previous Development Team
1217 @divClass{keep-bullets}
1223 @divClass{column-center-top}
1224 @subheading Current Contributors
1226 @divClass{keep-bullets}
1227 @subsubheading Programming
1235 @subsubheading Documentation
1239 @subsubheading Bug squad
1243 @subsubheading Support
1247 @subsubheading Translation
1249 @translationsCurrent
1255 @divClass{column-center-bottom}
1256 @subheading Previous Contributors
1258 @divClass{keep-bullets}
1259 @subsubheading Programming
1267 @subsubheading Documentation
1271 @c uncomment when we have any previous members -gp
1272 @c @subsubheading Bug squad
1276 @subsubheading Support
1280 @subsubheading Translation
1282 @translationsPrevious
1287 @node Acknowledgements
1288 @unnumberedsec Acknowledgements
1290 @divClass{column-center-top}
1291 @subheading Acknowledgements
1293 @divClass{keep-bullets}
1294 @acknowledgementsCurrent
1300 @unnumberedsec Publications
1302 @divClass{column-center-top}
1303 @subheading What we wrote about LilyPond
1305 @divClass{keep-bullets}
1307 @include we-wrote.itexi
1312 @divClass{column-center-bottom}
1313 @subheading What people did with LilyPond
1315 @divClass{keep-bullets}
1317 @include others-did.itexi
1322 @contactUsAbout{academic papers}
1328 @include web/news-new.itexi
1330 @divClass{column-center-bottom}
1331 @subheading Old News
1332 Older news can be found in the @ref{Attic}, along with older
1333 announcements and changelogs
1337 @unnumberedsec Attic
1339 @divClass{column-center-top}
1340 @subheading Announcements
1342 Announcements and news by version:
1343 @uref{http://lilypond.org/doc/v2.16/Documentation/web/index#Lilypond-2_002e16_002e0-released_0021-August-24_002c-2012-1,v2.16},
1344 @uref{http://lilypond.org/doc/v2.14/Documentation/web/index#LilyPond-2_002e14_002e0-released_0021-June-6_002c-2011,v2.14},
1345 @miscLink{announce-v2.12,v2.12},
1346 @miscLink{announce-v2.10,v2.10},
1347 @miscLink{announce-v2.8,v2.8},
1348 @miscLink{announce-v2.6,v2.6},
1349 @miscLink{announce-v2.4,v2.4},
1350 @miscLink{announce-v2.2,v2.2},
1351 @miscLink{announce-v2.0,v2.0},
1352 @miscLink{ANNOUNCE-1.2,v1.2},
1353 @miscLink{ANNOUNCE-1.0,v1.0},
1354 @miscLink{ANNOUNCE-0.1,v0.1}
1356 Descriptive list of changes by version:
1357 @uref{http://lilypond.org/doc/v2.16/Documentation/changes/index.html,v2.16},
1358 @uref{http://lilypond.org/doc/v2.14/Documentation/changes/index.html,v2.14},
1359 @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/NEWS,v2.12},
1360 @uref{http://lilypond.org/doc/v2.10/Documentation/topdocs/NEWS,v2.10},
1361 @uref{http://lilypond.org/doc/v2.8/Documentation/topdocs/NEWS,v2.8},
1362 @uref{http://lilypond.org/doc/v2.6/Documentation/topdocs/NEWS,v2.6},
1363 @uref{http://lilypond.org/doc/v2.4/Documentation/topdocs/out-www/NEWS,v2.4},
1364 @uref{http://lilypond.org/doc/v2.2/Documentation/topdocs/out-www/NEWS,v2.2},
1365 @uref{http://lilypond.org/doc/v2.0/Documentation/topdocs/out-www/NEWS,v2.0},
1366 @uref{http://lilypond.org/doc/v1.8/Documentation/topdocs/out-www/NEWS,v1.8},
1367 @uref{http://lilypond.org/doc/v1.6/Documentation/out-www/NEWS,v1.6},
1368 @miscLink{NEWS-1.4,v1.4},
1369 @miscLink{NEWS-1.2,v1.2}
1373 @divClass{column-center-middle-color3}
1376 Thanks to developers, contributors, bug hunters and suggestions for
1377 @miscLink{THANKS-2.16,v2.16},
1378 @miscLink{THANKS-2.14,v2.14},
1379 @miscLink{THANKS-2.12,v2.12},
1380 @miscLink{THANKS-2.10,v2.10},
1381 @miscLink{THANKS-2.8,v2.8},
1382 @miscLink{THANKS-2.6,v2.6},
1383 @miscLink{THANKS-2.4,v2.4},
1384 @miscLink{THANKS-2.2,v2.2},
1385 @miscLink{THANKS-2.0,v2.0},
1386 @miscLink{THANKS-1.8,v1.8}
1390 @divClass{column-center-middle-color3}
1391 @subheading Changelogs
1393 Developers' changelogs by version:
1394 @miscLink{ChangeLog-2.10,v2.10},
1395 @miscLink{ChangeLog-2.3,v2.3},
1396 @miscLink{ChangeLog-2.1,v2.1},
1397 @miscLink{ChangeLog-1.5,v1.5 (1)},
1398 @miscLink{CHANGES-1.5,v1.5 (2)},
1399 @miscLink{CHANGES-1.4,v1.4},
1400 @miscLink{CHANGES-1.3,v1.3},
1401 @miscLink{CHANGES-1.2,v1.2},
1402 @miscLink{CHANGES-1.1,v1.1},
1403 @miscLink{CHANGES-1.0,v1.0},
1404 @miscLink{CHANGES-0.1,v0.1},
1405 @miscLink{CHANGES-0.0,v0.0}
1409 @divClass{column-center-middle-color2}
1410 @subheading Unused Google Summer of Code project suggestions
1412 The following list describes GSoC projects that had been proposed
1413 in recent years and which are still considered valuable but for
1414 which we currently don't have mentors available.
1418 @divClass{column-center-middle-color3}
1419 @subheading Improve slurs and ties
1421 The engraving quality of slurs and ties is often unsatisfactory. Ties
1422 @q{broken} by clef or staff changes are not handled well. The project
1423 could include collecting and sorting examples of bad output, deciding on
1424 the intended output and writing code to improve them.
1426 @strong{Difficulty:} hard
1427 @strong{Requirements:} C++, experience with writing heuristics
1428 @strong{Recommended knowledge:} LilyPond knowledge, aesthetic sense
1433 @divClass{column-center-middle-color3}
1434 @subheading Grace notes
1436 Fix problems with synchronization of grace notes. Grace notes can
1437 interfere with LilyPond's timing and cause odd effects, especially when
1438 multiple staffs are used where some have grace notes and others don't.
1439 This is one of the longest-standing and one of the more embarrassing
1440 @uref{https://sourceforge.net/p/testlilyissues/issues/34/,bugs} in
1443 @strong{Difficulty:} medium
1444 @strong{Requirements:} C++, MIDI
1445 @strong{Recommended:} familiarity with LilyPond internals
1449 @divClass{column-center-middle-color3}
1450 @subheading Improve default beam positioning
1452 For regular, cross-staff, broken and kneed beams. Beaming should depend
1453 on context and neighbor notes (see section 2.2 of
1454 @uref{http://imslp.org/wiki/Repository_of_Music-Notation_Mistakes_%28Coulon%2C_Jean-Pierre%29,
1455 this book}). If possible also reduce beaming-computation time.
1457 @strong{Difficulty:} medium
1458 @strong{Requirements:} C++, experience with writing heuristics
1459 @strong{Recommended knowledge:} aesthetic sense
1463 @divClass{column-center-middle-color3}
1464 @subheading Help improve compilation behavior
1466 Automatic code analysis tools, like valgrind memory leak detection or
1467 callgrind code profilers, provide valuable information about possible
1468 flaws in our C++ code. Cleaning up warnings would allow us to automate
1469 the rejection of any patch which introduced extra warnings.
1471 @strong{Difficulty:} medium
1472 @strong{Requirements:} C++
1476 @divClass{column-center-middle-color2}
1477 @subheading Old News
1479 Older news items dating back to July 2003. Newer news can be found on
1480 the @ref{News} page.
1483 @include web/news-old.itexi