LilyPond Contributor's Guide: proposed addition "Introduction to LilyPond Development" Before you start developing, it will be helpful to understand a few basic concepts related to LilyPond development. The LilyPond source code is maintained as a Git repository. A LilyPond Git repository is a directory which contains: 1) all of the source files needed to build LilyPond, and 2) a `.git' directory which is used by the git program to keep track of the data and the changes made over time. The `official' LilyPond Git repository is hosted by the GNU project at git.savannah.gnu.org (note that shortened form git.sv.gnu.org resolves to the same host). However, since Git uses a `distributed' model, technically there is no central repository. Each contributor has 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 `patches'. A `patch' is a simple text file generated by the 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 `apply' the patch to the official repository. A Git repository can be used to build (`compile') the entire program, but it is not strictly necessary---LilyPond can be compiled from a downloaded tarball instead. Tarballs are useful if you want to install the program from source files but you don't want to do any developing. However, a Git repository is needed to produce patches and contribute to LilyPond development. And even with your own Git repository, you may choose not to compile LilyPond at all. In fact, compiling LilyPond is a rather involved process, and many development tasks do not require it. However, if you wish to see the effect of your changes on the program itself, you will need to compile it. To put it simply, if you only want to use the program, you only need to *install* it. If you want to modify source files and create patches for development, you only need a Git repository (technically you don't even need an installed copy of the program, but it helps). If you want modify source files *and* see how your changes affect the finished product, then you'll need a Git repository *and* you'll need to compile the program on your own.