=item stable/*
The branch from which releases are cut. When making a new major release, the
-release manager makes a new C<stable/$version> branch at the current position
-of C<master>. For minor releases, patches will be committed to C<master>, and
-backported (cherry-picked) to the appropriate stable branch as needed. The
-C<stable> branch is only updated by someone from the Cabal during a release.
+release manager makes a new C<stable/X.YY> branch at the current position of
+C<master>. The version used in the stable branch should not include the last
+two digits of the version number.
+
+For minor releases, patches will be committed to C<master>, and
+backported (cherry-picked) to the appropriate stable branch as needed. A
+stable branch is only updated by someone from the Cabal during a release.
=item master
=back
-Larger, more long term branches can also be created in the root namespace (i.e.
-at the same level as master and stable). This is more appropriate if multiple
+Larger, longer term branches can also be created in the root namespace (i.e.
+at the same level as master and stable). This may be appropriate if multiple
people are intending to work on the branch. These branches should not be
-rebased.
+rebased without checking with other developers first.
=head1 STANDARD WORKFLOW
=item Backwards incompatible changes.
-Anything that breaks backwards compatibility must be discussed by the cabal
-and agreed to by a majority of the members.
+Anything that breaks backwards compatibility must be discussed by the
+cabal. Backwards incompatible changes should not be merged to master if there
+are strong objections from any cabal members.
We have a policy for what we see as sane L</BACKWARDS COMPATIBILITY> for
Moose. If your changes break back-compat, you must be ready to discuss and
git checkout master
# minor releases
- git checkout stable
+ git checkout stable/X.YY
# edit for final version bumping, changelogging, etc
# prepare release (test suite etc)
perl-reversion -bump
make manifest
git commit
- git branch stable/2.XXYY # only for non-trial major releases
+ git branch stable/X.YY # only for non-trial major releases
shipit # does not ship the tarball, but does everything else
# non-trial releases
- cpan-upload ~/shipit-dist/Moose-2.XXYY.tar.gz
+ cpan-upload ~/shipit-dist/Moose-X.YYZZ.tar.gz
# trial releases
cd ~/shipit-dist
- mv Moose-2.XXYY.tar.gz Moose-2.XXYY-TRIAL.tar.gz
- cpan-upload Moose-2.XXYY-TRIAL.tar.gz
+ mv Moose-X.YYZZ.tar.gz Moose-X.YYZZ-TRIAL.tar.gz
+ cpan-upload Moose-X.YYZZ-TRIAL.tar.gz
=head2 Release How-To
git commit
Then a cabal member merges into C<master>, and backports the change into
-C<stable>:
+C<stable/X.YY>:
git checkout master
git merge topic/my-emergency-fix
git push
- git checkout stable
+ git checkout stable/X.YY
git cherry-pick -x master
git push
# release
Merged branches should be deleted.
-Failed branches may be kept, but should be to C<attic/> to differentiate them
-from in-progress topic branches.
+Failed branches may be kept, but should be moved to C<attic/> to differentiate
+them from in-progress topic branches.
Branches that have not been worked on for a long time will be moved to
C<abandoned/> periodically, but feel free to move the branch back to C<topic/>
in the Changes file. Make sure to give yourself credit! Major changes or new
user-facing features should also be documented in L<Moose::Manual::Delta>.
+=head1 DOCS, DOCS, DOCS
+
+Any user-facing changes must be accompanied by documentation. If you're not
+comfortable writing docs yourself, you might be able to convince another Moose
+dev to help you.
+
+Our goal is to make sure that all features are documented. Undocumented
+features are not considered part of the API when it comes to determining
+whether a change is backwards compatible.
+
=head1 BACKWARDS COMPATIBILITY
Change is inevitable, and Moose is not immune to this. We do our best
=head1 COPYRIGHT AND LICENSE
-Copyright 2009 by Infinity Interactive, Inc.
+Copyright 2009-2010 by Infinity Interactive, Inc.
L<http://www.iinteractive.com>