Forum OpenACS Q&A: Re: Package Maturity Standards

Posted by Joel Aufrecht on
Draft #2:

Each package has a maturity level. Maturity level is recorded in the .info file for each major-minor release of OpenACS, and is the appropriate value for that release of the package.

  <platform id="openacs-core" version="5.0">-1 - Incompatible</platform>
  <platform id="openacs-core" version="5.1">2 - Mature</platform>

Maturity level is visible in the Installer and when browsing the repository.

  • Level -1: Incompatible. This package is not supported for this platform and should not be expected to work.
  • Level 0: New Submission. This is the default for packages that don't have it set explicitly, and for new contributions. The only criterion for level 0 is that at least one person asserts that it works on a given platform.
  • Level 1: Immature. Has no open priority 1 or priority 2 bugs. Has been installed by at least 10? different people, include 1 core developer. Has been available in a stable release for at least 1 month. Has API documentation.
  • Level 2: Mature. Same as Level 1, plus has install guide and user documentation; no serious deviations from general coding practices; no namespace conflicts with existing level 2 packages.
  • Level 3: Mature and Standard. Same as level 2, plus meets published coding standards; is fully internationalized; available on both supported databases.

Posted by Malte Sussdorff on
I like the second draft a lot, though I doubt that we can give Level 1 for a lot of packages, if the number of people is higher than 5. Furthermore, with each new release this would mean to switch all packages back to Level 0, as we won't have the ability to go beyond Level 1 before the release. Last but not least, how do people report about an installation of a package.

Could you give your estimation of the maturity of some example non-core packages ?

Posted by Bart Teeuwisse on


I like the idea but would change the implementation slightly so that the level # and description are encoded in different XML tags (or attributes). E.g.

<platform id="openacs-core" version="5.1">
  <level descr="Mature">2</level>

This encoding style removes the need for parsing the maturity level string in your example and de-couples the description from the level #.


Posted by Joel Aufrecht on
I would estimate that file-storage, photo-album, weblogger, bug tracker, forums are probably level 2 (Mature).  I doubt anything is fully Level 3 (Mature and Standard) yet.