1 @c -*- coding: utf-8; mode: texinfo; -*-
7 * Minor release checklist::
8 * Major release checklist::
9 * Release extra notes::
10 * Administrative policies::
14 @node Development phases
15 @section Development phases
17 There are 2.5 states of development for LilyPond.
21 @item @strong{Stable phase}:
22 Starting from the release of a new major version @code{2.x.0}, the
23 following patches @strong{MAY NOT} be merged with master:
26 @item Any change to the input syntax. If a file compiled with a
27 previous @code{2.x} version, then it must compile in the new
30 @item New features with new syntax @emph{may be committed},
31 although once committed that syntax cannot change during the
32 remainder of the stable phase.
34 @item Any change to the build dependencies (including programming
35 libraries, documentation process programs, or python modules used
36 in the buildscripts). If a contributor could compile a previous
37 lilypond @code{2.x}, then he must be able to compile the new
42 @item @strong{Development phase}:
43 Any commits are fine. Readers may be familiar with the term
44 @qq{merge window} from following Linux kernel news.
47 @item @strong{Release prep phase}:
48 TODO: I don't like that name.
50 A new git branch @code{stable/2.x} is created, and a major release
55 @item @code{stable/2.x branch}:
56 Only translation updates and important bugfixes are allows.
59 Normal @qq{stable phase} development occurs.
63 If we discover the need to change the syntax or build system, we
64 will apply it and re-start the release prep phase.
68 This marks a radical change from previous practice in LilyPond.
69 However, this setup is not intended to slow development -- as a
70 rule of thumb, the next development phase will start within a
71 month of somebody wanting to commit something which is not
72 permitted during the stable phase.
76 @node Minor release checklist
77 @section Minor release checklist
79 A @qq{minor release} means an update of @code{y} in @code{2.x.y}.
81 @subheading Pre-release
86 Switch to the release branch, get changes, prep release
90 git checkout release/unstable
92 vi Documentation/web/news-front.itexi Documentation/web/news.itexi
93 git commit -m "Release: update news." Documentation/web/
97 @item (optional) Check that lilypond builds from scratch in an
101 If you do not have the previous release test-output tarball, download
102 it and put it in @code{regtests/}
104 @item Build release on GUB by running:
107 make LILYPOND_BRANCH=release/unstable lilypond
114 make LILYPOND_BRANCH=stable/2.12 lilypond
117 @item Check the regtest comparison in @file{uploads/webtest/} for
118 any unintentional breakage.
120 @item If any work was done on GUB since the last release, upload
121 binaries to a temporary location, ask for feedback, and wait a day
122 or two in case there's any major problems.
127 @subheading Actual release
131 @item If you're not right user on the webserver, remove the "t"
132 from the rsync command in @file{test-lily/rsync-lily-doc.py} and
133 @file{test-lily/rsync-test.py}
135 @code{graham} owns v2.13; @code{han-wen} owns v2.12.
137 @item Upload GUB by running:
140 make lilypond-upload LILYPOND_BRANCH=master LILYPOND_REPO_URL=git://git.sv.gnu.org/lilypond.git
147 make lilypond-upload LILYPOND_BRANCH=stable/2.12 LILYPOND_REPO_URL=git://git.sv.gnu.org/lilypond.git
153 @subheading Post release
157 @item Switch back to master and get the updated news:
161 git merge release/unstable
164 @item Update @file{VERSION} in lilypond git:
167 VERSION = what you just did +0.0.1
168 DEVEL_VERSION = what you just did (i.e. is now online)
169 STABLE_VERSION = what's online
174 @item (for now) do a @code{make doc} and manually upload:
177 ### upload-lily-web-media.sh
179 BUILD_DIR=$HOME/src/build-lilypond
181 PICS=$BUILD_DIR/Documentation/pictures/out-www/
182 EXAMPLES=$BUILD_DIR/Documentation/web/ly-examples/out-www/
185 rsync -a $PICS graham@@lilypond.org:media/pictures
186 rsync -a $EXAMPLES graham@@lilypond.org:media/ly-examples
189 @item Wait a few hours for the website to update.
191 @item Email release notice to @code{info-lilypond}
197 @node Major release checklist
198 @section Major release checklist
200 A @qq{major release} means an update of @code{x} in @code{2.x.0}.
204 * write release notes. note: stringent size requirements for
205 various websites, so be brief.
207 * write preface section for manual.
209 * submit pots for translation : send url of tarball to
210 translation@@iro.umontreal.ca, mentioning lilypond-VERSION.pot
214 * Check all 2ly scripts.
216 * Run convert-ly on all files, bump parser minimum version.
218 * update links to distros providing lilypond packages? link in
219 Documentation/web/download.itexi . This has nothing to do with
220 the release, but I'm dumping this here so I'll find it when I
221 reorganize this list later. -gp
223 * Make FTP directories on lilypond.org
226 - Make new table in download.html
228 - add to documentation list
230 - revise examples tour.html/howto.html
232 - add to front-page quick links
234 - change all links to the stable documentation
236 - doc auto redirects to v2.LATEST-STABLE
238 - add these two lines to http://www.lilypond.org/robots.txt:
241 Disallow: /doc/v2.PREVIOUS-STABLE/
242 Disallow: /doc/v2.CURRENT-DEVELOPMENT/
248 comp.os.linux.announce
255 info-lilypond@@gnu.org
257 linux-audio-announce@@lists.linuxaudio.org
258 linux-audio-user@@lists.linuxaudio.org
259 linux-audio-dev@@lists.linuxaudio.org
261 tex-music@@icking-music-archive.org
264 abcusers@@blackmill.net
266 rosegarden-user@@lists.sourceforge.net
268 noteedit-user@@berlios.de
270 gmane.comp.audio.fomus.devel
271 gmane.linux.audio.users
272 gmane.linux.audio.announce
273 gmane.comp.audio.rosegarden.devel
280 http://www.apple.com/downloads
281 harmony-central.com (news@@harmony-central.com)
282 versiontracker.com [auto]
285 https://savannah.gnu.org/news/submit.php?group_id=1673 @c => planet.gnu.org
288 @node Release extra notes
289 @section Release extra notes
291 @subsubheading Regenerating regression tests
293 Regenerating regtests (if the lilypond-book naming has changed):
298 git checkout release/lilypond-X.Y.Z-A
301 take lilypond-book and any related makefile updates from the
305 - configure; make; make test
308 tar -cjf lilypond-X.Y.Z-A.test-output.tar.bz2 input/regression/out-test/
311 mv lilypond-X.Y.Z-A.test-output.tar.bz2 ../gub/regtests/
322 @subsubheading stable/2.12
324 If releasing stable/2.12, then:
329 apply doc patch: patches/rsync-lily.patch (or something like
333 change infodir in gub/specs/lilypond-doc.py from "lilypond.info"
334 to "lilypond-web.info"
337 @subsubheading Updating a release (changing a in x.y.z-a)
339 Really tentative instructions, almost certainly can be done
345 change the VERSION back to release you want. push change.
346 (hopefully you'll have forgotten to update it when you made your
350 make sure that there aren't any lilypond files floating around in
351 target/ (like usr/bin/lilypond).
354 build the specific package(s) you want, i.e.
357 bin/gub mingw::lilypond-installer
358 make LILYPOND_BRANCH=stable/2.12 -f lilypond.make doc
359 bin/gub --platform=darwin-x86 'git://git.sv.gnu.org/lilypond-doc.git?branch=stable/2.12'
364 build everything with the normal "make lilypond", then (maybe)
365 manually delete stuff you don't want to upload.
368 manually upload them. good luck figuring out the rsync
369 command(s). Hints are in test-lily/
373 run the normal lilypond-upload command, and (maybe) manually
374 delete stuff you didn't want to upload from the server.
379 @node Administrative policies
380 @section Administrative policies
382 Not really release-specific notes, but I don't see enough material
383 here to make it a separate chapter, and the release person will
384 probably be the one taking care of this anyway.
386 @subsubheading Language-specific mailing lists
388 A translator can ask for an official lilypond-xy mailing list once
389 they've finished all @qq{priority 1} translation items.
391 @subsubheading Performing yearly copyright update (@qq{grand-replace})
393 At the start of each year, copyright notices for all source files
394 should be refreshed by running the following command from the top of
401 Internally, this invokes the script @file{scripts/build/grand-replace.py},
402 which performs a regular expression substitution for old-year -> new-year
403 wherever it finds a valid copyright notice.
405 Note that snapshots of third party files such as @file{texinfo.tex} should
406 not be included in the automatic update; @file{grand-replace.py} ignores these
407 files if they are listed in the variable @code{copied_files}.