Fix (or remove) broken links in the POD
[gitmo/Moose.git] / lib / Moose / Manual / Support.pod
CommitLineData
064a13a3 1package Moose::Manual::Support
2
3# ABSTRACT: Policies regarding support, releases, and compatibility.
eda0fb99 4
064a13a3 5__END__
eda0fb99 6
064a13a3 7=pod
eda0fb99 8
995b7d56 9=head1 SUPPORT POLICY
10
a0214906 11There are two principles to Moose's policy of supported behavior.
995b7d56 12
64936d78 13=over 4
14
15=item 1.
16
17Moose favors correctness over everything.
18
19=item 2.
20
21Moose supports documented and tested behavior, not accidental behavior or side
22effects.
23
24=back
995b7d56 25
a0214906 26If a behavior has never been documented or tested, the behavior is
27I<officially> undefined. Relying upon undocumented and untested behavior is
28done at your own risk.
995b7d56 29
a0214906 30If a behavior is documented or tested but found to be incorrect later, the
64936d78 31behavior will go through a deprecation period. During the deprecation period,
32use of that feature will cause a warning. Eventually, the deprecated feature
33will be removed.
995b7d56 34
94ba07c5 35In some cases, it is not possible to deprecate a behavior. In this case, the
36behavior will simply be changed in a major release.
37
eda0fb99 38=head1 RELEASE SCHEDULE
39
759dfceb 40Moose is on a system of quarterly major releases, with minor releases as
41needed between major releases. A minor release is defined as one that makes
7b1aba0f 42every attempt to preserve backwards compatibility. Currently this means that we
43did not introduce any new dependency conflicts, and that we did not make any
44changes to documented or tested behavior (this typically means that minor
45releases will not change any existing tests in the test suite, although they
46can add new ones). A minor release can include new features and bug fixes.
d1e4fecf 47
64936d78 48Major releases may be backwards incompatible. Moose prioritizes
6f970df6 49correctness over backwards compatibility or performance; see the L<DEPRECATION
50POLICY> to understand how backwards incompatible changes are announced.
d1e4fecf 51
e4b7acd5 52Major releases are scheduled to happen during fixed release windows. If the
53window is missed, then there will not be a major release until the next
54release window. The release windows are one month long, and occur during the
55months of January, April, July, and October.
56
a0214906 57Before a major release, a series of development releases will be made so that
58users can test the upcoming major release before it is distributed to CPAN. It
59is in the best interests of everyone involved if these releases are tested as
60widely as possible.
eda0fb99 61
62=head1 DEPRECATION POLICY
63
64Moose has always prioritized correctness over performance and backwards
79dce67a 65compatibility.
eda0fb99 66
64936d78 67Major deprecations or API changes are documented in the Changes file as well
68as in L<Moose::Manual::Delta>. The Moose developers will also make an effort
69to warn users of upcoming deprecations and breakage through the Moose blog
70(http://blog.moose.perl.org).
eda0fb99 71
45d92036 72Deprecated APIs will be preserved for at least one year I<after the major
73release which deprecates that API>. Deprecated APIs will only be removed in a
74major release.
eda0fb99 75
64936d78 76Moose will also warn during installation if the version of Moose being
77installed will break an installed dependency. Unfortunately, due to the nature
eda0fb99 78of the Perl install process these warnings may be easy to miss.
79
80=head1 BACKWARDS COMPATIBILITY
81
82We try to ensure compatibility by having a extensive test suite (last
83count just over around 5123 tests), as well as testing a number of
ccc47a38 84packages (currently just under 100 packages) that depend on Moose before
eda0fb99 85any release.
86
87The current list of downstream dependencies that are tested is in
88C<xt/author/test-my-dependents.t>.
89
90=head1 VERSION NUMBERS
91
64936d78 92Moose version numbers consist of three parts, in the form X.YYZZ. The X is the
93"special magic number" that only gets changed for really big changes. Think of
94this as being like the "5" in Perl 5.12.1.
95
96The YY portion is the major version number. Moose uses even numbers for stable
97releases, and odd numbers for trial releases. The ZZ is the minor version, and
98it simply increases monotonically. It starts at "00" each time a new major
99version is released.
100
101Semantically, this means that any two releases which share a major version
102should be API-compatible with each other. In other words, 2.0200, 2.0201, and
1032.0274 are all API-compatible.
eda0fb99 104
64936d78 105Prior to version 2.0, Moose version numbers were monotonically incrementing
106two decimal values (0.01, 0.02, ... 1.11, 1.12, etc.).
3d5e4dc0 107
eda0fb99 108Moose was declared production ready at version 0.18 (via L<<
109http://www.perlmonks.org/?node_id=608144 >>).
110
6abc21a5 111=head1 PERL VERSION COMPATIBILITY
112
64a1ebab 113As of version 2.00, Moose officially supports being run on perl 5.8.3+. Our
114current policy is to support the earliest version of Perl shipped in the latest
115stable release of any major operating system (this tends to mean CentOS). We
6abc21a5 116will provide at least six months notice (two major releases) when we decide to
64a1ebab 117increase the officially supported Perl version. The next time this will happen
118is in January of 2012, when Moose 2.06 will increase the minimum officially
119supported Perl version to 5.10.1.
6abc21a5 120
64a1ebab 121"Officially supported" does not mean that these are the only versions of Perl
6abc21a5 122that Moose will work with. Our declared perl dependency will remain at 5.8.3 as
123long as our test suite continues to pass on 5.8.3. What this does mean is that
124the core Moose dev team will not be spending any time fixing bugs on versions
125that aren't officially supported, and new contributions will not be rejected
126due to being incompatible with older versions of perl except in the most
64a1ebab 127trivial of cases. We will, however, still welcome patches to make Moose
6abc21a5 128compatible with earlier versions, if other people are still interested in
129maintaining compatibility. Note that although performance regressions are
130acceptable in order to maintain backwards compatibility (as long as they only
131affect the older versions), functionality changes and buggy behavior will not
64a1ebab 132be. If it becomes impossible to provide identical functionality between modern
133Perl versions and unsupported Perl versions, we will increase our declared perl
134dependency instead.
6abc21a5 135
eda0fb99 136=head1 CONTRIBUTING
137
138Moose has an open contribution policy. Anybody is welcome to submit a
204f629c 139patch. Please see L<Moose::Manual::Contributing> for more details.
eda0fb99 140
79dce67a 141=cut