]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/web/community.itexi
5a7662a274760d8c1d0dc980c56cc098ce16e582
[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/authors.itexi
11 @include included/helpus.itexi
12
13 @node Community
14 @unnumbered Community
15
16 @divClass{link-headings}
17
18 @divClass{column-center-top}
19 @subheading Interacting with the community
20
21 @itemize
22
23 @item
24 @ref{Contact}: get help, discuss, and keep in touch!
25
26 @item
27 @ref{Tiny examples}: these are @emph{highly} recommended when
28 discussing LilyPond.
29
30 @item
31 @ref{Bug reports}: something went wrong.
32
33 @end itemize
34 @divEnd
35
36 @divClass{column-left-bottom}
37 @subheading Making LilyPond better
38
39 @itemize
40
41 @item
42 @ref{Help us}: your assistance is requested.
43
44 @item
45 @ref{Sponsoring}: financial contributions.
46
47 @item
48 @ref{Development}: for contributors and testers.
49
50 @item
51 @ref{GSoC}: list of projects for Google Summer of Code.
52
53 @item
54 @ref{Authors}: the people who made LilyPond what it is today.
55
56 @end itemize
57 @divEnd
58
59 @divClass{column-right-bottom}
60 @subheading Miscellaneous
61
62 @itemize
63
64 @item
65 @ref{Publications}: what we wrote, and have had written about us.
66
67 @item
68 @ref{Old news}: an archive.
69
70 @end itemize
71 @divEnd
72
73 @divEnd
74
75 @divClass{hide}
76 @menu
77 * Contact::
78 * Tiny examples::
79 * Bug reports::
80 * Help us::
81 * Sponsoring::
82 * Development::
83 * GSoC::
84 * Authors::
85 * Publications::
86 * Old news::
87 @end menu
88 @divEnd
89
90
91 @node Contact
92 @unnumberedsec Contact
93
94
95 @divClass{column-left-bottom}
96 @subheading User Discussions and Help
97
98 @subsubheading User mailing list: @code{lilypond-user@@gnu.org}
99
100 This mailing list is the main place for users to discuss and help
101 each other.
102
103 @quotation
104 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-user,
105 lilypond-user subscribe and info}
106
107 @uref{http://lists.gnu.org/archive/html/lilypond-user/,
108 user archive1}
109 @uref{http://www.mail-archive.com/lilypond-user@@gnu.org/,
110 archive2}
111 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.general,
112 archive3}
113
114 @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.general,
115 send to lilypond-user with gmane}
116 @end quotation
117
118 @warning{When asking questions, please use @ref{Tiny examples}!}
119
120 @subsubheading LilyPond Snippet Repository
121
122 The LilyPond Snippet Repository is a large collection of
123 user-submitted examples, which can freely be copied and used
124 in your own works.  See what other people have written,
125 and add your own!
126
127 @example
128 @uref{http://lsr.dsi.unimi.it}
129 @end example
130
131 Particularly instructive examples from LSR are included in our
132 official documentation, in @ref{Snippets}.
133
134
135 @subsubheading IRC
136
137 Some level of support is provided on our IRC channel,
138
139 @example
140 @uref{irc://irc.freenode.net/lilypond, #lilypond@@irc.freenode.net}
141 @end example
142
143 This channel has no public archive, so any question that may
144 be useful for others would better be posted to one of the mailing lists.
145
146 @html
147 <form action="http://webchat.freenode.net"
148       method="get"
149       name="f_lily_irc"
150   <label>irc name:
151     <input name="nick" type="text" size="15" value="">
152   </label>
153   <input name="channels" type="hidden" value="lilypond">
154   <input type="submit" value="Join #lilypond IRC Chat">
155 </form>
156
157 <script language="JavaScript" type="text/javascript">
158   var username = "web";
159   var lang = window.navigator.userLanguage ? window.navigator.userLanguage
160   : window.navigator.language;
161   username += '-' + lang.substr(0, 2);
162   username += '-' + navigator.appName.substr(0, 2);
163   username += navigator.appCodeName.replace (" ", "").substr(0, 2);
164   username += navigator.platform.replace (" ", "").replace("nux", "").replace("n32", "");
165   document.forms["f_lily_irc"].nick.value = username;
166 </script>
167 @end html
168
169 @subsubheading Other languages
170
171 @quotation
172 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-es,
173 Spanish mailing list}
174
175 @uref{http://www.lilypondforum.de/,
176 German forum}
177
178 @uref{http://groups.google.com/group/lilypond-brasil,
179 Portuguese group}
180
181 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-user-fr,
182 French mailing list}
183
184 @uref{http://www.lilypondforum.nl/,
185 Dutch forum}
186 @end quotation
187
188 @divEnd
189
190
191 @divClass{column-right-top}
192 @subheading Stay Informed
193
194 @subsubheading LilyPond Report
195
196 The easiest way to keep touch is by reading our community
197 newsletter, the LilyPond Report:
198
199 @example
200 @uref{http://news.lilynet.net}
201 @end example
202
203 @subsubheading Releases mailing list: @code{info-lilypond@@gnu.org}
204
205 This mailing list is a low-volume, read-only list which receives
206 notifications of new releases.
207
208 @quotation
209 @uref{http://lists.gnu.org/mailman/listinfo/info-lilypond,
210 info-lilypond subscribe and info}
211
212 @uref{http://lists.gnu.org/archive/html/info-lilypond/,
213 info archive1}
214 @uref{http://www.mail-archive.com/info-lilypond@@gnu.org/,
215 archive2}
216 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.announce,
217 archive3}
218
219 @c don't include gmane posting here.  -gp
220 @end quotation
221
222
223 @divEnd
224
225
226 @divClass{column-right-bottom}
227 @subheading Developer Discussion
228
229 @subsubheading Developer mailing list: @code{lilypond-devel@@gnu.org}
230
231 Most developer discussion takes place on this list.  Patches
232 should be sent here.
233
234 @quotation
235 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-devel,
236 lilypond-devel subscribe and info}
237
238 @uref{http://lists.gnu.org/archive/html/lilypond-devel/,
239 devel archive1}
240 @uref{http://www.mail-archive.com/lilypond-devel@@gnu.org/,
241 archive2}
242 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.devel,
243 archive3}
244
245 @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.devel,
246 send to lilypond-devel with gmane}
247 @end quotation
248
249
250 @subsubheading Bug mailing list: @code{bug-lilypond@@gnu.org}
251
252 Bug-specific discussion takes place here.
253
254 @quotation
255 @uref{http://lists.gnu.org/mailman/listinfo/bug-lilypond,
256 bug-lilypond subscribe and info}
257
258 @uref{http://lists.gnu.org/archive/html/bug-lilypond/,
259 bug archive1}
260 @uref{http://www.mail-archive.com/bug-lilypond@@gnu.org/,
261 archive2}
262 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.bugs,
263 archive3}
264
265 @c don't include gmane posting here.  -gp
266 @end quotation
267
268 @warning{Before sending a message to the bug list, please read our
269 guidelines for @ref{Bug reports}.}
270
271 @divEnd
272
273 @divClass{column-right-bottom}
274 @subheading Sensitive emails
275
276 Private matters should be sent to Graham Percival (project
277 manager), who will discuss it with those concerned.
278
279 @divEnd
280
281
282 @node Tiny examples
283 @unnumberedsec Tiny examples
284
285 @divClass{column-center-top}
286 @subheading What are @qq{Tiny examples}?
287
288 A tiny example is an example from which @strong{nothing} can be removed.
289 @divEnd
290
291 @divClass{column-left-bottom}
292 @subheading Why create them?
293
294 @divClass{keep-bullets}
295 @itemize
296
297 @item
298 The simpler the example is, the quicker potential helpers can
299 understand it and help you.
300
301 @item
302 A tiny example demonstrates that you have put effort towards
303 solving the problem yourself.  When people send huge portions of
304 input, it looks like they don't care if we help them or not.
305
306 @item
307 Creating a tiny example helps you to understand what is
308 happening.  Many false problem reports can be avoided by
309 attempting to create a tiny example; if you cannot replicate a
310 @qq{bug} in a tiny example, then the problem was probably an
311 insufficient understanding of LilyPond, not an actual bug!
312
313 @end itemize
314 @divEnd
315
316 @divEnd
317
318
319 @divClass{column-right-bottom}
320 @subheading How to create them?
321
322 @divClass{keep-bullets}
323 @itemize
324
325 @item
326 Include the @code{\version} number.
327
328 @item
329 Make it small!  Examples about spacing or page layout might
330 require many bars of music, but most issues can be reproduced
331 using less than a single measure.
332
333 @item
334 When trying to create an example, try commenting out @w{(@code{%}
335 or @code{%@{ @dots{} %@}})} sections of your file.  If you
336 can comment something while still demonstrating the main idea,
337 then remove the commented-material.
338
339 @item
340 Avoid using complicated notes, keys or time signatures, unless
341 the bug is about the behavior of those items.
342
343 @item
344 Do not use @code{\override} or @code{\set} commands unless the bug
345 is about those specific commands.
346
347 @item
348 Optionally, attach an image showing the desired graphical output.
349
350 @end itemize
351 @divEnd
352
353 @divEnd
354
355 @divClass{column-center-bottom}
356 @subheading How tiny should they be?
357
358 Is the code below a minimal example?
359
360 @example
361 \version "2.14.1"
362 \include "english.ly"
363
364 \score @{
365   \new Staff @{
366     \key d \major
367     \numericTimeSignature
368     \time 2/4
369     <cs' d'' b''>16 <cs' d'' b''>8.
370     %% Here: the tie on the D's looks funny
371     %% Too tall? Left-hand endpoint is not aligned with the B tie?
372     ~
373     <cs' d'' b''>8 [ <b d'' a''> ]
374   @}
375 @}
376 @end example
377
378 Well, it is not very big, but a truly minimal example is here:
379
380 @example
381 \version "2.14.1"
382 @{
383   % middle tie looks funny here:
384   <c' d'' b''>8. ~ <c' d'' b''>8
385 @}
386 @end example
387
388 Very few tiny examples exceed 10 lines of code -
389 quite often 4 lines are enough to demonstrate the problem!
390
391 @divEnd
392
393
394 @node Bug reports
395 @unnumberedsec Bug reports
396
397
398 @divClass{heading-center}
399 If you have input that results in a crash or wrong output,
400 then that is a bug.
401 @divEnd
402
403 @divClass{column-center-top}
404 @subheading Step 1: Known bugs
405
406 We may already know about this bug.  Check here:
407
408 @example
409 @uref{http://code.google.com/p/lilypond/issues/list}
410 @end example
411
412 @warning{Please @strong{DO NOT} add bug reports directly to the
413 bug tracker.  Once an issue has been added to the tracker, feel
414 free to add more information to that report.}
415
416 @divEnd
417
418
419 @divClass{column-left-bottom}
420 @subheading Step 2: Creating a bug report
421
422 If you have discovered a bug which is not listed,
423 please help us by creating a bug report.
424
425 @warning{We only accept reports in the form of
426 @ref{Tiny examples}.  We have very limited resources,
427 so any non-minimal example will be rejected.  Almost
428 every bug can be demonstrated in four notes or less!}
429
430 Here is an example of a good bug report:
431
432 @example
433 % Accidentals should be printed for only
434 % the first note in a tie, but this version
435 % prints flats on both notes.
436 \version "2.10.1"
437
438 \relative c'' @{
439  bes1 ~
440  bes1
441 @}
442 @end example
443
444 @divEnd
445
446 @divClass{column-right-bottom}
447 @subheading Step 3: Sending a bug report
448
449 Once you have verified that the issue is not already known and
450 created a bug report, please send it to us!
451
452 @divClass{keep-bullets}
453 @itemize
454
455 @item
456 If you are subscribed to the @uref{mailto:bug-lilypond@@gnu.org,
457 bug-lilypond@@gnu.org} mailing list, send an email like normal.
458
459 @item
460 If you are not subscribed, you can still post a bug report with
461 the
462 @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs,
463 gmane lilypond.bugs web interface}.
464
465 However, there is a strict @qq{no top-posting} check on the gmane
466 interface, which is often incorrectly triggered by lilypond files.
467 To avoid this, please add:
468
469 @example
470 > I'm not top posting.
471 @end example
472
473 @noindent
474 (you @emph{must} include the @code{>} ) to the top of your bug
475 report.
476
477 @end itemize
478 @divEnd
479 @divEnd
480
481 @divClass{column-center-bottom}
482 @subheading Step 4: Wait for a response
483
484 Once your bug report has been sent to the list, our Bug Squad will
485 examine it; they may ask you for more information.  You will be notified
486 when the report will be added to the bug tracker. Please allow up to 4 days,
487 as we have a limited number of volunteers for this task.
488
489 Once a bug has been added to the tracker, you can comment it to add
490 more information about it.
491 You may also mark the bug so that you automatically receive emails when
492 any activity on the bug occurs.  This requires you have a google
493 account.
494 @divEnd
495
496 @divClass{column-center-bottom}
497 @subheading Optional help: show the desired behavior
498
499 Once an issue has been added to the tracker, it can be very
500 helpful if we can see the desired output.  Feel free to add input
501 code and/or images (possibly created with other tools) which
502 demonstrate what you think it should look like!
503
504 @divEnd
505
506
507
508 @node Help us
509 @unnumberedsec Help us
510
511 @divClass{column-center-top}
512 @helpusNeed
513
514 @divEnd
515
516 @divClass{column-left-top}
517 @divClass{keep-bullets}
518 @helpusSimple
519
520 @divEnd
521 @divEnd
522
523 @divClass{column-right-top}
524 @helpusAdvanced
525
526 @divEnd
527
528
529 @node Sponsoring
530 @unnumberedsec Sponsoring
531
532 @divClass{keep-bullets}
533 @divClass{column-left-top}
534 @subheading Bounties
535
536 In the past,
537
538 @itemize
539 @item some users have paid for new features
540 @item some developers have added new features for hire
541 @end itemize
542
543 The LilyPond project does not organize such efforts; we neither
544 endorse nor discourage such agreements.  Any contracts between
545 private individuals is the business of those individuals, not
546 ours.
547
548 @divEnd
549
550 @divClass{column-right-top}
551 @subheading Guidelines
552
553 Any user wanting to offer money in exchange for work should bear
554 in mind the following points:
555
556 @itemize
557 @item
558 LilyPond developers may advertise their services on the lilypond
559 email lists from time to time.
560
561 @item
562 Any agreements between private individuals should include the
563 normal precautions when conducting business: who pays, how much do
564 they pay, with what method of payment, and upon what set of
565 conditions.  We suggest that any ambiguity or uncertainty in these
566 questions should be resolved before any work begins.
567
568 @end itemize
569
570 @divEnd
571
572 @divClass{column-center-bottom}
573 @subheading Interested developers
574
575 Here is a list of people who have expressed an interest in
576 bounties.  Note that the amount of work done by individuals varies
577 quite a bit throughout the years.  We do not guarantee that this
578 list is up-to-date, nor do we guarantee that the people listed
579 here have any ability.  The only criteria is "XYZ asked to be
580 listed on this page".
581
582 Looking at the git history is a good way to determine who the most
583 active and experienced developers are.  Statistics up to version
584 @versionDevel{}:
585
586 @multitable @columnfractions .3 .3 .3
587 @item @uref{http://lilypond.org/~graham/gitstats-all/, overall history}
588 @tab @uref{http://lilypond.org/~graham/gitstats-1year/, past year}
589 @tab @uref{http://lilypond.org/~graham/gitstats-3months/, past three months}
590 @end multitable
591
592 Interested developers:
593 @table @asis
594 @item @email{dak@@gnu.org, David Kastrup}
595 Donations are required to let me continue my current fulltime work on
596 LilyPond.  I focus on user and programmer interface design, coherence,
597 implementation, simplification, documentation, and debugging.
598
599 @c Format
600 @c @item @email{name@@adress.domain, Name}
601 @c area of interest (256 chars max)
602
603 @end table
604
605 @divEnd
606 @divEnd
607
608
609 @node Development
610 @unnumberedsec Development
611
612 @divClass{heading-center}
613 @ifclear web_version
614   @heading Development for LilyPond @version
615 @end ifclear
616 @ifset web_version
617   @heading Development for LilyPond @versionDevel
618 @end ifset
619
620
621 @c we normally don't allow named references, but in this case
622 @c it's good to emphasize the "stable" part.  -gp
623 @warning{These are @emph{unstable development} versions.  If you
624 have the slightest doubt about how to use or install LilyPond, we
625 urge you to use the @ref{Download, stable Download}, and read the
626 @ref{Manuals, stable Manuals}.}
627
628 @divEnd
629
630 @divClass{column-center-top}
631 @subheading Release numbers
632
633 There are two sets of releases for LilyPond: stable releases, and
634 unstable development releases.  Stable versions have an
635 even-numbered @q{minor} version number (e.g., 2.8, 2.10, 2.12).
636 Development versions have an odd-numbered @q{minor} version number
637 (e.g., 2.7, 2.9, 2.11).
638
639 @divEnd
640
641
642 @divClass{column-left-top}
643 @subheading Download
644
645 Instructions for git and compiling are in the Contributor's Guide.
646
647 @quotation
648 @uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git, lilypond git repository}
649 @end quotation
650
651 Documentation writers and testers will generally want to download
652 the latest binary:
653
654 @quotation
655
656 @downloadDevelLinuxNormal
657
658 @downloadDevelLinuxBig
659
660 @downloadDevelLinuxPPC
661
662 @downloadDevelFreeBSDNormal
663
664 @downloadDevelFreeBSDBig
665
666 @downloadDevelDarwinNormal
667
668 @downloadDevelDarwinPPC
669
670 @downloadDevelWindows
671
672 @downloadDevelSource
673
674 @end quotation
675
676 @divEnd
677
678
679 @divClass{column-right-top}
680 @subheading Contributor's Guide
681
682 LilyPond development is a fairly complicated matter.  In order to
683 help new contributors, and to keep the whole system (mostly)
684 stable, we have written a manual for development tasks.
685
686 @docLinksBare{Contributor's Guide, contributor,
687   @rcontribnamed{Top,Contributor's Guide},
688   @manualDevelContributorSplit,
689   @manualDevelContributorBig, 500 kB,
690   @manualDevelContributorPdf, 2.8 MB}
691
692 @divEnd
693
694
695 @divClass{column-center-top}
696 @subheading Regression tests
697
698 @divClass{keep-bullets}
699
700 @ifclear web_version
701
702 @itemize
703 @item
704 @uref{../../input/regression/collated-files.html, Regression tests}:
705 This release's regtests.
706 (@uref{../../input/regression/collated-files.pdf, pdf version})
707
708 @item
709 @uref{../../input/regression/musicxml/collated-files.html, MusicXML tests}:
710 This release's musicXML tests.
711 (@uref{../../input/regression/musicxml/collated-files.pdf, pdf version})
712
713 @item
714 @uref{../../input/regression/abc2ly/collated-files.html, abc2ly tests}:
715 This release's abc2ly tests.
716 (@uref{../../input/regression/abc2ly/collated-files.pdf, pdf version})
717
718 @item
719 @uref{../../input/regression/lilypond-book/collated-files.html, lilypond-book tests}:
720 This release's lilypond-book tests.
721 (@uref{../../input/regression/lilypond-book/collated-files.pdf, pdf version})
722 @end itemize
723
724 @end ifclear
725
726 @ifset web_version
727 @subsubheading Development version
728
729 @itemize
730 @item @regtestDevel (@regtestDevelPdf{})
731
732 @item @regtestDevelXml (@regtestDevelXmlPdf{})
733
734 @item @regtestDevelAbc (@regtestDevelAbcPdf{})
735
736 @item @regtestDevelLilypondBook (@regtestDevelLilypondBookPdf{})
737 @end itemize
738
739 @subsubheading Stable version
740
741 @itemize
742 @item @regtestStable (@regtestStablePdf{})
743
744 @item @regtestStableXml (@regtestStableXmlPdf{})
745
746 @item @regtestStableAbc (@regtestStableAbcPdf{})
747
748 @item @regtestStableLilypondBook (@regtestStableLilypondBookPdf{})
749 @end itemize
750 @end ifset
751
752
753 @subsubheading All versions
754
755 @itemize
756 @item @uref{http://lilypond.org/test, Comparisons between regression tests}
757
758 @item @uref{http://lilypond.org/download/binaries/test-output/,
759 Archive of all regression tests}
760
761 @end itemize
762
763 @divEnd
764 @divEnd
765
766
767
768 @divClass{column-center-bottom}
769 @subheading Manuals
770
771 @ifclear web_version
772 @warning{These manuals are for LilyPond @version{}; the latest
773 manuals can be found at @url{http://lilypond.org}}
774 @end ifclear
775
776 @divClass{normal-table}
777 @multitable @columnfractions .3 .3 .3
778 @headitem Introduction
779 @item
780 @docLinkSplit{Learning,learning,@manualDevelLearningSplit}
781 @tab
782 @docLinkBig{Learning,learning,@manualDevelLearningBig}
783 @tab
784 @docLinkPdf{Learning,learning,@manualDevelLearningPdf}
785
786 @item
787 @docLinkSplit{Glossary,music-glossary,@manualDevelGlossarySplit}
788 @tab
789 @docLinkBig{Glossary,music-glossary,@manualDevelGlossaryBig}
790 @tab
791 @docLinkPdf{Glossary,music-glossary,@manualDevelGlossaryPdf}
792
793 @item
794 @docLinkSplit{Essay,essay,@manualDevelEssaySplit}
795 @tab
796 @docLinkBig{Essay,essay,@manualDevelEssayBig}
797 @tab
798 @docLinkPdf{Essay,essay,@manualDevelEssayPdf}
799
800 @headitem Regular
801
802 @item
803 @docLinkSplit{Notation,notation,@manualDevelNotationSplit}
804 @tab
805 @docLinkBig{Notation,notation,@manualDevelNotationBig}
806 @tab
807 @docLinkPdf{Notation,notation,@manualDevelNotationPdf}
808
809 @item
810 @docLinkSplit{Usage,usage,@manualDevelUsageSplit}
811 @tab
812 @docLinkBig{Usage,usage,@manualDevelUsageBig}
813 @tab
814 @docLinkPdf{Usage,usage,@manualDevelUsagePdf}
815
816 @item
817 @docLinkSplit{Snippets,snippets,@manualDevelSnippetsSplit}
818 @tab
819 @docLinkBig{Snippets,snippets,@manualDevelSnippetsBig}
820 @tab
821 @docLinkPdf{Snippets,snippets,@manualDevelSnippetsPdf}
822
823 @headitem Infrequent
824
825 @item
826 @docLinkSplit{Web,web,@manualDevelWebSplit}
827 @tab
828 @docLinkBig{Web,web,@manualDevelWebBig}
829 @tab
830 @docLinkPdf{Web,web,@manualDevelWebPdf}
831
832 @item
833 @docLinkSplit{Changes,changes,@manualDevelChangesSplit}
834 @tab
835 @docLinkBig{Changes,changes,@manualDevelChangesBig}
836 @tab
837 @docLinkPdf{Changes,changes,@manualDevelChangesPdf}
838
839 @item
840 @docLinkSplit{Extending,extending,@manualDevelExtendingSplit}
841 @tab
842 @docLinkBig{Extending,extending,@manualDevelExtendingBig}
843 @tab
844 @docLinkPdf{Extending,extending,@manualDevelExtendingPdf}
845
846 @item
847 @docLinkSplit{Internals,internals,@manualDevelInternalsSplit}
848 @tab
849 @docLinkBig{Internals,internals,@manualDevelInternalsBig}
850 @tab
851 @docLinkPdf{Internals,internals,@manualDevelInternalsPdf}
852
853 @ifset web_version
854 @headitem Downloadable
855
856 @item
857 @doctarballDevel
858 @end ifset
859
860 @end multitable
861
862 @divEnd
863 @divEnd
864
865
866
867
868 @node GSoC
869 @unnumberedsec GSoC
870
871 @divClass{column-center-top}
872 @subheading What is Google Summer of Code?
873
874 Quoting
875 @uref{http://www.google-melange.com/gsoc/homepage/google/gsoc2012, GSoC website},
876 @qq{Google Summer of Code is a global program that offers students
877 stipends to write code for open source projects.  Google has worked
878 with the open source community to identify and fund exciting projects
879 for the upcoming summer.}
880
881 The LilyPond Team decided that this is an excellent opportunity to find
882 new contributors, encourage students already participating in LilyPond
883 development to become more involved, and - last but not least - write some
884 great code for the benefit of all!
885
886 In addition to getting paid for your work, you'll gain experience in
887 software development, which many of previous GSoC students describe as
888 @emph{invaluable} (and you'll get a t-shirt, too!).
889
890 If you have any questions, read
891 @uref{http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2012/faqs, GSoC FAQ}
892 or contact us at @code{lilypond-devel@@gnu.org}.
893
894 @divEnd
895
896 @divClass{column-center-bottom}
897 @subheading Our Ideas List
898
899 Below is a list of projects suggested for GSoC students.  If you don't
900 see a project that suits you, feel free to contact us and suggest your own!
901 It's also possible to scale down a project if you feel it's too big.
902
903 We require that every student has basic @code{git} knowledge, and
904 recommend that everyone applying for projects other than the last one
905 have basic music notation knowledge.
906
907 @subheading Grace notes
908
909 Fix problems with synchronization of grace notes,
910 together with all underlying architecture (see
911 @uref{http://code.google.com/p/lilypond/issues/detail?id=34, issue 34 in our tracker}).
912 Grace notes are confusing to LilyPond's timing because they're like
913 going back in time.  This causes weird effects, especially when one staff
914 has a grace note and the other doesn't.
915
916 @strong{Difficulty:} medium
917
918 @strong{Requirements:} C++, MIDI
919
920 @strong{Recommended:} familiarity with LilyPond internals
921
922 @strong{Mentor(s):} Mike Solomon, Carl Sorensen
923
924 @subheading MusicXML
925
926 Adding comprehensive MusicXML export and improving import,
927 together with tests checking that it works. Depending on time available,
928 implement some or all of the following:
929
930 @divClass{keep-bullets}
931 @itemize
932
933 @item
934 Handle basic musical content export like the MIDI export (i.e. using
935 dedicated exporter classes, derived from the translator class)
936
937 @item
938 Build the XML tree of the basic musical content,
939 add a connection from music event to XML tag
940
941 @item
942 Let all LilyPond engravers do their job
943
944 @item
945 add ability to link each output object
946 (basically each stencil / group of stencils) to the music cause
947 (and thus to the XML tag in the XML tree)
948
949 @item
950 Add a XML output backend, which can then add the layout information
951 for each output object to the XML tags
952
953 @end itemize
954 @divEnd
955
956 The goal will be considered achieved when a (previously chosen) score could be
957 imported from MusicXML and exported back with no unintentional loss of data.
958
959 @strong{Difficulty:} medium
960
961 @strong{Requirements:} MusicXML, Python, basic LilyPond knowledge
962
963 @strong{Mentor(s):} Reinhold Kainhofer, Mike Solomon
964
965 familiarity with other scorewriters (for cross-testing) would be a nice bonus.
966
967 @subheading Improve slurs and ties
968
969 The default shape of slur and tie curves is often unsatisfactory.
970 Ties on enharmonic notes @code{@{ cis'~ des' @}} are not supported,
971 ties "broken" by clef or staff change aren't supported well.
972 The project includes collecting and sorting examples of bad output,
973 deciding on the intended output and writing the actual code.
974
975 @strong{Difficulty:} hard
976
977 @strong{Requirements:} C++, experience with writing heuristics
978
979 @strong{Recommended knowledge:} LilyPond knowledge, aesthetic sense
980
981 @strong{Mentor(s):} Mike Solomon
982
983 @subheading Adding special variant of font glyphs
984 Adding on-staff-line, between-staff-line, shorter and narrower variants
985 of some glyphs, for example accidentals, together with a generic
986 infrasctucture to support them.  An example is ancient notation breve notehead
987 coming in two variants, with smaller and bigger hole.
988
989 @strong{Difficulty:} easy
990
991 @strong{Requirements:} MetaFont, C++, good eye for details
992
993 @strong{Recommended knowledge:} basic LilyPond knowledge
994
995 @strong{Mentor(s):} Werner Lemberg
996
997 @subheading Improve beaming
998
999 Default positioning of regular, cross-staff, broken and kneed beams
1000 should be improved.  Beaming should depend on context and neighbor notes (see
1001 @uref{http://icking-music-archive.org/lists/sottisier/sottieng.pdf, section 2.2 here}).
1002 If possible, reduce beaming computation time.
1003
1004 @strong{Difficulty:} medium
1005
1006 @strong{Requirements:} C++, experience with writing heuristics
1007
1008 @strong{Recommended knowledge:} aesthetic sense
1009
1010 @strong{Mentor(s):} Mike Solomon, Carl Sorensen
1011
1012 @subheading Better tablature support
1013
1014 @divClass{keep-bullets}
1015 @itemize
1016
1017 @item
1018 non-monotonic string tunings, like Ukulele
1019
1020 @item
1021 create tablature input mode (currently musical information is entered
1022 in western-common-music-notation-terms, i.e. @qq{a quarter f sharp note}
1023 and then converted to tablature) for transcribing medieval lute tablature
1024
1025 @item
1026 implement modern tablature features, such as bends, pull-off, hammer-on
1027
1028 @item
1029 if a fretboard shape is defined for a given chord, use this information when
1030 displaying the chord on the staff (and not just display a default chord shape)
1031
1032 @end itemize
1033 @divEnd
1034
1035 @strong{Difficulty:} easy
1036
1037 @strong{Requirements:} C++
1038
1039 @strong{Recommended knowledge:} tablature notation familiarity
1040
1041 @strong{Mentor(s):} Carl Sorensen
1042
1043 @subheading Clean up various compilation warnings
1044
1045 Clean up compiler warnings, static code analysis, and valgrind warnings.
1046 Automatic code analysis tools (warnings in @code{g++} and @code{clang})
1047 and analysis tools like valgrind memory leak detection and callgrind code
1048 profilers provide valuable information about possible flaws in C++ code.
1049 Cleaning these warnings would allow us to automatically reject any patch
1050 which introduced extra warnings.
1051
1052 @strong{Difficulty:} medium
1053
1054 @strong{Requirements:} C++
1055
1056 @strong{Mentor(s):} Joe Neeman, Reinhold Kainhofer
1057
1058 @divEnd
1059
1060
1061
1062
1063 @node Authors
1064 @unnumberedsec Authors
1065
1066 @divClass{column-left-top}
1067 @subheading Current Development Team
1068
1069 @divClass{keep-bullets}
1070 @developersCurrent
1071 @divEnd
1072 @divEnd
1073
1074 @divClass{column-right-top}
1075 @subheading Previous Development Team
1076
1077 @divClass{keep-bullets}
1078 @developersPrevious
1079 @divEnd
1080 @divEnd
1081
1082
1083 @divClass{column-center-top}
1084 @subheading Current Contributors
1085
1086 @divClass{keep-bullets}
1087 @subsubheading Programming
1088
1089 @coreCurrent
1090
1091 @subsubheading Font
1092
1093 @fontCurrent
1094
1095 @subsubheading Documentation
1096
1097 @docCurrent
1098
1099 @subsubheading Bug squad
1100
1101 @bugsquadCurrent
1102
1103 @subsubheading Support
1104
1105 @supportCurrent
1106
1107 @subsubheading Translation
1108
1109 @translationsCurrent
1110
1111 @divEnd
1112 @divEnd
1113
1114
1115 @divClass{column-center-bottom}
1116 @subheading Previous Contributors
1117
1118 @divClass{keep-bullets}
1119 @subsubheading Programming
1120
1121 @corePrevious
1122
1123 @subsubheading Font
1124
1125 @fontPrevious
1126
1127 @subsubheading Documentation
1128
1129 @docPrevious
1130
1131 @c    uncomment when we have any previous members -gp
1132 @c @subsubheading Bug squad
1133
1134 @c @bugsquadCurrent
1135
1136 @subsubheading Support
1137
1138 @supportPrevious
1139
1140 @subsubheading Translation
1141
1142 @translationsPrevious
1143
1144 @divEnd
1145 @divEnd
1146
1147
1148
1149 @node Publications
1150 @unnumberedsec Publications
1151
1152 @divClass{column-center-top}
1153 @subheading What we wrote about LilyPond
1154
1155 @divClass{keep-bullets}
1156
1157 @include we-wrote.itexi
1158
1159 @divEnd
1160 @divEnd
1161
1162 @divClass{column-center-bottom}
1163
1164 @subheading What people did with LilyPond
1165
1166
1167 @divClass{keep-bullets}
1168
1169 @include others-did.itexi
1170
1171 @divEnd
1172 @divEnd
1173
1174 @contactUsAbout{academic papers}
1175
1176
1177 @node Old news
1178 @unnumberedsec Old news
1179
1180 @include web/news-front.itexi
1181
1182 @include web/news.itexi