Difference between revisions of "Project Graduation Checklist"

From OSGeo
Jump to navigation Jump to search
(Quite a bit of tweaking of the "Checklist" section)
Line 5: Line 5:
 
= Document Status =
 
= Document Status =
  
'''IncCom Document Number''': X
+
'''IncCom Document Number''': <font color="red">X</font>
  
 
'''Version''': <font color="red">2.0. Updates since 1.0 are in red.</font>
 
'''Version''': <font color="red">2.0. Updates since 1.0 are in red.</font>
  
'''Last Updated''': <font color="red">February 2010.</font>
+
'''Last Updated''': <font color="red">January 2012.</font>
  
'''Status''': draft
+
'''Status''': <font color="red">draft</font>
  
 
= Purpose =
 
= Purpose =
Line 26: Line 26:
 
= Checklist =
 
= Checklist =
  
<font color="red">The following checklist is used during graduation to ensure we have not missed anything.</font>
+
<strike><font color="red">The following checklist is used during graduation to ensure we have not missed anything.</font></strike>
 +
<span style=background:yellow>Cameron Shorter comment: This sentence is covered under the "Purpose" heading above, hence it doesn't need repeating here.</span>
  
== <font color="red">Legal</font> ==
+
== <font color="red">Legal</font><strike>License</strike>==
 
 
<strike>License</strike>  
 
  
 
<font color="red">We need to ensure that project owns or otherwise has obtained the ability to release:</font>
 
<font color="red">We need to ensure that project owns or otherwise has obtained the ability to release:</font>
# The <font color="red">project</font> code<font color="red">, documentation and data</font> has been adequately vetted to assure it is all properly licensed <strike>(a.k.a</strike><font color="red">as per a</font> [http://www.osgeo.org/incubator/process/codereview.html provenance review]<strike>)</strike>.
+
# The <font color="red">project</font> code<font color="red">, documentation and data</font> has been adequately vetted to assure it is all properly licensed <strike>(a.k.a</strike><font color="red">as per a</font> [http://www.osgeo.org/incubator/process/codereview.html provenance review].
 
# All code contributors have agreed to abide by the project's license policy<font color="red">, and this agreement has been documented and archived</font>.
 
# All code contributors have agreed to abide by the project's license policy<font color="red">, and this agreement has been documented and archived</font>.
# <font color="red">Any other legal checks such as trademark and patent</font>
+
# <font color="red"><strike>Any other legal checks such as trademark and patent.</strike>The project has checked for inappropriate use of trademark or patents and documented the result of such checks.</font><span style=background:yellow>Cameron Shorter comment: This point needs to be definitive if it is included. Also, I think that it should be included in the "Provenance Review" checklist (which could be renamed "Legal Checklist"). And before it is included (which I think is a good idea long term), we need to do an audit of existing graduated projects to see if they would pass. Hence, I suggest that inclusion of this point be delayed until a future version of this document.</span>
# <font color="red">Ability to shut off downloads if any blocking legal issue is found.</font>
+
# <font color="red">The project has the ability to shut off downloads if a blocking legal issue is found.</font>
  
 
== Processes ==
 
== Processes ==
  
<font color="red">Documented processes:</font>
+
<strike><font color="red">Documented processes:</font></strike>
# The project has code under configuration <font color="red">management</font><strike>control</strike>. <i>Eg, subversion, <font color="red">git</font></i>
+
<span style=background:yellow>Cameron Shorter comment: This line isn't required if you have "Processes" heading above.</span>
 +
 
 +
# The project has code under configuration <font color="red">management</font><strike>control</strike>. <i>Eg, subversion, <font color="red">git.</font></i>
 
# The project uses an issue tracker<font color="red"> and keeps the status of the issue tracker up to date</font>.
 
# The project uses an issue tracker<font color="red"> and keeps the status of the issue tracker up to date</font>.
 
# The project has documented its management processes. <i>This is typically done within a Developers Guide or Project Management Plan.</i>
 
