]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/contributor/introduction.itexi
480aba641ac8f1c67bb2a3670b2688a98d7098e1
[lilypond.git] / Documentation / contributor / introduction.itexi
1 @c -*- coding: utf-8; mode: texinfo; -*-
2
3 @include included/helpus.itexi
4
5 @node Introduction to contributing
6 @chapter Introduction to contributing
7
8 This chapter presents a quick overview of ways that people can
9 help LilyPond.
10
11 @menu
12 * Help us::
13 * Overview of work flow::
14 * Mentors::
15 @end menu
16
17
18 @node Help us
19 @section Help us
20
21 @helpusNeed
22
23 @helpusTasks
24
25 @helpusProjects
26
27
28 @node Overview of work flow
29 @section Overview of work flow
30
31 @cartouche
32 @strong{Ultra-short summary for Unix developers}: source code is at
33 @code{git://git.sv.gnu.org/lilypond.git}.  Documentation is built
34 with Texinfo, after pre-processing with @code{lilypond-book}.
35 Send well-formed patches to @email{lilypond-devel@@gnu.org}.
36 @end cartouche
37
38 Git is a @emph{version control system} that tracks the history of
39 a program's source code.  The LilyPond source code is maintained
40 as a Git repository, which contains:
41
42 @itemize
43 @item
44 all of the source files needed to build LilyPond, and
45
46 @item
47 a record of the entire history of every change made to every file
48 since the program was born.
49 @end itemize
50
51 The @q{official} LilyPond Git repository is hosted by the GNU
52 Savannah software forge at @uref{http://git.sv.gnu.org}.
53 Although, since Git uses a @emph{distributed} model, technically
54 there is no central repository.  Instead, each contributor keeps a
55 complete copy of the entire repository (about 116M).
56
57 Changes made within one contributor's copy of the repository can
58 be shared with other contributors using @emph{patches}.  A patch
59 is a simple text file generated by the @command{git} program that
60 indicates what changes have been made (using a special format).
61 If a contributor's patch is approved for inclusion (usually
62 through the mailing list), someone on the current development team
63 will @emph{push} the patch to the official repository.
64
65 The Savannah software forge provides two separate interfaces for
66 viewing the LilyPond Git repository online: @emph{cgit} and
67 @emph{gitweb}.  The cgit interface should work faster than gitweb
68 in most situations, but only gitweb allows you to search through
69 the source code using @command{grep}, which you may find useful.
70 The cgit interface is at
71 @uref{http://git.sv.gnu.org/cgit/lilypond.git/} and the gitweb
72 interface is at
73 @uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git}.
74
75 Git is a complex and powerful tool, but tends to be confusing at
76 first, particularly for users not familiar with the command line
77 and/or version control systems.  Contributors who don't want to
78 deal with Git directly are encouraged to use the
79 @command{lily-git} graphical user interface instead.
80
81 @emph{Compiling} (@q{building}) LilyPond allows developers to see
82 how changes to the source code affect the program itself.
83 Compiling is also needed to package the program for specific
84 operating systems or distributions.  LilyPond can be compiled from
85 a local Git repository (for developers), or from a downloaded
86 tarball (for packagers).  Compiling LilyPond is a rather involved
87 process, and most contributor tasks do not require it.
88
89 Contributors can contact the developers through the
90 @q{lilypond-devel} mailing list.  The mailing list archive is
91 located at
92 @uref{http://lists.gnu.org/archive/html/lilypond-devel/}.  If you
93 have a question for the developers, search the archives first to
94 see if the issue has already been discussed.  Otherwise, send an
95 email to @email{lilypond-devel@@gnu.org}.  You can subscribe to
96 the developers' mailing list here:
97 @uref{http://lists.gnu.org/mailman/listinfo/lilypond-devel}.
98
99
100 @node Mentors
101 @section Mentors
102
103 We have a semi-formal system of mentorship, similar to the
104 medieval @qq{journeyman/master} training system.  New contributors
105 will have a dedicated mentor to help them @qq{learn the ropes}.
106
107 @warning{This is subject to the availability of mentors; certain
108 jobs have more potential mentors than others.}
109
110 @subheading Contributor responsibilities
111
112 @enumerate
113
114 @item
115 Ask your mentor which sections of the CG you should read.
116
117 @item
118 If you get stuck for longer than 10 minutes, ask your mentor.
119 They might not be able to help you with all problems, but we find
120 that new contributors often get stuck with something that could be
121 solved/explained with 2 or 3 sentences from a mentor.
122
123 @item
124 Send patches to your mentor for initial comments.
125
126 @item
127 Inform your mentor if you're going to be away for a month, or if
128 you leave entirely.  Contributing to lilypond isn't for everybody;
129 just let your mentor know so that we can reassign that work to
130 somebody else.
131
132 @item
133 Inform your mentor if you're willing to do more work -- we always
134 have way more work than we have helpers available.  We try to
135 avoid overwhelming new contributors, so you'll be given less work
136 than we think you can handle.
137
138 @end enumerate
139
140
141 @subheading Mentor responsibilities
142
143 @enumerate
144
145 @item
146 Respond to questions from your contributor(s) promptly, even if
147 the reponse is just @qq{sorry, I don't know} or @qq{sorry, I'm
148 very busy for the next 3 days; I'll get back to you then}.  Make
149 sure they feel valued.
150
151 @item
152 Inform your contributor(s) about the expected turnaround for your
153 emails -- do you work on lilypond every day, or every weekend, or
154 what?  Also, if you'll be unavailable for longer than usual (say,
155 if you normally reply within 24 hours, but you'll be at a
156 conference for a week), let your contributors know.  Again, make
157 sure thay feel valued, and that your silence (if they ask a
158 question during that period) isn't their fault.
159
160 @item
161 Inform your contributor(s) if they need to do anything unusual for
162 the builds, such as doing a @qq{make clean / doc-clean} or
163 switching git branches (not expected, but just in case...)
164
165 @item
166 You don't need to be able to completely approve patches.  Make
167 sure the patch meets whatever you know of the guidelines (for doc
168 style, code indentation, whatever), and then send it on to the
169 frog list or -devel for more comments.  If you feel confident
170 about the patch, you can push it directly (this is mainly intended
171 for docs and translations; code patches should almost always go to
172 -devel before being pushed).
173
174 @item
175 Keep track of patches from your contributor.  If you've sent a
176 patch to -devel, it's your responsibility to pester people to get
177 comments for it, or at very least add it to the google tracker.
178
179 @end enumerate
180
181
182