make the Supported Behavior policy explicit
[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
10There are two principles to Moose's Policy of Supported Behavior
11
121. Moose favors correctness over everything.
132. Moose supports documented and tested behavior, not accidental behavior or side effects.
14
15If a behavior has never been documented or tested, the behavior is I<officially> undefined. Relying
16upon undocumented and untested behavior is done at your own risk.
17
18If a behavior is documented or tested but found to be incorrect later, the behavior will go through a
19deprecation period in which it warns before being removed.
20
eda0fb99 21=head1 RELEASE SCHEDULE
22
d1e4fecf 23Moose uses the release early, release often philosophy.
eda0fb99 24
995b7d56 25Moose is on a system of weekly minor releases, and quarterly major releases. A minor release is
d1e4fecf 26deifined as one that makes every attempt to not break backwards compatibility. Currently this means
27that the dependency conflict lists, and test suite did not change substantially, or that any changes
28were additive.
29
30Major releases are potentially backwards incompatibiliy. Moose prioritizes correcness over backwards
31compatibility or performance, see the Deprecation Policy below for how backwards incompatible changes
32are announced.
33
995b7d56 34Before a major release, a series of Development Releases will be made so that users can test the
35upcoming major release before it is distributed to CPAN. It is in the best interests of everyone
36involved if these releases are tested as widely as possible.
eda0fb99 37
38=head1 DEPRECATION POLICY
39
40Moose has always prioritized correctness over performance and backwards
79dce67a 41compatibility.
eda0fb99 42
ccc47a38 43Major deprecations or API changes are first documented in the Changes
204f629c 44file as well as in L<Moose::Manual::Delta>.
eda0fb99 45
ccc47a38 46Moose then attempts to warn for deprecated features and API changes for
47a reasonable number of releases before breaking any tested API.
eda0fb99 48
49Moose will also warn during installation if the version being installed
50will break a known installed dependency. Unfortunately due to the nature
51of the Perl install process these warnings may be easy to miss.
52
53=head1 BACKWARDS COMPATIBILITY
54
55We try to ensure compatibility by having a extensive test suite (last
56count just over around 5123 tests), as well as testing a number of
ccc47a38 57packages (currently just under 100 packages) that depend on Moose before
eda0fb99 58any release.
59
60The current list of downstream dependencies that are tested is in
61C<xt/author/test-my-dependents.t>.
62
63=head1 VERSION NUMBERS
64
65Moose's version numbers are monotonically incrementing two decimal
66values. The version numbers in Moose are I<not> semantic. This means
67that version 1.00 will be the hundredth release, nothing more.
68
3d5e4dc0 69Occasionally, we will release a test release with a version like
700.90_03. These versions may be less stable than non-test releases, and exist
71so that developers can test potentially code-breaking changes. By default, the
72CPAN client will not install a distribution which has an underscore in its
73version.
74
eda0fb99 75Moose was declared production ready at version 0.18 (via L<<
76http://www.perlmonks.org/?node_id=608144 >>).
77
78=head1 CONTRIBUTING
79
80Moose has an open contribution policy. Anybody is welcome to submit a
204f629c 81patch. Please see L<Moose::Manual::Contributing> for more details.
eda0fb99 82
79dce67a 83=cut