X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FManual%2FSupport.pod;h=e7dc3495c84953905056c6d870053b4633f860e7;hb=9956dcf4289b353b742d49dd80c22ef00bd6ded5;hp=071d6c860ca6c0785bc7280ed55340981382744f;hpb=3d5e4dc05f2e8b1fd91cf5509619c19a111c4cd4;p=gitmo%2FMoose.git diff --git a/lib/Moose/Manual/Support.pod b/lib/Moose/Manual/Support.pod index 071d6c8..e7dc349 100644 --- a/lib/Moose/Manual/Support.pod +++ b/lib/Moose/Manual/Support.pod @@ -1,32 +1,80 @@ +package Moose::Manual::Support + +# ABSTRACT: Policies regarding support, releases, and compatibility. + +__END__ + =pod -=head1 NAME +=head1 SUPPORT POLICY -Moose::Manual::Support - Policies regarding support, releases, and -compatibility. +There are two principles to Moose's policy of supported behavior. + +=over 4 + +=item 1. + +Moose favors correctness over everything. + +=item 2. + +Moose supports documented and tested behavior, not accidental behavior or side +effects. + +=back + +If a behavior has never been documented or tested, the behavior is +I undefined. Relying upon undocumented and untested behavior is +done at your own risk. + +If a behavior is documented or tested but found to be incorrect later, the +behavior will go through a deprecation period. During the deprecation period, +use of that feature will cause a warning. Eventually, the deprecated feature +will be removed. + +In some cases, it is not possible to deprecate a behavior. In this case, the +behavior will simply be changed in a major release. =head1 RELEASE SCHEDULE -Moose uses the release early, release often philosophy. Moose is not -released on a schedule. Releases happen as new features and bug fixes -are required. +Moose is on a system of quarterly major releases, with minor releases as +needed between major releases. A minor release is defined as one that makes +every attempt to preserve backwards compatibility. Currently this means that we +did not introduce any new dependency conflicts, and that we did not make any +changes to documented or tested behavior (this typically means that minor +releases will not change any existing tests in the test suite, although they +can add new ones). A minor release can include new features and bug fixes. + +Major releases may be backwards incompatible. Moose prioritizes +correctness over backwards compatibility or performance; see the L to understand how backwards incompatible changes are announced. -There have been to date, 98 releases of Moose over just under four -years. This is an average of a release every two weeks. +Major releases are scheduled to happen during fixed release windows. If the +window is missed, then there will not be a major release until the next +release window. The release windows are one month long, and occur during the +months of January, April, July, and October. + +Before a major release, a series of development releases will be made so that +users can test the upcoming major release before it is distributed to CPAN. It +is in the best interests of everyone involved if these releases are tested as +widely as possible. =head1 DEPRECATION POLICY Moose has always prioritized correctness over performance and backwards compatibility. -Major deprecations or API changes are first documented in the Changes -file as well as in L +Major deprecations or API changes are documented in the Changes file as well +as in L. The Moose developers will also make an effort +to warn users of upcoming deprecations and breakage through the Moose blog +(http://blog.moose.perl.org). -Moose then attempts to warn for deprecated features and API changes for -a reasonable number of releases before breaking any tested API. +Deprecated APIs will be preserved for at least one year I. Deprecated APIs will only be removed in a +major release. -Moose will also warn during installation if the version being installed -will break a known installed dependency. Unfortunately due to the nature +Moose will also warn during installation if the version of Moose being +installed will break an installed dependency. Unfortunately, due to the nature of the Perl install process these warnings may be easy to miss. =head1 BACKWARDS COMPATIBILITY @@ -41,24 +89,53 @@ C. =head1 VERSION NUMBERS -Moose's version numbers are monotonically incrementing two decimal -values. The version numbers in Moose are I semantic. This means -that version 1.00 will be the hundredth release, nothing more. +Moose version numbers consist of three parts, in the form X.YYZZ. The X is the +"special magic number" that only gets changed for really big changes. Think of +this as being like the "5" in Perl 5.12.1. + +The YY portion is the major version number. Moose uses even numbers for stable +releases, and odd numbers for trial releases. The ZZ is the minor version, and +it simply increases monotonically. It starts at "00" each time a new major +version is released. -Occasionally, we will release a test release with a version like -0.90_03. These versions may be less stable than non-test releases, and exist -so that developers can test potentially code-breaking changes. By default, the -CPAN client will not install a distribution which has an underscore in its -version. +Semantically, this means that any two releases which share a major version +should be API-compatible with each other. In other words, 2.0200, 2.0201, and +2.0274 are all API-compatible. + +Prior to version 2.0, Moose version numbers were monotonically incrementing +two decimal values (0.01, 0.02, ... 1.11, 1.12, etc.). Moose was declared production ready at version 0.18 (via L<< http://www.perlmonks.org/?node_id=608144 >>). +=head1 PERL VERSION COMPATIBILITY + +As of version 2.00, Moose officially supports being run on perl 5.8.3+. Our +current policy is to support the earliest version of Perl shipped in the latest +stable release of any major operating system (this tends to mean CentOS). We +will provide at least six months notice (two major releases) when we decide to +increase the officially supported Perl version. The next time this will happen +is in January of 2012, when Moose 2.06 will increase the minimum officially +supported Perl version to 5.10.1. + +"Officially supported" does not mean that these are the only versions of Perl +that Moose will work with. Our declared perl dependency will remain at 5.8.3 as +long as our test suite continues to pass on 5.8.3. What this does mean is that +the core Moose dev team will not be spending any time fixing bugs on versions +that aren't officially supported, and new contributions will not be rejected +due to being incompatible with older versions of perl except in the most +trivial of cases. We will, however, still welcome patches to make Moose +compatible with earlier versions, if other people are still interested in +maintaining compatibility. Note that although performance regressions are +acceptable in order to maintain backwards compatibility (as long as they only +affect the older versions), functionality changes and buggy behavior will not +be. If it becomes impossible to provide identical functionality between modern +Perl versions and unsupported Perl versions, we will increase our declared perl +dependency instead. + =head1 CONTRIBUTING Moose has an open contribution policy. Anybody is welcome to submit a -patch. Please see -L for more -details. +patch. Please see L for more details. =cut