# The project has documented its management processes. <i>This is typically done within a Developers Guide or Project Management Plan.</i>
#* The project has a suitable <font color="red">open</font> governance policy ensuring decisions are made, documented and adhered to. <i><font color="red">Ideally a</font> project management committee established with a <font color="red">process for adding new members</font></i>
+
#* The project has a suitable <font color="red">open</font> governance policy ensuring decisions are made, documented and adhered to. <i><font color="red">This typically means a</font> Project Management Committee has been established with a <font color="red">process for adding new members. A robust Project Management Committee will typically draw upon developers, users and key stakeholders from multiple organisations</font> as there will be a greater variety of technical visions and the project is more resilient to a sponsor leaving.</i>
#* The project uses public communication channels <font color="red">for decision making to maintains transparency.</font><i>Eg archived email lists<font color="red">, public issue tracker, IRC meetings</font></i>
+
#* The project uses public communication channels <font color="red">for decision making to maintain transparency.</font><i> E.g. archived email list(s)<font color="red">, archived IRC channel(s), public issue tracker.</font></i>
#* See Documentation and Release Procedure for more information
+
<strike>#* See Documentation and Release Procedure for more information</strike>
 +
<span style=background:yellow>Cameron Shorter comment: This line is out of place in a check list (Also this doc is short enough that we don't need to reference another heading).</span>
  
<font color="red">This checklist can only document process requirements; the goal of the above procedures is to check that</font> the developer community works in a healthy way:
+
<strike><font color="red">This checklist can only document process requirements; the goal of the above procedures is to check that</font> the developer community works in a healthy way:
 
* <font color="red">Open Development:</font> open to input, new members and reaching consensus on decisions.  
 
* <font color="red">Open Development:</font> open to input, new members and reaching consensus on decisions.  
* Ideally, the developers come from a diversity of backgrounds as there will be a greater variety of technical visions and the project is more resilient to a sponsor leaving.
+
* Ideally, the developers <font color="red">and Project Management Committee members </font>come from a diversity of backgrounds as there will be a greater variety of technical visions and the project is more resilient to a sponsor leaving.</strike>
* <font color="red">For those setting up a project steering committee for the first time consider drawing members from developer list, user list and key stakeholders to receive a balanced viewpoint.</font>
+
<span style=background:yellow>Cameron Shorter comment: Covered in list above.</span>
 +
 
 +
==<font color="red">Documentation</font>==
 +
 
 +
<strike><font color="red">We ask that extra care be taken to ensure high quality documentation and releases:</font></strike>
 +
 
 +
# The project has user documentation:
 +
#* <font color="red">Including sufficient detail to guide a new user through performing the core functionality provided by the application</font>.
 +
# The project has developer documentation:
 +
#* <font color="red">Including checkout and build instructions.</font>
 +
#* <font color="red">Including commented code, ideally published for developer use. Examples: javadocs for Java applications, or Sphinx documentation for Python applications.</font>
 +
#* <font color="red">Providing sufficient detail for an experience programmer to contribute patches or a new module in accordance with the project's programming conventions.</font>
  
==<font color="red">Documentation and Release Procedure</font>==
+
==<font color="red">Release Procedure</font>==
  
We ask that extra care be taken to ensure high quality documentation and releases:
+
<strike><font color="red">It is not enough to make and document a release; the goal of the above checklist is to focus team reliability:</font>
 +
* <font color="red">Ideally we would like a new developer to walk up; follow the instructions and correctly engage the community to build a release</font></strike>
  
<span style=background:yellow>Cameron Shorter comment: Quality requirements have been moved into this section.</span>
+
<font color="red">In order to maintain a consistent level of quality, the project should follow defined release and testing processes.</font>
  
# The project has user documentation
+
# The project <font color="red">follows</font><strike>has</strike> a defined release process:
#* <font color="red">Sufficient detail to guide a new user through performing the core functionality provided by the application</font>.
+
#* <font color="red">Which includes execution of the testing process before releasing a stable release.</font>  
# The project has developer documentation
+
#<strike> The project has an automated build process.</strike> The project <font color="red">follows a documented <font color="red">testing process:</font></font><strike> manages quality</strike>  
#* <font color="red">including checkout and build instructions</font>
 
#* <font color="red">includes commented code. Ideally published for developer use. Examples: javadocs for Java applications, or Sphinx documentation for Python applications</font>
 
#* <font color="red">Provides sufficient detail for an experience programmer to contribute patches or a new module in accordance with the project's programming conventions</font>.
 
# The project <font color="red">follows</font><strike>has</strike> a defined release process
 
#* <font color="red">Includes executing the testing process before releasing a stable release</font>  
 
# <strike>The project has an automated build process.</strike> <span style=background:yellow>Cameron Shorter comment: Covered by following line.</span>
 
# The project <font color="red">follows a documented <font color="red">testing process</font></font><strike> manages quality</strike>.
 
 
#* Ideally, this includes <font color="red>both automated and manual testing</font><strike>an automated test system</strike>.
 
#* Ideally, this includes <font color="red>both automated and manual testing</font><strike>an automated test system</strike>.
#* <font color="red">Ideally this includes a Quality Process with QA metrics and set goals</font>
+
#* <font color="red">Ideally this includes documentation conformance to set quality goals, such as reporting Percentage Code Coverage of Unit Tests.</font>
 +
# <font color="red">Release and testing processes provide sufficient detail for an experienced programmer to follow.</font>
  
<font>It is not enough to make and document a release; the goal of the above checklist is to focus team reliability:</font>
 
* <font color="red">Ideally we would like a new developer to walk up; follow the instructions and correctly engage the community to build a release</font>
 
 
* <span style=background:yellow>Cameron Shorter comment: At a later stage, it would be good to expect OSGeo projects to maintain a periodic stable release schedule, ideally linked in with distribution release cycles. However, I don't think we have reached that level of maturity across our projects yet.</span>
 
* <span style=background:yellow>Cameron Shorter comment: At a later stage, it would be good to expect OSGeo projects to maintain a periodic stable release schedule, ideally linked in with distribution release cycles. However, I don't think we have reached that level of maturity across our projects yet.</span>
 
* <span style=background:yellow>Jody Garnett comment: You will need an OSGeo project as a good example before asking for a Quality Process. Example: GeoTools mandates modules obtain 40% code coverage prior to being published</span>
 
* <span style=background:yellow>Jody Garnett comment: You will need an OSGeo project as a good example before asking for a Quality Process. Example: GeoTools mandates modules obtain 40% code coverage prior to being published</span>

Revision as of 16:28, 7 January 2012

The official copy of this document lives at http://www.osgeo.org/incubator/process/project_graduation_checklist.html

Wiki version 50824 of this document was discussed at Incubation Meeting 14, and a number of suggested changes were made. Logs here: http://irclogs.geoapt.com/osgeo/%23osgeo.2010-03-03.log

Document Status

IncCom Document Number: X

Version: 2.0. Updates since 1.0 are in red.

Last Updated: January 2012.

Status: draft

Purpose

The purpose of this checklist is to determine whether an Incubator Project produces quality products, remains true to its stated licence and is sustainable. Satisfying this checklist is a pre-requisite for graduation.

A project should have institutionalized the processes in this list or provide justification why the process is not used.

Terms and Definitions

Mentor
A member of the Incubation Committee chosen to assist a Project through the Incubation Process.
Institutionalized Process
A documented process which which addresses a need and is actively in use. It typically takes months before a process becomes institutionalized. A more detailed definition of institutionalization is found in the Capability Maturity Model (CMMI) - "Generic Goal 2: Institutionalize a Managed Process"

Checklist

The following checklist is used during graduation to ensure we have not missed anything. Cameron Shorter comment: This sentence is covered under the "Purpose" heading above, hence it doesn't need repeating here.

LegalLicense

We need to ensure that project owns or otherwise has obtained the ability to release:

  1. The project code, documentation and data has been adequately vetted to assure it is all properly licensed (a.k.aas per a provenance review.
  2. All code contributors have agreed to abide by the project's license policy, and this agreement has been documented and archived.
  3. Any other legal checks such as trademark and patent.The project has checked for inappropriate use of trademark or patents and documented the result of such checks.Cameron Shorter comment: This point needs to be definitive if it is included. Also, I think that it should be included in the "Provenance Review" checklist (which could be renamed "Legal Checklist"). And before it is included (which I think is a good idea long term), we need to do an audit of existing graduated projects to see if they would pass. Hence, I suggest that inclusion of this point be delayed until a future version of this document.
  4. The project has the ability to shut off downloads if a blocking legal issue is found.

Processes

Documented processes: Cameron Shorter comment: This line isn't required if you have "Processes" heading above.

  1. The project has code under configuration managementcontrol. Eg, subversion, git.
  2. The project uses an issue tracker and keeps the status of the issue tracker up to date.
  3. The project has documented its management processes. This is typically done within a Developers Guide or Project Management Plan.
    • The project has a suitable open governance policy ensuring decisions are made, documented and adhered to. This typically means a Project Management Committee has been established with a process for adding new members. A robust Project Management Committee will typically draw upon developers, users and key stakeholders from multiple organisations as there will be a greater variety of technical visions and the project is more resilient to a sponsor leaving.
    • The project uses public communication channels for decision making to maintain transparency. E.g. archived email list(s), archived IRC channel(s), public issue tracker.

#* See Documentation and Release Procedure for more information Cameron Shorter comment: This line is out of place in a check list (Also this doc is short enough that we don't need to reference another heading).

This checklist can only document process requirements; the goal of the above procedures is to check that the developer community works in a healthy way:

  • Open Development: open to input, new members and reaching consensus on decisions.
  • Ideally, the developers and Project Management Committee members come from a diversity of backgrounds as there will be a greater variety of technical visions and the project is more resilient to a sponsor leaving.

Cameron Shorter comment: Covered in list above.

Documentation

We ask that extra care be taken to ensure high quality documentation and releases:

  1. The project has user documentation:
    • Including sufficient detail to guide a new user through performing the core functionality provided by the application.
  2. The project has developer documentation:
    • Including checkout and build instructions.
    • Including commented code, ideally published for developer use. Examples: javadocs for Java applications, or Sphinx documentation for Python applications.
    • Providing sufficient detail for an experience programmer to contribute patches or a new module in accordance with the project's programming conventions.

Release Procedure

It is not enough to make and document a release; the goal of the above checklist is to focus team reliability:

  • Ideally we would like a new developer to walk up; follow the instructions and correctly engage the community to build a release

In order to maintain a consistent level of quality, the project should follow defined release and testing processes.

  1. The project followshas a defined release process:
    • Which includes execution of the testing process before releasing a stable release.
  2. The project has an automated build process. The project follows a documented testing process: manages quality
    • Ideally, this includes both automated and manual testingan automated test system.
    • Ideally this includes documentation conformance to set quality goals, such as reporting Percentage Code Coverage of Unit Tests.
  3. Release and testing processes provide sufficient detail for an experienced programmer to follow.
  • Cameron Shorter comment: At a later stage, it would be good to expect OSGeo projects to maintain a periodic stable release schedule, ideally linked in with distribution release cycles. However, I don't think we have reached that level of maturity across our projects yet.
  • Jody Garnett comment: You will need an OSGeo project as a good example before asking for a Quality Process. Example: GeoTools mandates modules obtain 40% code coverage prior to being published

Community

The Foundation is made up of a number of committees, projects and local chapters. This section gathers up information these groups have requested from projects in incubation. Participation is optional but recommended.

Board

The OSGeo Board is responsible for all that goes on here; they do ask that the project make available:

  1. A Project Officer as a contract point
    • This person is established when the incubation committee recomends the project for graduation
    • Your community can change the project officer as needed (just add an agenda item to the next board meeting so they can recognise the change of officer).

Marketing

Access to the Marketing_Committee and promotion is one of the key benefits of joining the foundation - please help them out with the following information.

  1. Requested from the incubation projects (for details see Marketing Artefacts):
    • Application Overview
    • Application Quick Start
    • Logo
    • Graphical Image
  2. Marketing materialartefacts have been created about the project forin line with the incubation criteria listed in the OSGeo Marketing Committee's Marketing Artefacts. This lists the documentation requirements for OSGeo-Live. (can we assume pdf handout, presentation slides and a feature matrix?)
  3. Stable version(s) of executable applications are bundled with appropriate distributions, (In most cases, this will at least include OSGeo-Live, but may also include DebianGIS, UbuntuGIS, and/or osgeo4w ms4w, etc.)

Projects

Projects do not exist in isolation; and are expected to communicate and collaborate on key issues. As an example the PostGIS release procedure asks that the release be checked with MapServer, GeoServer and others.

SAC

The System Administration Committee is available to help infrastructure and facilities. Information for this committee is collected as part of the Project Status Template.

  • projectname.osgeo.org
  • OSGeo issue tracker
  • OSGeo mailing list
  • OSGeo svn
  • downloads.osgeo.org