@c -*- coding: us-ascii; mode: texinfo; -*- @node Introduction to contributing @chapter Introduction to contributing @menu * Overview of tasks:: * For unix developers:: * For other contributors:: @end menu @node Overview of tasks @section Overview of tasks FIXME: The intro should contain the "help us" material from web/, quite possibly as the very first thing. This requires having a macro for it, which depends on issue 939. @node For unix developers @section For unix developers To download the LilyPond Git repository: @example git clone git://git.sv.gnu.org/lilypond.git @end example Documentation is built using Texinfo. Subscribe to the developers' mailing list at @uref{http://lists.gnu.org/mailman/listinfo/lilypond-devel} and send well-formed Git patches to @uref{mailto::lilypond-devel@@gnu.org} for discussion. @node For other contributors @section For other contributors The LilyPond source code is maintained as a Git repository, which contains: @itemize @item all of the source files needed to build LilyPond, and @item a record of the entire history of every change made to every file since the program was born. @end itemize The @q{official} LilyPond Git repository is hosted by the GNU Savannah software forge at @uref{http://git.sv.gnu.org}. Although, since Git uses a @q{distributed} model, technically there is no central repository. Instead, each contributor keeps a complete copy of the entire repository (about 116M). Changes made within one contributor's copy of the repository can be shared with other contributors using @emph{patches}. A patch is a simple text file generated by the @code{git} program that indicates what changes have been made (using a special format). If a contributor's patch is approved for inclusion (usually through the mailing list), someone on the current development team will @emph{apply} (or @q{push}) the patch to the official repository. Compiling (@q{building}) LilyPond allows developers to see how changes to the source code affect the program itself. Compiling is also needed to package the program for specific operating systems or distributions. LilyPond can be compiled from a local Git repository (for developers), or from a downloaded tarball (for packagers). Compiling LilyPond is a rather involved process, and most contributor tasks do not require it.