update to version 1.9.0
[parrot.git] / docs / project / release_manager_guide.pod
blob56d8ab36c746da614f5a5d9abd0c9fd33fc2b05c
1 # Copyright (C) 2007-2009, Parrot Foundation.
2 # $Id$
4 =head1 Release Instructions
6 To prepare a release:
8 =over 4
10 =item 0.
12 As soon as you become the release manager: review the goals for the release on
13 the Parrot roadmap (L<https://trac.parrot.org/parrot/roadmap>) and
14 announce the tasks to the Parrot mailing list.  Make sure everyone knows what
15 they've committed to accomplish in time for the release.
17 Right after the release preceeding your release, it is a good idea to start
18 tracking parrot news in NEWS. A good resource are the reports
19 in the weekly #parrotsketch IRC-meeting. A reliable log of these meetings
20 is available in L<http://irclog.perlgeek.de/parrotsketch/>.
22 A couple of weeks in advance: Ask people to run C<make fulltest> and
23 report (and hopefully fix!) any problems they find. Check in with
24 language project leads for release blockers, to allow time to fix them.
25 Also ask people to review the tickets targeted for the upcoming release
26 L<https://trac.parrot.org/parrot/roadmap>.
28 Make sure your ssh key have been added to the FTP server ftp-osl.osuosl.org.
29 Without the key you won't be able to ship the release.
31 Set up your account on L<http://www.parrot.org/> and ask an previous release
32 manager to provide you with editor privileges if you don't already have them.
33 Any previous release manager should be able to help.
35 A couple of days in advance: announce the new release to
36 parrot-dev@lists.parrot.org and to the IRC channel #parrot. Ask whether
37 there are any showstopping bugs. Check in again with the language
38 project leads. It's also good to ask for updates to F<NEWS>, F<CREDITS>,
39 F<PLATFORMS>, F<RESPONSIBLE_PARTIES>, F<DEPRECATED.pod> and
40 L<https://trac.parrot.org/parrot/wiki/Languages>.
42 On the Saturday before a release you should notify other developers to stop
43 committing non-release related code to trunk.  This will help avoid
44 complications. They are of course free to commit to branches as much as
45 they like. You might also set the topic in #parrot, announcing the 
46 time when you plan on starting the release procedure. This will help
47 the committers with timing their last minute commits.
49 You might also select a name (and optionally a quote) for your release.
50 For example, you could select a name from
51 L<http://en.wikipedia.org/wiki/List_of_parrots>.
53 =item 1.
55 The day of the release has come.
56 Make sure you're up to date:
58  $ svn update
60 =item 2.
62 Update files with version-specific information:
64 =over 4
66 =item a
68 Increment the version number in the following files:
69 F<VERSION>, F<MANIFEST.generated>, F<META.yml>, F<README>.
71 Also update the version number, date, and your name in the
72 the file: F<docs/parrothist.pod>.
74 Update this file, that is F<release_manager_guide.pod>,
75 to remove the pending release you're in the middle of.
77 =item b
79 Update F<ChangeLog>, F<NEWS> with the new version number and any other
80 changes that have occurred since the last release: Hopefully these files
81 are being updated as committers work. If not, it's probably a good idea
82 to gather the updates weekly rather than waiting until the day of the
83 monthly release.
85 =item c
87 Update release-related information in F<tools/util/release.json>. This will be
88 used later when making release announcements.  There are a few essential
89 fields that must be updated at each release:
91 =over 4
93 =item C<release.*>
95 The date of the next release is in L<Appendix 1|"Appendix 1 - Upcoming releases">.
97 =item C<bugday.date>
99 Enter the date of the Saturday before the next release.
101 =item C<wiki.bugday>
103 Update the date part of the link to the wiki page for the next bugday.
105 =item C<ftp.path>
107 The URL of the FTP directory where the Parrot tarball can be found.
109 =back
111 =item d
113 Make sure F<RESPONSIBLE_PARTIES> is still accurate.
115 =item e
117 Give yourself credit for the release in F<CREDITS>.
119 =item f
121 Configure parrot and run C<make distro_tests>, and either fix
122 what those tests complain about, or fix them so they don't complain.
124 =item g
126 If this is a developer release, or there have been no new entries to the
127 F<PBC_COMPAT> file, skip this step.
129 If this is a supported release, and new entries to F<PBC_COMPAT> have been
130 added since the last supported release, make a new entry with a new major
131 version number for this release at the top of the list.
133   3.0     2007.10.17      coke    released 0.4.17
135 Delete all minor version numbers since the last major bytecode version number,
136 as these are only used in development and not relevant to the bytecode support
137 policy. (Those changes are all included within the major version number
138 increase for the supported release.)
140 Once you've updated PBC_COMPAT, run C<tools/dev/mk_native_pbc> to update the
141 pbc files used in the native pbc tests.
143 =item h
145 Make sure everything works:
147  $ make realclean
148  $ perl Configure.pl --test ...
149  $ make world docs html 2>&1 | tee make_world_docs_html.log
150  $ make fulltest        2>&1 | tee make_fulltest.log
152 Note that running "make fulltest" takes a while and that separate
153 harnesses are being run.
155 =back
157 =item 3.
159 When all is well, then commit your changes:
161  svn diff | more
162  svn commit
164 Write down the revision number from this commit. You will need it later in
165 step 7.
167 =item 4.
169 Prepare the release tarball.
171  $ make release VERSION=a.b.c
173 where a.b.c is the version number. This will create the tarball named
174 F<parrot-a.b.c.tar.gz>. This will automatically avoid including C<DEVELOPING>
175 in the release tarball.
177 =item 5.
179 Untar F<parrot-a.b.c.tar.gz> into another area.
181 =item 6.
183 Make sure everything works:
185  $ perl Configure.pl
186  $ make world docs html 2>&1 | tee make_world_docs_html.log
187  $ make fulltest        2>&1 | tee make_fulltest.log
189 Verify that the version is correct and doesn't contain the suffix C<devel>:
191  $ ./parrot -V
193 =item 7.
195 Tag the release as "RELEASE_a_b_c", where a.b.c is the version number.
196 Specify the revision number generated in step 3, above.
198  $ export SVNPARROT=https://svn.parrot.org/parrot
199  $ svn copy -r <REV> -m "tagged release a.b.c" \
200    $SVNPARROT/trunk $SVNPARROT/tags/RELEASE_a_b_c
202 =item 8.
204 SSH to ftp-osl.osuosl.org. (If you don't have the necessary login information,
205 get it from one of the previous release managers.)
207  $ ssh -l <USERNAME> ftp-osl.osuosl.org
209 If the release is a monthly development release, create a new directory under
210 F<~/ftp/releases/devel>.
212  $ mkdir ~/ftp/releases/devel/a.b.c
214 If the release is in the stable series (L<Appendix 1 - Upcoming releases>)
215 create the new directory in F<~/ftp/releases/stable> instead.
217  $ mkdir ~/ftp/releases/stable/a.b.c
219 Copy the tarball from your machine into the new directory.
221  $ scp parrot-a.b.c.tar.gz <USERNAME>@ftp-osl.osuosl.org:~/ftp/releases/devel/a.b.c/.
223 (Or using C<wget> or whatever tool you prefer.)
225 When you're finished making changes, run the trigger script to push the changes
226 out to the FTP mirrors.
228   ~/trigger-parrot
230 Check your changes at F<ftp://ftp.parrot.org/pub/parrot/releases>. It should
231 only take a few minutes for the mirrors to sync.
233 =item 9.
235 Compose the release announcement.  Use F<tools/util/crow.pir> to make
236 this part easier.  You can specify the format of your announcements like so:
238   $ ./parrot tools/util/crow.pir --type=text
239   $ ./parrot tools/util/crow.pir --type=html
241 Take the screen output and paste it into the application you need.  HTML
242 works well for use Perl and PerlMonks, and text for the rest.  It is not a
243 bad idea to add a "highlights" section to draw attention to major new
244 features, just be sure to say the same thing in both text and HTML versions.
246 =item 10.
248 Update the website. You will need an account with editor rights
249 on L<http://www.parrot.org>.
251 =over 4
253 =item a
255 Add a new page for the release announcement with "Create content" -> "Story".
256 There's some additional stuff needed at the top of the page; use one of the
257 old announcements as a guide.
259 The "<!--break-->" line marks the end of the text that will appear on the
260 front page.
262 =item b
264 For the "News" category, select both "Releases" and "News".
266 Add tags to the page for significant changes in this release (e.g. "rakudo" for
267 significant Rakudo language updates, or "gc" for significant garbage collection
268 subsystem updates).
270 =item c
272 Under "URL path settings" uncheck "Automatic alias" and set the path to
273 news/[year]/Parrot-[release number].
275 =item d
277 Under "Publishing options" make sure "Published" and "Promoted to front page"
278 are checked.
280 =item e
282 Under "Administer" -> "Site building" -> "URL Redirects", change the URL for
283 "release/current" to the FTP directory for the new release (for example,
284 F<ftp://ftp.parrot.org/pub/parrot/releases/devel/0.8.1>). Also update
285 the URL for "release/developer" or "release/supported" depending on
286 which type of release this is.
288 =item f
290 Update docs.parrot.org. Run "make html" in a release copy of parrot, and save
291 the resources/ and html/ directories created in docs/.
292 ssh into the parrotvm, and in the
293 webroot for docs.parrot.org, expand these into a release directory (e.g.
294 1.4.0). in <webroot>/parrot, there are symbolic links for latest, stable,
295 and devel. Update the latest symlink to point to your new directory.
296 If this is a stable release, also update the stable symlink. Do not delete
297 any old copies of the docs.
299 =back
301 Preview the new page, and submit it.
303 (The old release announcement may be edited to uncheck "Promoted to front page"
304 to keep the main page fresh.)
306 =item 11.
308 Publicize the release by publishing the announcement through the
309 following channels (and any others you can think of):
311 =over 4
313 =item a
315 Send a text email to parrot-dev, parrot-users, perl6-language, perl6-announce,
316 perl5-porters, etc.  You should also include LWN.net in this mailing; email to
317 C<lwn> at that domain.
319 =item b
321 Submit the use Perl announcement story to use Perl, Perl Monks, Slashdot,
322 Newsforge, etc.  Don't forget to set a Reply-To: or Followup-To: header, if
323 your mail client lets you.
325 =item c
327 Modify the topic on #parrot, e.g.:
329  /topic #parrot Parrot 0.4.8 Released | http://parrot.org/
331 =item d
333 Update the wiki frontpage at L<http://trac.parrot.org/parrot/>.
335 =item e
337 Update the Wikipedia entry at L<http://en.wikipedia.org/wiki/Parrot_virtual_machine>.
339 =item f
341 Update the C2 wiki entry at L<http://c2.com/cgi/wiki?ParrotCode>.
343 =back
345 =item 12.
347 Review the milestone for the current release in Trac at
348 L<https://trac.parrot.org/parrot/roadmap>. Close any completed
349 release-related tickets. Edit the milestone to mark it as "Completed".
350 Marking a milestone as completed will migrate all open tickets to a
351 selected milestone (generally the next milestone). Non-critical tickets
352 can have their milestone unset.
354 =item 13.
356 Add the version to Trac so new bug reports can be filed against your
357 buggy code. L<https://trac.parrot.org/parrot/admin/ticket/versions>.
359 Make the latest released version the default version for new reports.
361 Remove any sufficiently old versions listed there.
363 =item 14.
365 You're done! Help yourself to a beer, cola, or other celebratory drink.
367 =back
369 =head2 ABOUT THIS DOCUMENT
371 This document was written after a couple of subtly incorrectly assembled
372 releases--usually when someone forgot to delete F<DEVELOPING> (which is now
373 automated!), but at least once where the F<MANIFEST> check failed. The intent
374 of this file is to document what must be done to release so that such mistakes
375 won't happen again.
377 =head1 SEE ALSO
379 F<README>, F<RESPONSIBLE_PARTIES>.
381 =head1 Appendix 1 - Upcoming releases
383 To make a monthly release schedule possible, we spread the burden of
384 releases across multiple release managers. Releases are scheduled for
385 the 3rd Tuesday of each month.
387 The starred releases are Parrot's twice-yearly supported releases, see
388 F<docs/project/support_policy.pod>.
390 The calendar of releases is available at the comp.lang.parrot google calendar,
391 visible at
392 L<http://www.google.com/calendar/render?cid=ldhctdamsgfg5a1cord52po9h8@group.calendar.google.com>.
394  - Jan 19, 2010      - 2.0* - chromatic
395  - Feb 16, 2010      - 2.1  - darbelo
396  - Mar 16, 2010      - 2.2  - cotto
398 =cut
400 __END__
401 Local Variables:
402   fill-column:78
403 End: