---
title: Apache Polygene™ Maturity Model
layout: default
---
<div class="page-header">
    <h1>Maturity Model</h1>
    <p class="lead">Apache Polygene™ is hosted at the Apache Software Foundation and this is the
                    <a href="https://community.apache.org/apache-way/apache-project-maturity-model.html">Apache
                    Maturity Model</a> self-declaration of its compliance..</p>
</div>
<div class="row-fluid">
    <div class="span2"></div>
    <div class="span8">
        <div class="row-fluid">
            <div class="span6">
                <script type="text/javascript" src="//www.ohloh.net/p/13150/widgets/project_basic_stats.js"></script>
            </div>
            <div class="span6">
                <script type="text/javascript" src="//www.ohloh.net/p/13150/widgets/project_factoids.js"></script>
            </div>
        </div>

        <h2>Code</h2>
        <dl>
            <dt>CD10 <i class="icon-ok text-success"></i></dt>
            <dd>
                The project produces Open Source software, for distribution to the public at no charge.
            </dd>
            <dt>CD20 <i class="icon-ok text-success"></i></dt>
            <dd>
                The project's code is easily discoverable and publicly accessible. 
            </dd>
            <dt>CD30 <i class="icon-ok text-success"></i></dt>
            <dd>
                The code can be built in a reproducible way using widely available standard tools. 
            </dd>
            <dt>CD40 <i class="icon-ok text-success"></i></dt>
            <dd>
                The full history of the project's code is available via a source code control system, 
                in a way that allows any released version to be recreated. 
            </dd>
            <dt>CD50 <i class="icon-ok text-success"></i></dt>
            <dd>
                The provenance of each line of code is established via the source code control 
                system, in a reliable way based on strong authentication of the committer. When 
                third-party contributions are committed, commit messages provide reliable information 
                about the code provenance.
            </dd>
        </dl>

        <h2>Licenses and Copyright</h2>
        <dl>
            <dt>LC10 <i class="icon-ok text-success"></i></dt>
            <dd>
                The code is released under the Apache License, version 2.0. 
            </dd>
            <dt>LC20 <i class="icon-ok text-success"></i></dt>
            <dd>
                Libraries that are mandatory dependencies of the project's code do not create more 
                restrictions than the Apache License does. 
            </dd>
            <dt>LC30 <i class="icon-ok text-success"></i></dt>
            <dd>
                The libraries mentioned in LC20 are available as Open Source software. 
            </dd>
            <dt>LC40 <i class="icon-ok text-success"></i></dt>
            <dd>
                Committers are bound by an Individual Contributor Agreement (the "Apache iCLA") that 
                defines which code they are allowed to commit and how they need to identify code that 
                is not their own. 
            </dd>
            <dt>LC50 <i class="icon-ok text-success"></i></dt>
            <dd>
                The copyright ownership of everything that the project produces is clearly defined and 
                documented.
            </dd>
        </dl>

        <h2>Releases</h2>
        <dl>
            <dt>RE10 <i class="icon-ok text-success"></i></dt>
            <dd>
                Releases consist of source code, distributed using standard and open archive formats that 
                are expected to stay readable in the long term.
            </dd>
            <dt>RE20 <i class="icon-ok text-success"></i></dt>
            <dd>
                Releases are approved by the project's PMC (see CS10), in order to make them an act of 
                the Foundation. 
            </dd>
            <dt>RE30 <i class="icon-ok text-success"></i></dt>
            <dd>
                Releases are signed and/or distributed along with digests that can be reliably used to 
                validate the downloaded archives. 
            </dd>
            <dt>RE40 <i class="icon-ok text-success"></i></dt>
            <dd>
                Convenience binaries can be distributed alongside source code but they are not Apache 
                Releases -- they are just a convenience provided with no guarantee. 
            </dd>
        </dl>

        <h2>Quality</h2>
        <dl>
            <dt>QU10 <i class="icon-ok text-success"></i></dt>
            <dd>
                The project is open and honest about the quality of its code. Various levels of quality 
                and maturity for various modules are natural and acceptable as long as they are clearly 
                communicated. 
            </dd>
            <dt>QU20 <i class="icon-ok text-success"></i></dt>
            <dd>
                The project puts a very high priority on producing secure software.
            </dd>
            <dt>QU30 <i class="icon-remove text-error"></i></dt>
            <dd>
                The project provides a well-documented channel to report security issues, along with a 
                documented way of responding to them.
            </dd>
            <dt>QU40 <i class="icon-remove text-error"></i></dt>
            <dd>
                The project puts a high priority on backwards compatibility and aims to document any 
                incompatible changes and provide tools and documentation to help users transition to new 
                features. 
            </dd>
            <dt>QU50 <i class="icon-ok text-success"></i></dt>
            <dd>
                The project strives to respond to documented bug reports in a timely manner. 
            </dd>
        </dl>

        <h2>Community</h2>
        <dl>
            <dt>CO10 <i class="icon-remove text-error"></i></dt>
            <dd>
                The project has a well-known homepage that points to all the information required to operate 
                according to this maturity model. 
            </dd>
            <dt>CO20 <i class="icon-ok text-success"></i></dt>
            <dd>
                The community welcomes contributions from anyone who acts in good faith and in a respectful 
                manner and adds value to the project. 
            </dd>
            <dt>CO30 <i class="icon-ok text-success"></i></dt>
            <dd>
                Contributions include not only source code, but also documentation, constructive bug 
                reports, constructive discussions, marketing and generally anything that adds value to the 
                project. 
            </dd>
            <dt>CO40 <i class="icon-ok text-success"></i></dt>
            <dd>
                The community is meritocratic and over time aims to give more rights and responsibilities 
                to contributors who add value to the project. 
            </dd>
            <dt>CO50 <i class="icon-ok text-success"></i></dt>
            <dd>
                The way in which contributors can be granted more rights such as commit access or decision 
                power is clearly documented and is the same for all contributors. 
            </dd>
            <dt>CO60 <i class="icon-ok text-success"></i></dt>
            <dd>
                The community operates based on consensus of its members (see CS10) who have decision power. 
                Dictators, benevolent or not, are not welcome in Apache projects. 
            </dd>
            <dt>CO70 <i class="icon-ok text-success"></i></dt>
            <dd>
                The project strives to answer user questions in a timely manner. 
            </dd>
        </dl>

        <h2>Consensus Building</h2>
        <dl>
            <dt>CS10 <i class="icon-remove text-error"></i></dt>
            <dd>
                The project maintains a public list of its contributors who have decision power -- the 
                project's PMC (Project Management Committee) consists of those contributors. 
            </dd>
            <dt>CS20 <i class="icon-ok text-success"></i></dt>
            <dd>
                Decisions are made by consensus among PMC members and are documented on the project's main 
                communications channel. Community opinions are taken into account but the PMC has the final 
                word if needed. 
            </dd>
            <dt>CS30 <i class="icon-remove text-error"></i></dt>
            <dd>
                Documented voting rules are used to build consensus when discussion is not sufficient.
            </dd>
            <dt>CS40 <i class="icon-ok text-success"></i></dt>
            <dd>
                In Apache projects, vetoes are only valid for code commits and are justified by a technical 
                explanation, as per the Apache voting rules defined in CS30. 
            </dd>
            <dt>CS50 <i class="icon-ok text-success"></i></dt>
            <dd>
                All "important" discussions happen asynchronously in written form on the project's main 
                communications channel. Offline, face-to-face or private discussions that affect the 
                project are also documented on that channel. 
            </dd>
        </dl>

        <h2>Independence</h2>
        <dl>
            <dt>IN10 <i class="icon-ok text-success"></i></dt>
            <dd>
                The project is independent from any corporate or organizational influence.
            </dd>
            <dt>IN20 <i class="icon-ok text-success"></i></dt>
            <dd>
                Contributors act as themselves as opposed to representatives of a corporation or organization. 
            </dd>
        </dl>

    </div>
    <div class="span2"></div>
</div>

