add release_managers_guide.pod
Gabor Szabo [Mon, 22 Jun 2009 12:20:20 +0000 (15:20 +0300)]
Porting/release_managers_guide.pod [new file with mode: 0644]

diff --git a/Porting/release_managers_guide.pod b/Porting/release_managers_guide.pod
new file mode 100644 (file)
index 0000000..7cd583d
--- /dev/null
@@ -0,0 +1,171 @@
+
+=head1 NAME
+
+release_managers_guide - Releasing a new version of perl 5.x
+
+=head1 SYNOPSIS
+
+The release process is primarily executed by the current pumpking.
+
+This documents both helps as a check-list for the pumpking and is
+a base for ideas on how the various tasks could be automated or 
+distributed.
+
+The process has two major parts. In the first part 
+the pumpking needs to determine if the current head revision in Git
+is ready for shipment. The second part is the actual release 
+and packaging process.
+
+=head1 DETAILS
+
+=head2 Is it ready?
+
+In this step we need to make sure that 
+
+=over 4
+
+=item 1
+
+perl passes its own test suite and 
+
+=item 2
+
+CPAN works
+
+
+which comes down to:
+
+    for each module that fails its regression tests on $current
+      did it fail identically on $previous?
+      if yes, "SEP"
+      else work out why it failed (a bisect is useful for this)
+
+    attempt to group failure causes
+
+    for each failure cause
+      is that a regression?
+      if yes, figure out how to fix it
+        (more code? revert the code that broke it)
+      else
+        (presumably) it's relying on something un-or-under-documented
+        should the existing behaviour stay?
+          yes - goto "regression"
+          no - note it in perldelta as a significant bugfix
+          (also, try to inform the module's author)
+
+=back
+
+
+=head2 The Actual release process
+
+The set of tasks that can be "scripted" for Perl 5
+
+=over 4
+
+=item 0
+
+so you think you have a source control in a state that won't break CPAN,
+at least not in "surprising" ways.
+
+=item 1
+
+As there are no regular smokes (yet - please fix?) find out about the state
+of VMS. If it's bad, think again.
+
+=item 2
+
+Re-read the perldelta to try to find any embarrassing typos
+
+=item 3
+
+Run Porting/makemeta
+
+=item 4
+
+[used to be run autodoc.pl, but I eliminated that]
+
+=item 5
+
+[used to be run pod/buildtoc, but I eliminated that]
+
+=item 6
+
+update module corelist, but we need to fix that
+
+[it has been holding perforce revisions for releases, but we can't know
+hashes in advance for git. We need to agree a plan to move to git tags]
+
+=item 7
+
+[update changes, but Dave has eliminated that]
+
+=item 8
+
+update patchlevel.h to remove all local patches
+
+=item 9
+
+make tarball with Porting/makerel
+
+=item 10
+
+copy tarball to some other machine x 2 [or more - IRC is good for this]
+
+=item 11
+
+check that ./Configure -des && make all test works in one place
+
+=item 12
+
+check that ./Configure ... && make all test_harness install works
+
+
+=item 13
+
+bootstrap the CPAN client on the clean install
+
+=item 14
+
+install CPANPLUS
+
+=item 15
+
+bootstrap the CPANPLUS client
+
+=item 16
+
+install an XS module
+
+=item 17
+
+if this is good, commit this.
+sit, and wait.
+
+=item 18
+
+do the smoke tests pass (particularly Win32)
+
+=item 19
+
+if yes, upload it to PAUSE. This is the point of no return
+
+=item 20
+
+mail p5p to announce it, with a quote I prepared earlier
+
+=item 21
+
+wait 24 hours or so
+
+=item 22
+
+post the announcement to use.perl.org
+
+=back
+
+=head1 SOURCE
+
+Based on http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2009-05/msg00608.html
+
+=cut
+