]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/web/community.itexi
Web: add GSoC ideas list
[lilypond.git] / Documentation / web / community.itexi
index 78b151852dc2d08cdd85e83d2b9cebe768a250eb..5a7662a274760d8c1d0dc980c56cc098ce16e582 100644 (file)
@@ -13,6 +13,7 @@
 @node Community
 @unnumbered Community
 
+@divClass{link-headings}
 
 @divClass{column-center-top}
 @subheading Interacting with the community
@@ -40,9 +41,15 @@ discussing LilyPond.
 @item
 @ref{Help us}: your assistance is requested.
 
+@item
+@ref{Sponsoring}: financial contributions.
+
 @item
 @ref{Development}: for contributors and testers.
 
+@item
+@ref{GSoC}: list of projects for Google Summer of Code.
+
 @item
 @ref{Authors}: the people who made LilyPond what it is today.
 
@@ -63,6 +70,7 @@ discussing LilyPond.
 @end itemize
 @divEnd
 
+@divEnd
 
 @divClass{hide}
 @menu
@@ -70,7 +78,9 @@ discussing LilyPond.
 * Tiny examples::
 * Bug reports::
 * Help us::
+* Sponsoring::
 * Development::
+* GSoC::
 * Authors::
 * Publications::
 * Old news::
@@ -111,7 +121,7 @@ send to lilypond-user with gmane}
 
 The LilyPond Snippet Repository is a large collection of
 user-submitted examples, which can freely be copied and used
-in your owm works.  See what other people have written,
+in your own works.  See what other people have written,
 and add your own!
 
 @example
@@ -166,7 +176,7 @@ Spanish mailing list}
 German forum}
 
 @uref{http://groups.google.com/group/lilypond-brasil,
-Portugese group}
+Portuguese group}
 
 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-user-fr,
 French mailing list}
@@ -260,6 +270,13 @@ guidelines for @ref{Bug reports}.}
 
 @divEnd
 
+@divClass{column-right-bottom}
+@subheading Sensitive emails
+
+Private matters should be sent to Graham Percival (project
+manager), who will discuss it with those concerned.
+
+@divEnd
 
 
 @node Tiny examples
@@ -268,7 +285,7 @@ guidelines for @ref{Bug reports}.}
 @divClass{column-center-top}
 @subheading What are @qq{Tiny examples}?
 
-A tiny example is an example from which nothing can be removed.
+A tiny example is an example from which @strong{nothing} can be removed.
 @divEnd
 
 @divClass{column-left-bottom}
@@ -282,12 +299,12 @@ The simpler the example is, the quicker potential helpers can
 understand it and help you.
 
 @item
-A simple example demonstrates that you have put effort towards
+A tiny example demonstrates that you have put effort towards
 solving the problem yourself.  When people send huge portions of
-input, it looks like they don't care how if we help them or not.
+input, it looks like they don't care if we help them or not.
 
 @item
-Creating a tiny example forces you to understand what is
+Creating a tiny example helps you to understand what is
 happening.  Many false problem reports can be avoided by
 attempting to create a tiny example; if you cannot replicate a
 @qq{bug} in a tiny example, then the problem was probably an
@@ -300,50 +317,93 @@ insufficient understanding of LilyPond, not an actual bug!
 
 
 @divClass{column-right-bottom}
-@subheading How do I create them?
+@subheading How to create them?
 
 @divClass{keep-bullets}
 @itemize
 
 @item
-Include the \version number.
+Include the @code{\version} number.
 
 @item
 Make it small!  Examples about spacing or page layout might
 require many bars of music, but most issues can be reproduced
-using only a single measure.
+using less than a single measure.
 
 @item
 When trying to create an example, try commenting out @w{(@code{%}
-or @code{%@{ @dots{} %@}})} sections of your file.  If you can
-comment something while still demonstrating the main idea, then
-remove the commented-material!
+or @code{%@{ @dots{} %@}})} sections of your file.  If you
+can comment something while still demonstrating the main idea,
+then remove the commented-material.
 
 @item
-Avoid using complicated notes, keys, or time signatures, unless
+Avoid using complicated notes, keys or time signatures, unless
 the bug is about the behavior of those items.
 
 @item
 Do not use @code{\override} or @code{\set} commands unless the bug
-is about those particular commands.
+is about those specific commands.
+
+@item
+Optionally, attach an image showing the desired graphical output.
 
 @end itemize
 @divEnd
 
 @divEnd
 
+@divClass{column-center-bottom}
+@subheading How tiny should they be?
+
+Is the code below a minimal example?
 
