The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Moose::Manual::Support - Policies regarding support, releases, and compatibility.

SUPPORT POLICY

There are two principles to Moose's policy of supported behavior.

  1. Moose favors correctness over everything.

  2. Moose supports documented and tested behavior, not accidental behavior or side effects.

If a behavior has never been documented or tested, the behavior is officially 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.

RELEASE SCHEDULE

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, tested behavior. 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 "Deprecation Policy" to understand how backwards incompatible changes are announced.

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.

DEPRECATION POLICY

Moose has always prioritized correctness over performance and backwards compatibility.

Major deprecations or API changes are documented in the Changes file as well as in Moose::Manual::Delta. 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).

Deprecated APIs will be preserved for at least one year after the major release which deprecates that API. Deprecated APIs will only be removed in a major release.

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.

BACKWARDS COMPATIBILITY

We try to ensure compatibility by having a extensive test suite (last count just over around 5123 tests), as well as testing a number of packages (currently just under 100 packages) that depend on Moose before any release.

The current list of downstream dependencies that are tested is in xt/author/test-my-dependents.t.

VERSION NUMBERS

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.

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 http://www.perlmonks.org/?node_id=608144).

CONTRIBUTING

Moose has an open contribution policy. Anybody is welcome to submit a patch. Please see Moose::Manual::Contributing for more details.