Add paragraph on release windows
[gitmo/Moose.git] / lib / Moose / Manual / Support.pod
CommitLineData
eda0fb99 1=pod
2
3=head1 NAME
4
5Moose::Manual::Support - Policies regarding support, releases, and
6compatibility.
7
995b7d56 8=head1 SUPPORT POLICY
9
a0214906 10There are two principles to Moose's policy of supported behavior.
995b7d56 11
64936d78 12=over 4
13
14=item 1.
15
16Moose favors correctness over everything.
17
18=item 2.
19
20Moose supports documented and tested behavior, not accidental behavior or side
21effects.
22
23=back
995b7d56 24
a0214906 25If a behavior has never been documented or tested, the behavior is
26I<officially> undefined. Relying upon undocumented and untested behavior is
27done at your own risk.
995b7d56 28
a0214906 29If a behavior is documented or tested but found to be incorrect later, the
64936d78 30behavior will go through a deprecation period. During the deprecation period,
31use of that feature will cause a warning. Eventually, the deprecated feature
32will be removed.
995b7d56 33
eda0fb99 34=head1 RELEASE SCHEDULE
35
759dfceb 36Moose is on a system of quarterly major releases, with minor releases as
37needed between major releases. A minor release is defined as one that makes
38every attempt to preserve backwards compatibility. Currently this means that
39we did not introduce any new dependency conflicts, and that we did not make
40any changes to documented, tested behavior. A minor release can include new
41features and bug fixes.
d1e4fecf 42
64936d78 43Major releases may be backwards incompatible. Moose prioritizes
44correctness over backwards compatibility or performance; see the L<Deprecation
45Policy> to understand how backwards incompatible changes are announced.
d1e4fecf 46
e4b7acd5 47Major releases are scheduled to happen during fixed release windows. If the
48window is missed, then there will not be a major release until the next
49release window. The release windows are one month long, and occur during the
50months of January, April, July, and October.
51
a0214906 52Before a major release, a series of development releases will be made so that
53users can test the upcoming major release before it is distributed to CPAN. It
54is in the best interests of everyone involved if these releases are tested as
55widely as possible.
eda0fb99 56
57=head1 DEPRECATION POLICY
58
59Moose has always prioritized correctness over performance and backwards
79dce67a 60compatibility.
eda0fb99 61
64936d78 62Major deprecations or API changes are documented in the Changes file as well
63as in L<Moose::Manual::Delta>. The Moose developers will also make an effort
64to warn users of upcoming deprecations and breakage through the Moose blog
65(http://blog.moose.perl.org).
eda0fb99 66
45d92036 67Deprecated APIs will be preserved for at least one year I<after the major
68release which deprecates that API>. Deprecated APIs will only be removed in a
69major release.
eda0fb99 70
64936d78 71Moose will also warn during installation if the version of Moose being
72installed will break an installed dependency. Unfortunately, due to the nature
eda0fb99 73of the Perl install process these warnings may be easy to miss.
74
75=head1 BACKWARDS COMPATIBILITY
76
77We try to ensure compatibility by having a extensive test suite (last
78count just over around 5123 tests), as well as testing a number of
ccc47a38 79packages (currently just under 100 packages) that depend on Moose before
eda0fb99 80any release.
81
82The current list of downstream dependencies that are tested is in
83C<xt/author/test-my-dependents.t>.
84
85=head1 VERSION NUMBERS
86
64936d78 87Moose version numbers consist of three parts, in the form X.YYZZ. The X is the
88"special magic number" that only gets changed for really big changes. Think of
89this as being like the "5" in Perl 5.12.1.
90
91The YY portion is the major version number. Moose uses even numbers for stable
92releases, and odd numbers for trial releases. The ZZ is the minor version, and
93it simply increases monotonically. It starts at "00" each time a new major
94version is released.
95
96Semantically, this means that any two releases which share a major version
97should be API-compatible with each other. In other words, 2.0200, 2.0201, and
982.0274 are all API-compatible.
eda0fb99 99
64936d78 100Prior to version 2.0, Moose version numbers were monotonically incrementing
101two decimal values (0.01, 0.02, ... 1.11, 1.12, etc.).
3d5e4dc0 102
eda0fb99 103Moose was declared production ready at version 0.18 (via L<<
104http://www.perlmonks.org/?node_id=608144 >>).
105
106=head1 CONTRIBUTING
107
108Moose has an open contribution policy. Anybody is welcome to submit a
204f629c 109patch. Please see L<Moose::Manual::Contributing> for more details.
eda0fb99 110
79dce67a 111=cut