+@example
+\version "2.14.1"
+\include "english.ly"
+
+\score @{
+  \new Staff @{
+    \key d \major
+    \numericTimeSignature
+    \time 2/4
+    <cs' d'' b''>16 <cs' d'' b''>8.
+    %% Here: the tie on the D's looks funny
+    %% Too tall? Left-hand endpoint is not aligned with the B tie?
+    ~
+    <cs' d'' b''>8 [ <b d'' a''> ]
+  @}
+@}
+@end example
+
+Well, it is not very big, but a truly minimal example is here:
+
+@example
+\version "2.14.1"
+@{
+  % middle tie looks funny here:
+  <c' d'' b''>8. ~ <c' d'' b''>8
+@}
+@end example
+
+Very few tiny examples exceed 10 lines of code -
+quite often 4 lines are enough to demonstrate the problem!
+
+@divEnd
 
 
 @node Bug reports
 @unnumberedsec Bug reports
 
+
+@divClass{heading-center}
+If you have input that results in a crash or wrong output,
+then that is a bug.
+@divEnd
+
 @divClass{column-center-top}
 @subheading Step 1: Known bugs
 
-If you have input that results in a crash or an erroneous output,
-then that is a bug.  There is a list of current bugs on our google
-bug tracker,
+We may already know about this bug.  Check here:
 
 @example
 @uref{http://code.google.com/p/lilypond/issues/list}
@@ -359,25 +419,25 @@ free to add more information to that report.}
 @divClass{column-left-bottom}
 @subheading Step 2: Creating a bug report
 
-If you have discovered a bug which is not listed, please help us
-by creating a bug report.
+If you have discovered a bug which is not listed,
+please help us by creating a bug report.
 
