[t] Refactor some namespace pmc tests to use throws_like
[parrot.git] / docs / project / release_manager_guide.pod
blob0f2bb52ff9cc07240be86286a4e936be5e5e6d9b
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/wiki/ParrotRoadmap>) 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 A couple of weeks in advance: Ask people to run C<make fulltest> and
18 report (and hopefully fix!) any problems they find. Check in with
19 language project leads for release blockers, to allow time to fix them.
20 Also ask people to review the tickets targeted for the upcoming release
21 L<https://trac.parrot.org/parrot/roadmap>. Make sure your ssh keys have
22 been added to the FTP server, so you'll be able to ship the release (any
23 previous release manager can help).
25 A couple of days in advance: announce the new release to
26 parrot-dev@lists.parrot.org and to the IRC channel #parrot. Ask whether
27 there are any showstopping bugs. Check in again with the language
28 project leads. It's also good to ask for updates to F<NEWS>, F<CREDITS>,
29 F<PLATFORMS>, F<RESPONSIBLE_PARTIES>, F<DEPRECATED.pod> and
30 L<https://trac.parrot.org/parrot/wiki/Languages>.
32 You might also select a name (and optionally a quote) for your release.
33 For example, you could select a name from
34 L<http://en.wikipedia.org/wiki/List_of_parrots>.
36 Set up your account on L<http://www.parrot.org/> and ask an existing release
37 manager to provide you with admin privileges if you don't already have them.
39 =item 1.
41 Make sure you're up to date:
43  $ svn update
45 You may want to ask the developer base to stop committing big changes;
46 it will avoid complications.
48 =item 2.
50 Update files with version-specific information:
52 =over 4
54 =item a
56 Increment the version number in the following files:
57 F<VERSION>, F<MANIFEST.generated>, F<META.yml>, F<README>.
59 Also update the version number, date, and your name in the
60 the file: F<docs/parrothist.pod>.
62 Update this file, that is F<release_manager_guide.pod>,
63 to remove the pending release you're in the middle of.
65 =item b
67 Update F<ChangeLog>, F<NEWS> with the new version number and any other
68 changes that have occurred since the last release: Hopefully these files
69 are being updated as committers work. If not, it's probably a good idea
70 to gather the updates weekly rather than waiting until the day of the
71 monthly release.
73 =item c
75 Update release-related information in F<tools/util/release.json>. This will be
76 used later when making release announcements.  There are a few essential
77 fields that must be updated at each release:
79 =over 4
81 =item C<release.*>
83 The date of the next release is in L<Appendix 1|"Appendix 1 - Upcoming releases">.
85 =item C<bugday.date>
87 Enter the date of the Saturday before the next release.
89 =item C<wiki.bugday>
91 Update the date part of the link to the wiki page for the next bugday.
93 =item C<ftp.path>
95 The URL of the FTP directory where the Parrot tarball can be found.
97 =back
99 =item d
101 Make sure F<RESPONSIBLE_PARTIES> is still accurate.
103 =item e
105 Give yourself credit for the release in F<CREDITS>.
107 =item f
109 Configure parrot and run C<make distro_tests>, and either fix
110 what those tests complain about, or fix them so they don't complain.
112 =item g
114 If this is a developer release, or there have been no new entries to the
115 F<PBC_COMPAT> file, skip this step.
117 If this is a supported release, and new entries to F<PBC_COMPAT> have been
118 added since the last supported release, make a new entry with a new major
119 version number for this release at the top of the list.
121   3.0     2007.10.17      coke    released 0.4.17
123 Delete all minor version numbers since the last major bytecode version number,
124 as these are only used in development and not relevant to the bytecode support
125 policy. (Those changes are all included within the major version number
126 increase for the supported release.)
128 Once you've updated PBC_COMPAT, run C<tools/dev/mk_native_pbc> to update the
129 pbc files used in the native pbc tests.
131 =item h
133 Make sure everything works:
135  $ make realclean
136  $ perl Configure.pl --test ...
137  $ make world docs html 2>&1 | tee make_world_docs_html.log
138  $ make fulltest        2>&1 | tee make_fulltest.log
140 Note that running "make fulltest" takes a while and that separate
141 harnesses are being run.
143 =back
145 =item 3.
147 When all is well, then commit your changes:
149  svn diff | more
150  svn commit
152 Write down the revision number from this commit. You will need it later in
153 step 7.
155 =item 4.
157 Prepare the release tarball.
159  $ make release VERSION=a.b.c
161 where a.b.c is the version number. This will create the tarball named
162 F<parrot-a.b.c.tar.gz>. This will automatically avoid including C<DEVELOPING>
163 in the release tarball.
165 =item 5.
167 Untar F<parrot-a.b.c.tar.gz> into another area.
169 =item 6.
171 Make sure everything works:
173  $ perl Configure.pl
174  $ make world docs html 2>&1 | tee make_world_docs_html.log
175  $ make fulltest        2>&1 | tee make_fulltest.log
177 Verify that the version is correct and doesn't contain the suffix C<devel>:
179  $ ./parrot -V
181 =item 7.
183 Tag the release as "RELEASE_a_b_c", where a.b.c is the version number.
184 Specify the revision number generated in step 3, above.
186  $ export SVNPARROT=https://svn.parrot.org/parrot
187  $ svn copy -r <REV> -m "tagged release a.b.c" \
188    $SVNPARROT/trunk $SVNPARROT/tags/RELEASE_a_b_c
190 =item 8.
192 SSH to ftp-osl.osuosl.org. (If you don't have the necessary login information,
193 get it from one of the previous release managers.)
195  $ ssh -l <USERNAME> ftp-osl.osuosl.org
197 If the release is a monthly development release, create a new directory under
198 F<~/ftp/releases/devel>.
200  $ mkdir ~/ftp/releases/devel/a.b.c
202 If the release is in the stable series (L<Appendix 1 - Upcoming releases>)
203 create the new directory in F<~/ftp/releases/stable> instead.
205  $ mkdir ~/ftp/releases/stable/a.b.c
207 Copy the tarball from your machine into the new directory.
209  $ scp parrot-a.b.c.tar.gz <USERNAME>@ftp-osl.osuosl.org:~/ftp/releases/devel/a.b.c/.
211 (Or using C<wget> or whatever tool you prefer.)
213 When you're finished making changes, run the trigger script to push the changes
214 out to the FTP mirrors.
216   ~/trigger-parrot
218 Check your changes at F<ftp://ftp.parrot.org/pub/parrot/releases>. It should
219 only take a few minutes for the mirrors to sync.
221 =item 9.
223 Compose the release announcement.  Use F<tools/util/crow.pir> to make
224 this part easier.  You can specify the format of your announcements like so:
226   $ ./parrot tools/util/crow.pir --type=text
227   $ ./parrot tools/util/crow.pir --type=html
229 Take the screen output and paste it into the application you need.  HTML
230 works well for use Perl and PerlMonks, and text for the rest.  It is not a
231 bad idea to add a "highlights" section to draw attention to major new
232 features, just be sure to say the same thing in both text and HTML versions.
234 =item 10.
236 Update the website. You will need an account with administrative rights
237 on L<http://www.parrot.org>.
239 =over 4
241 =item a
243 Add a new page for the release announcement with "Create content" -> "Story".
244 There's some additional stuff needed at the top of the page; use one of the
245 old announcements as a guide.
247 The "<!--break-->" line marks the end of the text that will appear on the
248 front page.
250 =item b
252 For the "News" category, select both "Releases" and "News".
254 Add tags to the page for significant changes in this release (e.g. "rakudo" for
255 significant Rakudo language updates, or "gc" for significant garbage collection
256 subsystem updates).
258 =item c
260 Under "URL path settings" uncheck "Automatic alias" and set the path to
261 news/[year]/Parrot-[release number].
263 =item d
265 Under "Publishing options" make sure "Published" and "Promoted to front page"
266 are checked.
268 =item e
270 Under "Administer" -> "Site building" -> "URL Redirects", change the URL for
271 "release/current" to the FTP directory for the new release (for example,
272 F<ftp://ftp.parrot.org/pub/parrot/releases/devel/0.8.1>). Also update
273 the URL for "release/developer" or "release/supported" depending on
274 which type of release this is.
276 =back
278 Preview the new page, and submit it.
280 (The old release announcement may be edited to uncheck "Promoted to front page"
281 to keep the main page fresh.)
283 =item 11.
285 Publicize the release by publishing the announcement through the
286 following channels (and any others you can think of):
288 =over 4
290 =item a
292 Send a text email to parrot-dev, perl6-language, perl6-announce,
293 perl5-porters, etc.  You should also include LWN.net in this mailing; email to
294 C<lwn> at that domain.
296 =item b
298 Submit the use Perl announcement story to use Perl, Perl Monks, Slashdot,
299 Newsforge, etc.  Don't forget to set a Reply-To: or Followup-To: header, if
300 your mail client lets you.
302 =item c
304 Modify the topic on #parrot, e.g.:
306  /topic #parrot Parrot 0.4.8 Released | http://parrot.org/
308 =item d
310 Update the wiki frontpage at L<http://trac.parrot.org/parrot/>.
312 =item e
314 Update the Wikipedia entry at L<http://en.wikipedia.org/wiki/Parrot_virtual_machine>.
316 =item f
318 Update the C2 wiki entry at L<http://c2.com/cgi/wiki?ParrotCode>.
320 =back
322 =item 12.
324 Review the milestone for the current release in Trac at
325 L<https://trac.parrot.org/parrot/roadmap>. Close any completed
326 release-related tickets. Edit the milestone to mark it as "Completed".
327 Marking a milestone as completed will migrate all open tickets to a
328 selected milestone (generally the next milestone). Non-critical tickets
329 can have their milestone unset.
331 =item 13.
333 Add the version to Trac so new bug reports can be filed against your
334 buggy code. L<https://trac.parrot.org/parrot/admin/ticket/versions>.
336 Make the latest released version the default version for new reports.
338 Remove any sufficiently old versions listed there.
340 =item 14.
342 You're done! Help yourself to a beer, cola, or other celebratory drink.
344 =back
346 =head2 ABOUT THIS DOCUMENT
348 This document was written after a couple of subtly incorrectly assembled
349 releases--usually when someone forgot to delete F<DEVELOPING> (which is now
350 automated!), but at least once where the F<MANIFEST> check failed. The intent
351 of this file is to document what must be done to release so that such mistakes
352 won't happen again.
354 =head1 SEE ALSO
356 F<README>, F<RESPONSIBLE_PARTIES>.
358 =head1 Appendix 1 - Upcoming releases
360 To make a monthly release schedule possible, we spread the burden of
361 releases across multiple release managers. Releases are scheduled for
362 the 3rd Tuesday of each month.
364 The starred releases are Parrot's twice-yearly supported releases, see
365 F<docs/project/support_policy.pod>.
367  - Sept 15, 2009     - 1.6  - particle
368  - Oct 20, 2009      - 1.7  - dukeleto
369  - Nov 17, 2009      - 1.8  - bernhard
370  - Dec 15, 2009      - 1.9  - gerd
371  - Jan 19, 2010      - 2.0* -
373 =cut
375 __END__
376 Local Variables:
377   fill-column:78
378 End: