//////////////////////////////////////////

  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.

//////////////////////////////////////////

= Johnzon Podling Maturity Assessment

== Overview

This is an assessment of the Johnzon podling's maturity, meant to help inform
the decision (of the mentors, community, Incubator PMC and ASF Board of 
Directors) to graduate it as a top-level Apache project.

It is based on the ASF project maturity model at
https://community.apache.org/apache-way/apache-project-maturity-model.html

== Status of this document
Final

== Overall assessment
Dev list acknowledged by lazy consensus it was time to graduate for Johnzon. The fact we released a lot
was one factor making this choice obvious.

== Maturity model assessment 
Mentors and community members are encouraged to contribute to this 
and comment on it.

=== Code

==== CD10
_The project produces Open Source software, for distribution to the public at no charge._

OK: by nature.
 
==== CD20
_The project's code is easily discoverable and publicly accessible._

OK: http://johnzon.incubator.apache.org/source-repository.html gives all the details.

==== CD30
_The code can be built in a reproducible way using widely available standard tools._

OK: the build uses Maven and continuous integration (Jenkins) is used.

==== CD40
_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._

OK: Using Git, main repository at https://git-wip-us.apache.org/repos/asf/incubator-johnzon.git, releases are cut
from that repository.

==== CD50
_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._

OK

=== Licenses and Copyright

==== LC10
_The code is released under the Apache License, version 2._0._ 

OK, yes.

==== LC20
_Libraries that are mandatory dependencies of the project's code do not create more restrictions than the Apache License does._

OK: no direct dependencies which are not ASF ones so by transitivity we are good.

==== LC30
_The libraries mentioned in LC20 are available as Open Source software._

OK

==== LC40
_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._

OK

==== LC50
_The copyright ownership of everything that the project produces is clearly defined and documented._

OK

=== Releases

==== RE10
_Releases consist of source code, distributed using standard and open archive formats that are expected to stay readable in the long term._

OK

==== RE20
_Releases are approved by the project's PMC (see CS10), in order to make them an act of the Foundation._

OK

==== RE30
_Releases are signed and/or distributed along with digests that can be reliably used to validate the downloaded archives._

OK

==== RE40
_Convenience binaries can be distributed alongside source code but they are not Apache Releases -- they are just a convenience provided with no guarantee._

OK: we only create an assembly for sources, binaries are on central.

=== Quality

==== QU10
_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._ 

OK

==== QU20
_The project puts a very high priority on producing secure software._

OK

==== QU30
_The project provides a well-documented channel to report security issues, along with a documented way of responding to them._

OK, see http://johnzon.apache.org/security.html

==== QU40
_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._ 

OK: being based on a EE specification the main API is stable and when we changed our implementation we mitigated the side effects for the end users (Adapter/Converter deep change recently doesnt affect them for instance).

==== QU50
_The project strives to respond to documented bug reports in a timely manner._

OK, response times on the users list and jira are good. 

=== Community

==== CO10
_The project has a well-known homepage that points to all the information required to operate according to this maturity model._

OK: http://johnzon.incubator.apache.org/ for now http://johnzon.apache.org/ when graduated.

==== CO20
_The community welcomes contributions from anyone who acts in good faith and in a respectful manner and adds value to the project._ 

OK, the community is working well in this respect, we got several contributions through JIRA/mailing-list.

==== CO30
_Contributions include not only source code, but also documentation, constructive bug reports, constructive discussions, marketing and generally anything that adds value to the project._

Not yet relevant? Was mainly bugfixes.

==== CO40
_The community is meritocratic and over time aims to give more rights and responsibilities to contributors who add value to the project._

OK. List of commmitters and PPMC members has grown during incubation.

==== CO50
_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._

OK, based on the standard ASF docs. 

==== CO60
_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._

OK

==== CO70
_The project strives to answer user questions in a timely manner._

OK

=== Consensus Building

==== CS10
_The project maintains a public list of its contributors who have decision power -- the project's PMC (Project Management Committee) consists of those contributors._

OK: will be at http://home.apache.org/phonebook.html?ctte=johnzon-pmc once the project graduates.

==== CS20
_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._

OK, big changes were discussed on the list before implementation or uncertain ones where discussed before or after in a sane context.

==== CS30
_Documented voting rules are used to build consensus when discussion is not sufficient._ 

OK, using the standard ASF voting process, http://www.apache.org/foundation/voting.html

==== CS40
_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._

OK, vetoes haven't been used.

==== CS50
_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._

OK

=== Independence

==== IN10
_The project is independent from any corporate or organizational influence._

OK, no such influence has been detected during incubation. 

==== IN20
_Contributors act as themselves as opposed to representatives of a corporation or organization._

OK, no worrying signals here during incubation.  