-@warning{We only accept bug reports in the form of
-@ref{Tiny examples}.  We have very limited resources to deal with
-bug reports, so any non-minimal example will be rejected.  Almost
+@warning{We only accept reports in the form of
+@ref{Tiny examples}.  We have very limited resources,
+so any non-minimal example will be rejected.  Almost
 every bug can be demonstrated in four notes or less!}
 
 Here is an example of a good bug report:
 
 @example
-%% the octavation command doesn't
-%% change the output at all!
-
-\version "2.10.0"
-\relative c''' @{
-  c1
-  #(set-octavation 1)
 c1
+% Accidentals should be printed for only
+% the first note in a tie, but this version
+% prints flats on both notes.
+\version "2.10.1"
+
+\relative c'' @{
+ bes1 ~
bes1
 @}
 @end example
 
@@ -416,18 +476,34 @@ report.
 
 @end itemize
 @divEnd
+@divEnd
 
-Once your bug has been sent to the list, our Bug Squad will
-examine the report.  Please allow up to 24 hours, as we have a
-limited number of volunteers for this task.  They may ask you for
-more information, or may add the report to the tracker and let you
-know what the issue number is.
+@divClass{column-center-bottom}
+@subheading Step 4: Wait for a response
 
-You may mark the bug so that you automatically receive emails when
+Once your bug report has been sent to the list, our Bug Squad will
+examine it; they may ask you for more information.  You will be notified
+when the report will be added to the bug tracker. Please allow up to 4 days,
+as we have a limited number of volunteers for this task.
+
+Once a bug has been added to the tracker, you can comment it to add
+more information about it.
+You may also mark the bug so that you automatically receive emails when
 any activity on the bug occurs.  This requires you have a google
 account.
 @divEnd
 
+@divClass{column-center-bottom}
+@subheading Optional help: show the desired behavior
+
+Once an issue has been added to the tracker, it can be very
+helpful if we can see the desired output.  Feel free to add input
+code and/or images (possibly created with other tools) which
+demonstrate what you think it should look like!
+
+@divEnd
+
+
 
 @node Help us
 @unnumberedsec Help us
@@ -439,14 +515,94 @@ account.
 
 @divClass{column-left-top}
 @divClass{keep-bullets}
-@helpusTasks
+@helpusSimple
+
+@divEnd
+@divEnd
+
+@divClass{column-right-top}
+@helpusAdvanced
 
 @divEnd
+
+
+@node Sponsoring
+@unnumberedsec Sponsoring
+
+@divClass{keep-bullets}
+@divClass{column-left-top}
+@subheading Bounties
+
+In the past,
+
+@itemize
+@item some users have paid for new features
+@item some developers have added new features for hire
+@end itemize
+
+The LilyPond project does not organize such efforts; we neither
+endorse nor discourage such agreements.  Any contracts between
+private individuals is the business of those individuals, not
+ours.
+
 @divEnd
 
 @divClass{column-right-top}
-@helpusProjects
+@subheading Guidelines
+
+Any user wanting to offer money in exchange for work should bear
+in mind the following points:
+
+@itemize
+@item
+LilyPond developers may advertise their services on the lilypond
+email lists from time to time.
+
+@item
+Any agreements between private individuals should include the
+normal precautions when conducting business: who pays, how much do
+they pay, with what method of payment, and upon what set of
+conditions.  We suggest that any ambiguity or uncertainty in these
+questions should be resolved before any work begins.
+
+@end itemize
+
+@divEnd
+
+@divClass{column-center-bottom}
+@subheading Interested developers
 
+Here is a list of people who have expressed an interest in
+bounties.  Note that the amount of work done by individuals varies
+quite a bit throughout the years.  We do not guarantee that this
+list is up-to-date, nor do we guarantee that the people listed
+here have any ability.  The only criteria is "XYZ asked to be
+listed on this page".
+
+Looking at the git history is a good way to determine who the most
+active and experienced developers are.  Statistics up to version
+@versionDevel{}:
+
+@multitable @columnfractions .3 .3 .3
+@item @uref{http://lilypond.org/~graham/gitstats-all/, overall history}
+@tab @uref{http://lilypond.org/~graham/gitstats-1year/, past year}
+@tab @uref{http://lilypond.org/~graham/gitstats-3months/, past three months}
+@end multitable
+
+Interested developers:
+@table @asis
+@item @email{dak@@gnu.org, David Kastrup}
+Donations are required to let me continue my current fulltime work on
+LilyPond.  I focus on user and programmer interface design, coherence,
+implementation, simplification, documentation, and debugging.
+
+@c Format
+@c @item @email{name@@adress.domain, Name}
+@c area of interest (256 chars max)
+
+@end table
+
+@divEnd
 @divEnd
 
 
@@ -462,10 +618,12 @@ account.
 @end ifset
 
 
+@c we normally don't allow named references, but in this case
+@c it's good to emphasize the "stable" part.  -gp
 @warning{These are @emph{unstable development} versions.  If you
 have the slightest doubt about how to use or install LilyPond, we
-urge you to use the stable @ref{Download}, and read the stable
-@ref{Manuals}.}
+urge you to use the @ref{Download, stable Download}, and read the
+@ref{Manuals, stable Manuals}.}
 
 @divEnd
 
@@ -538,10 +696,10 @@ stable, we have written a manual for development tasks.
 @subheading Regression tests
 
 @divClass{keep-bullets}
-@itemize
 
 @ifclear web_version
 
+@itemize
 @item
 @uref{../../input/regression/collated-files.html, Regression tests}:
 This release's regtests.
@@ -551,23 +709,57 @@ This release's regtests.
 @uref{../../input/regression/musicxml/collated-files.html, MusicXML tests}:
 This release's musicXML tests.
 (@uref{../../input/regression/musicxml/collated-files.pdf, pdf version})
+
+@item
+@uref{../../input/regression/abc2ly/collated-files.html, abc2ly tests}:
+This release's abc2ly tests.
+(@uref{../../input/regression/abc2ly/collated-files.pdf, pdf version})
+
+@item
+@uref{../../input/regression/lilypond-book/collated-files.html, lilypond-book tests}:
+This release's lilypond-book tests.
+(@uref{../../input/regression/lilypond-book/collated-files.pdf, pdf version})
+@end itemize
+
 @end ifclear
 
 @ifset web_version
+@subsubheading Development version
+
+@itemize
 @item @regtestDevel (@regtestDevelPdf{})
 
 @item @regtestDevelXml (@regtestDevelXmlPdf{})
 
+@item @regtestDevelAbc (@regtestDevelAbcPdf{})
+
+@item @regtestDevelLilypondBook (@regtestDevelLilypondBookPdf{})
+@end itemize
+
+@subsubheading Stable version
+
+@itemize
 @item @regtestStable (@regtestStablePdf{})
 
 @item @regtestStableXml (@regtestStableXmlPdf{})
+
+@item @regtestStableAbc (@regtestStableAbcPdf{})
+
+@item @regtestStableLilypondBook (@regtestStableLilypondBookPdf{})
+@end itemize
 @end ifset
 
 
-@item @uref{http://lilypond.org/test, Archive of regression tests}:
-Comparisons between versions.
+@subsubheading All versions
+
+@itemize
+@item @uref{http://lilypond.org/test, Comparisons between regression tests}
+
+@item @uref{http://lilypond.org/download/binaries/test-output/,
+Archive of all regression tests}
 
 @end itemize
+
 @divEnd
 @divEnd
 
@@ -673,6 +865,201 @@ manuals can be found at @url{http://lilypond.org}}
 
 
 
+@node GSoC
+@unnumberedsec GSoC
+
+@divClass{column-center-top}
+@subheading What is Google Summer of Code?
+
+Quoting
+@uref{http://www.google-melange.com/gsoc/homepage/google/gsoc2012, GSoC website},
+@qq{Google Summer of Code is a global program that offers students
+stipends to write code for open source projects.  Google has worked
+with the open source community to identify and fund exciting projects
+for the upcoming summer.}
+
+The LilyPond Team decided that this is an excellent opportunity to find
+new contributors, encourage students already participating in LilyPond
+development to become more involved, and - last but not least - write some
+great code for the benefit of all!
+
+In addition to getting paid for your work, you'll gain experience in
+software development, which many of previous GSoC students describe as
+@emph{invaluable} (and you'll get a t-shirt, too!).
+
+If you have any questions, read
+@uref{http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2012/faqs, GSoC FAQ}
+or contact us at @code{lilypond-devel@@gnu.org}.
+
+@divEnd
+
+@divClass{column-center-bottom}
+@subheading Our Ideas List
+
+Below is a list of projects suggested for GSoC students.  If you don't
+see a project that suits you, feel free to contact us and suggest your own!
+It's also possible to scale down a project if you feel it's too big.
+
+We require that every student has basic @code{git} knowledge, and
+recommend that everyone applying for projects other than the last one
+have basic music notation knowledge.
+
+@subheading Grace notes
+
+Fix problems with synchronization of grace notes,
+together with all underlying architecture (see
+@uref{http://code.google.com/p/lilypond/issues/detail?id=34, issue 34 in our tracker}).
+Grace notes are confusing to LilyPond's timing because they're like
+going back in time.  This causes weird effects, especially when one staff
+has a grace note and the other doesn't.
+
+@strong{Difficulty:} medium
+
+@strong{Requirements:} C++, MIDI
+
+@strong{Recommended:} familiarity with LilyPond internals
+
+@strong{Mentor(s):} Mike Solomon, Carl Sorensen
+
+@subheading MusicXML
+
+Adding comprehensive MusicXML export and improving import,
+together with tests checking that it works. Depending on time available,
+implement some or all of the following:
+
+@divClass{keep-bullets}
+@itemize
+
+@item
+Handle basic musical content export like the MIDI export (i.e. using
+dedicated exporter classes, derived from the translator class)
+
+@item
+Build the XML tree of the basic musical content,
+add a connection from music event to XML tag
+
+@item
+Let all LilyPond engravers do their job
+
+@item
+add ability to link each output object
+(basically each stencil / group of stencils) to the music cause
+(and thus to the XML tag in the XML tree)
+
+@item
+Add a XML output backend, which can then add the layout information
+for each output object to the XML tags
+
+@end itemize
+@divEnd
+
+The goal will be considered achieved when a (previously chosen) score could be
+imported from MusicXML and exported back with no unintentional loss of data.
+
+@strong{Difficulty:} medium
+
+@strong{Requirements:} MusicXML, Python, basic LilyPond knowledge
+
+@strong{Mentor(s):} Reinhold Kainhofer, Mike Solomon
+
+familiarity with other scorewriters (for cross-testing) would be a nice bonus.
+
+@subheading Improve slurs and ties
+
+The default shape of slur and tie curves is often unsatisfactory.
+Ties on enharmonic notes @code{@{ cis'~ des' @}} are not supported,
+ties "broken" by clef or staff change aren't supported well.
+The project includes collecting and sorting examples of bad output,
+deciding on the intended output and writing the actual code.
+
+@strong{Difficulty:} hard
+
+@strong{Requirements:} C++, experience with writing heuristics
+
+@strong{Recommended knowledge:} LilyPond knowledge, aesthetic sense
+
+@strong{Mentor(s):} Mike Solomon
+
+@subheading Adding special variant of font glyphs
+Adding on-staff-line, between-staff-line, shorter and narrower variants
+of some glyphs, for example accidentals, together with a generic
+infrasctucture to support them.  An example is ancient notation breve notehead
+coming in two variants, with smaller and bigger hole.
+
+@strong{Difficulty:} easy
+
+@strong{Requirements:} MetaFont, C++, good eye for details
+
+@strong{Recommended knowledge:} basic LilyPond knowledge
+
+@strong{Mentor(s):} Werner Lemberg
+
+@subheading Improve beaming
+
+Default positioning of regular, cross-staff, broken and kneed beams
+should be improved.  Beaming should depend on context and neighbor notes (see
+@uref{http://icking-music-archive.org/lists/sottisier/sottieng.pdf, section 2.2 here}).
+If possible, reduce beaming computation time.
+
+@strong{Difficulty:} medium
+
+@strong{Requirements:} C++, experience with writing heuristics
+
+@strong{Recommended knowledge:} aesthetic sense
+
+@strong{Mentor(s):} Mike Solomon, Carl Sorensen
+
+@subheading Better tablature support
+
+@divClass{keep-bullets}
+@itemize
+
+@item
+non-monotonic string tunings, like Ukulele
+
+@item
+create tablature input mode (currently musical information is entered
+in western-common-music-notation-terms, i.e. @qq{a quarter f sharp note}
+and then converted to tablature) for transcribing medieval lute tablature
+
+@item
+implement modern tablature features, such as bends, pull-off, hammer-on
+
+@item
+if a fretboard shape is defined for a given chord, use this information when
+displaying the chord on the staff (and not just display a default chord shape)
+
+@end itemize
+@divEnd
+
+@strong{Difficulty:} easy
+
+@strong{Requirements:} C++
+
+@strong{Recommended knowledge:} tablature notation familiarity
+
+@strong{Mentor(s):} Carl Sorensen
+
+@subheading Clean up various compilation warnings
+
+Clean up compiler warnings, static code analysis, and valgrind warnings.
+Automatic code analysis tools (warnings in @code{g++} and @code{clang})
+and analysis tools like valgrind memory leak detection and callgrind code
+profilers provide valuable information about possible flaws in C++ code.
+Cleaning these warnings would allow us to automatically reject any patch
+which introduced extra warnings.
+
+@strong{Difficulty:} medium
+
+@strong{Requirements:} C++
+
+@strong{Mentor(s):} Joe Neeman, Reinhold Kainhofer
+
+@divEnd
+
+
+
+
 @node Authors
 @unnumberedsec Authors
 
@@ -766,71 +1153,26 @@ manuals can be found at @url{http://lilypond.org}}
 @subheading What we wrote about LilyPond
 
 @divClass{keep-bullets}
-@itemize
 
-@item
-Han-Wen Nienhuys, @emph{LilyPond, Automated music formatting and
-the Art of Shipping}.  Forum Internacional Software Livre 2006
-(FISL7.0) (@uref{http://lilypond.org/web/images/FISL7-slides.pdf,
-PDF 1095k})
-
-@item
-Erik Sandberg, @emph{Separating input language and formatter in
-GNU LilyPond}. Master's Thesis, Uppsala University, Department of
-Information Technology March 2006.
-(@uref{http://lilypond.org/web/images/thesis-erik-sandberg.pdf,
-PDF 750k})
-
-@item
-Han-Wen Nienhuys and Jan Nieuwenhuizen, @emph{LilyPond, a system
-for automated music engraving}.  Proceedings of the XIV Colloquium
-on Musical Informatics (XIV CIM 2003), Firenze, Italy, May 2003.
-(@uref{ http://lilypond.org/web/images/xivcim.pdf, PDF 95k})
-
-@end itemize
+@include we-wrote.itexi
 
 @divEnd
 @divEnd
 
-
 @divClass{column-center-bottom}
 
 @subheading What people did with LilyPond
 
 
 @divClass{keep-bullets}
-@itemize
-
-@item
-Graham Percival, Tosten Anders, and George Tzanetakis,
-@emph{Generating Targeted Rhythmic Exercises for Music Students
-with Constraint Satisfaction Programming}, International Computer
-Music Conference 2008.
-
-@item
-Alexandre Tachard Passos, Marcos Sampaio, Pedro Kröger, Givaldo de Cidra,
-@emph{Functional Harmonic Analysis and Computational Musicology
-in Rameau}, Proceedings of the 12th Brazilian Symposium on Compute
-Music, 2009, pp. 207-210.
-
-@item
-Alberto Simões, Anália Lourenço and José João Almeida,
-@emph{Using Text Mining Techniques for Classical Music Scores Analysis},
-New Trends in Artificial Intelligence, 2007 J. Neves et al ed.
-
-@item
 
-Kevin C. Baird 2005,
-@emph{Real-time generation of music notation via audience interaction using
-python and GNU lilypond}. Proceedings of the 2005 Conference on New interfaces
-For Musical Expression (Vancouver, Canada, May 26 - 28, 2005).
-
-
-@end itemize
+@include others-did.itexi
 
 @divEnd
 @divEnd
 
+@contactUsAbout{academic papers}
+
 
 @node Old news
 @unnumberedsec Old news
@@ -838,5 +1180,3 @@ For Musical Expression (Vancouver, Canada, May 26 - 28, 2005).
 @include web/news-front.itexi
 
 @include web/news.itexi
-
-