# $Id: RELEASE_INSTRUCTIONS 17150 2007-02-22 18:47:41Z pmichaud $

To prepare a release:

    0.  Announce to parrot-porters and #parrot at least a couple days in
        advance, asking if there are any showstopping bugs.  You might
        also select a name for your release ( e.g., perhaps select a
        name from http://en.wikipedia.org/wiki/List_of_parrots ).

    1.  Make sure you're up to date:

          $ svn update

        You may want to ask the developer base to stop committing big
        changes; it will avoid complications.  Or you could create a release
        branch before releasing, rather than after.  Then you could fold the
        release-oriented changes into the trunk once the release is done.
        {{ TODO: explain how to do this }}

    2.  Update files with version-specific information:

        a.  Increment the version number in:
            - VERSION
            - parrot.spec,
            - MANIFEST.generated
            - META.yml

        b.  Change the information in DEVELOPING to reflect this release's
            version number and date.

        c.  Update README.

        d.  Update ChangeLog, NEWS, docs/parrothist.pod, docs/ROADMAP.pod,
            and docs/BROKEN.pod.

        e.  Make sure RESPONSIBLE_PARTIES is still accurate.

        f.  Run "perl t/harness t/distro/*.t", and either fix what those tests
            complain about, or fix them so they don't complain.

        g.  Update PBC_COMPAT, perhaps by collapsing intra-release entries
            into a single entry naming the release.

        h.  Run C<perl tools/dev/pbc_header.pl --upd t/native_pbc/*.pbc>
            to update version and fingerprint in the native tests.

        i.  Make sure everything works:

              $ make realclean
              $ perl Configure.pl ...
              $ make -s all world fulltest

    3.  svn commit

    4.  Make the release tarball:

          $ make release VERSION=a.b.c

        ... where a.b.c is the version number.  This will create the tarball,
        named parrot-a.b.c.tar.gz.

    5.  Untar parrot-a.b.c.tar.gz into another area

    6.  Make sure everything works:

          $ perl Configure.pl
          $ make world
          $ make fulltest

    7.  Tag the release as "RELEASE_a_b_c", where a.b.c is the version
        number.

          $ export SVNPARROT=https://svn.perl.org/parrot
          $ svn copy -m"tagged release a.b.c" \
            $SVNPARROT/trunk $SVNPARROT/tags/RELEASE_a_b_c

        See also below [1]

    8.  Upload to CPAN.

        NOTE: you may get a failure message from the CPAN Indexer about
        the content of META.yml. Don't worry, the tarball still uploaded okay.
        You can fix META.yml after the release.

    9.  Compose and send out the announcements -- parrot-porters,
        perl6-language, perl6-announce, perl5-porters, use Perl, PerlMonks,
        comp.lang.perl.misc, etc. Don't forget to include the next
        scheduled release date.

    9a. Submit the use Perl announcement story to Slashdot, Newsforge, etc.

        Don't forget to set a Reply-To: or Followup-To: header.

    9b. Modify the topic on #parrot.

          /topic #parrot Parrot 0.4.8 Released | Homepage: \
            http://parrotcode.org/ | Bug Tracker: http://rt.perl.org/rt3/ \
            | Wiki: http://rakudo.org/parrot/index.cgi?parrot

    9c. Update the next planned release date on the wiki

    9d. Close any open release-related tickets in RT

    10. You're done!  Help yourself to a beer, cola or other celebratory
        drink.

ABOUT THIS DOCUMENT:

This document was written after a couple of subtly incorrectly assembled
releases--usually when someone forgot to delete DEVELOPING, but at least
once where the MANIFEST check failed.  The intent of this file is to
document what must be done to release so that such mistakes don't happen
again.

--------------

Appendix [1] parrot repository layout as of end of Apr 2005:

$ svn ls $SVNPARROT
branches/
tags/
trunk/

$ svn ls $SVNPARROT/tags
PRE_REL_0_0_8/
RELEASE_0_0_10/
RELEASE_0_0_11/
RELEASE_0_0_13/
RELEASE_0_0_6/
RELEASE_0_0_8/
RELEASE_0_0_9/
RELEASE_0_1_0/
RELEASE_0_1_1/
RELEASE_0_1_2/
REL_0_0_5/
V1/
file_move_031023/
help/
ponie-PRE-P5_592/

--------------
Appendix [2] Planned releases in 2007:

To make a monthly release schedule possible, we're spreading the burden
of releases across multiple release managers. Each release manager takes
one release in a 6 month rotation.  Releases are scheduled for the 3rd
Tuesday of the month.

    - Jan 16th (0.4.8), Jerry Gay (particle)
    - Feb 20th (0.4.9), Patrick Michaud (pmichaud)
    - Mar 20th, Matt Diephouse (mdiep)
    - Apr 17th, Will Coleda (coke)
    - May 15th, chromatic
    - Jun 19th, Allison Randal
    - Jul 17th, Jerry Gay (particle)
    - Aug 21th, Patrick Michaud (pmichaud)
    - Sep 18th, Matt Diephouse (mdiep)
    - Oct 16th, Will Coleda (coke)
    - Nov 20th, chromatic
    - Dec 18th, Allison Randal
