Difference between revisions of "GeoNode Incubation Checklist"

From OSGeo
Jump to navigation Jump to search
(Created page with "= Document Status = '''Version''': 2.0 '''Last Updated''': November 2015. '''Status''': Draft = Purpose = The purpose of this checklist is to determine whether an Incubat...")
 
 
(16 intermediate revisions by 2 users not shown)
Line 3: Line 3:
 
'''Version''': 2.0
 
'''Version''': 2.0
  
'''Last Updated''': November 2015.
+
'''Last Updated''': October 2016.
  
 
'''Status''': Draft
 
'''Status''': Draft
Line 30: Line 30:
 
The project has demonstrated that it has an open, active and healthy user and developer community:
 
The project has demonstrated that it has an open, active and healthy user and developer community:
 
# Open: projects are expected to function in an open and public manner and include:
 
# Open: projects are expected to function in an open and public manner and include:
#* Open source license(s), ''' '''
+
#* Open source license(s), '''GeoNode uses Gnu General Public License version 3 or greater. '''
#* Open communication channels, ''' '''
+
#* Open communication channels, '''GeoNode uses OSGeo hosted mailing lists at http://lists.osgeo.org/mailman/listinfo/geonode-devel and http://lists.osgeo.org/mailman/listinfo/geonode-users for Development and User Support. There are also more direct channels of open communication like [irc://irc.freenode.net/geonode IRC] and [https://gitter.im/GeoNode/ Gitter]. '''
#* Open decision making process, ''' '''  
+
#* Open decision making process, ''' GeoNode has extensive documentation on how the community works at http://docs.geonode.org/en/latest/organizational/index.html#contributing. GeoNode generally works by consensus and seldomly resorts to taking things to the PSC for vote. '''  
# Active and healthy community: ''' '''
+
# Active and healthy community: '''GeoNode has developers and users from many different organizations https://github.com/GeoNode/geonode/blob/master/AUTHORS'''
#* The project should have a community of developers and users who actively collaborate and support each other in a healthy way. ''' '''<br/><i>Eg. collaboration on project activities such as testing, release and feature development.</i>
+
#* The project should have a community of developers and users who actively collaborate and support each other in a healthy way. '''GeoNode has had several code sprints to bring many of the developers together across organizations working with GeoNode. GeoNode actively communicate using the mailing lists as well as other realtime communication such as [https://gitter.im/GeoNode/ Gitter].'''<br/><i>Eg. collaboration on project activities such as testing, release and feature development.</i>
#* Long term viability of the project is demonstrated by showing participation and direction from multiple developers, who come from multiple organizations. ''' '''<br/> <i> Eg. The project is resilient enough to sustain loss of a developer or supporting organization, often referred to as having a high [http://en.wikipedia.org/wiki/Bus_factor bus factor]. Decisions are made openly instead of behind closed doors, which empowers all developers to take ownership of the project and facilitates spreading of knowledge between current and future team members.</i>
+
#* Long term viability of the project is demonstrated by showing participation and direction from multiple developers, who come from multiple organizations. ''' GeoNode has over 30 core developers who come from both direct users of the software from organizations like the World Bank and US Department of State as well as various professional service providers including Terranodo, Boundless, GeoSolutions, and Open Geode. '''<br/> <i> Eg. The project is resilient enough to sustain loss of a developer or supporting organization, often referred to as having a high [http://en.wikipedia.org/wiki/Bus_factor bus factor]. Decisions are made openly instead of behind closed doors, which empowers all developers to take ownership of the project and facilitates spreading of knowledge between current and future team members.</i>
  
 
== Copyright and License ==
 
== Copyright and License ==
  
 
We need to ensure that the project owns or otherwise has obtained the ability to release the project code by completing the following steps:
 
We need to ensure that the project owns or otherwise has obtained the ability to release the project code by completing the following steps:
# All project source code is available under an Open Source license. ''' '''
+
# All project source code is available under an Open Source license. ''' All GeoNode code is released under the Gnu General Public License version 3 or greater '''
# Project documentation is available under an open license, such as Creative Commons. ''' '''
+
# Project documentation is available under an open license, such as Creative Commons. ''' All documentation is released under the Creative Commons Share Alike License'''
# The project code, documentation and data has been adequately vetted to assure it is all properly licensed, and a copyright notice included, as per a [http://www.osgeo.org/incubator/process/codereview.html Provenance Review]. ''' '''
+
# The project code, documentation and data has been adequately vetted to assure it is all properly licensed, and a copyright notice included, as per a [http://www.osgeo.org/incubator/process/codereview.html Provenance Review]. ''' See https://wiki.osgeo.org/wiki/GeoNode_Provenance_Review#GeoNode_Provenance_Review '''
# The project maintains a list of all copyright holders identified in the Provenance Review Document. ''' '''
+
# The project maintains a list of all copyright holders identified in the Provenance Review Document. ''' Copyright is held by OSGeo. '''
# All code contributors have agreed to abide by the project's license policy, and this agreement has been documented and archived. ''' '''
+
# All code contributors have agreed to abide by the project's license policy, and this agreement has been documented and archived. '''GeoNode has adpoted a Contributor License Agreement and collecting signatures from past contributors. Future contributions will require a signed CLA '''
  
 
== Processes ==
 
== Processes ==
  
# The project has code under configuration management. ''' '''<br/><i>Eg, subversion, git.</i>
+
# The project has code under configuration management. ''' All GeoNode code is on GitHub at http://github.org/geonode'''<br/><i>Eg, subversion, git.</i>
# The project uses an issue tracker and keeps the status of the issue tracker up to date. ''' '''
+
# The project uses an issue tracker and keeps the status of the issue tracker up to date. ''' GeoNode uses [https://github.com/GeoNode/geonode/issues GitHub Issues] for tracking '''
# The project has documented its management processes. ''' '''
+
# The project has documented its management processes. ''' GeoNode has extensive documentation on all internal process maintained at http://docs.geonode.org/en/master/organizational/index.html '''
#* About GeoNode Technical decisions: ''' '''
 
#* Suggesting new features: ''' '''
 
#* Developing contributions: ''' '''
 
#* Commiters guide: ''' '''
 
#* Developers guide: ''' '''
 
#* Documentation guide:''' '''
 
 
<br/><i>This is typically done within a Developers Guide or Project Management Plan.</i>
 
<br/><i>This is typically done within a Developers Guide or Project Management Plan.</i>
#* The project has a suitable open governance policy ensuring decisions are made, documented and adhered to in a public manner. ''' '''<br/>
+
#* The project has a suitable open governance policy ensuring decisions are made, documented and adhered to in a public manner. ''' GeoNode as a Project Steering Committee made up of the 7 highest committers over the past 365 days. '''<br/>
#* The project uses public communication channels for decision making to maintain transparency. ''' '''<br/><i> E.g. archived email list(s), archived IRC channel(s), public issue tracker.  </i>
+
#* The project uses public communication channels for decision making to maintain transparency. ''' All decision making is through motions archived on the main development mailing list http://lists.osgeo.org/mailman/listinfo/geonode-devel'''<br/><i> E.g. archived email list(s), archived IRC channel(s), public issue tracker.  </i>
  
 
== Documentation ==
 
== Documentation ==
  
# The project has user documentation: ''' '''
+
# The project has user documentation: ''' Extensive user documentation is available at http://docs.geonode.org/en/latest/index.html '''
 
#* Including sufficient detail to guide a new user through performing the core functionality provided by the application.
 
#* Including sufficient detail to guide a new user through performing the core functionality provided by the application.
# The project has developer documentation: ''' '''
+
# The project has developer documentation: ''' Extensive developer documentation is available at http://docs.geonode.org/en/latest/organizational/index.html#contributing'''
 
#* Including checkout and build instructions. ''' '''
 
#* Including checkout and build instructions. ''' '''
 
#* Including commented code, ideally published for developer use. ''' ''' <br/><i>Examples: javadocs for Java applications, or Sphinx documentation for Python applications.</i>
 
#* Including commented code, ideally published for developer use. ''' ''' <br/><i>Examples: javadocs for Java applications, or Sphinx documentation for Python applications.</i>
#* Providing sufficient detail for an experience programmer to contribute patches or a new module in accordance with the project's programming conventions. ''' '''  
+
#* Providing sufficient detail for an experience programmer to contribute patches or a new module in accordance with the project's programming conventions. ''' '''
  
 
==Release Procedure==
 
==Release Procedure==
Line 74: Line 68:
 
In order to maintain a consistent level of quality, the project should follow defined release and testing processes.
 
In order to maintain a consistent level of quality, the project should follow defined release and testing processes.
  
# The project follows a defined release process: ''' '''
+
# The project follows a defined release process: ''' Yes, GeoNode follows a fully documented and automated release process. The release process is covered in GeoNode's [http://docs.geonode.org/en/master/tutorials/advanced/geonode_settings/release.html documentation].'''
#* Which includes execution of the testing process before releasing a stable release. ''' '''
+
#* Which includes execution of the testing process before releasing a stable release. ''' Yes, since all accepted commits in GeoNode's git are only accepted if they pass the automated testing (see next item), the released version is fully tested.'''
# The project follows a documented testing process. ''' '''<br/><i>This includes manual testing</i><br/>
+
# The project follows a documented testing process. ''' Yes, GeoNode follows a Test Driven Development (TDD) model which is based on Continuous Integration through GitHub's [https://travis-ci.org/GeoNode/geonode Travis CI]. The automated testing process is extensively covered in GeoNode's [http://docs.geonode.org/en/master/tutorials/devel/geonode_testing/index.html documentation]. Also, the unit tests can be [http://docs.geonode.org/en/master/tutorials/devel/geonode_testing/index.html#unit-tests executed locally] from the developers.'''<br/><i>This includes manual testing</i><br/>
# Release and testing processes provide sufficient detail for an experienced programmer to follow. ''' '''.
+
# Release and testing processes provide sufficient detail for an experienced programmer to follow. ''' Yes, the release process is [https://github.com/GeoNode/geonode/blob/master/pavement.py#L603 fully automated] and easy to be followed for an experienced programmer. Please see the GeoNode [http://docs.geonode.org/en/master/tutorials/devel/release/release.html#make-the-release release documentation]'''.
  
 
= OSGeo Committees and Community =
 
= OSGeo Committees and Community =
Line 87: Line 81:
 
The OSGeo [[Board]] holds ultimate responsibility for all OSGeo activities. The Board requests:
 
The OSGeo [[Board]] holds ultimate responsibility for all OSGeo activities. The Board requests:
  
# A project provide a Project Officer as a contact point: '''Yes'''
+
# A project provide a Project Officer as a contact point: '''Yes, Jeffrey Johnson will act as the OSGeo Project Officer'''
 
#* The Project Officer should be listed at: [[Contacts#Software_Projects|Project Officer]]
 
#* The Project Officer should be listed at: [[Contacts#Software_Projects|Project Officer]]
 
#* This person is established when the incubation committee recommends the project for graduation
 
#* This person is established when the incubation committee recommends the project for graduation
Line 97: Line 91:
  
 
# Marketing artefacts have been created about the project in line with the incubation criteria listed in the OSGeo Marketing Committee's [http://wiki.osgeo.org/wiki/Marketing_Artefacts Marketing Artefacts]. This lists the documentation requirements for [http://live.osgeo.org OSGeo-Live]. Marketing Artefacts include:
 
# Marketing artefacts have been created about the project in line with the incubation criteria listed in the OSGeo Marketing Committee's [http://wiki.osgeo.org/wiki/Marketing_Artefacts Marketing Artefacts]. This lists the documentation requirements for [http://live.osgeo.org OSGeo-Live]. Marketing Artefacts include:
#* Application Overview ''' '''
+
#* Application Overview ''' [https://live.osgeo.org/en/overview/geonode_overview.html GeoNode Overview] in OSGeo-Live documentation '''
#* Application Quick Start ''' '''
+
#* Application Quick Start ''' GeoNode [https://live.osgeo.org/en/quickstart/geonode_quickstart.html Quickstart] in OSGeo-Live documentation and [http://docs.geonode.org/en/latest/tutorials/overview_and_ref/introduction/geonode_quickstart.html Quickstart] in GeoNode documentation '''
#* Logo ''' '''
+
#* Logo ''' GeoNode [https://github.com/GeoNode/geonode/raw/master/docs/img/logo.png logo] '''
 
#* Graphical Image ''' '''
 
#* Graphical Image ''' '''
# Ideally, stable version(s) of executable applications are bundled with appropriate distributions. '''Yes: OSGeo-Live.'''<br/><i>In most cases, this will at least include [http://live.osgeo.org OSGeo-Live], but may also include [http://wiki.debian.org/DebianGis DebianGIS], [https://wiki.ubuntu.com/UbuntuGIS UbuntuGIS], and/or [http://trac.osgeo.org/osgeo4w/ osgeo4w] [http://www.maptools.org/ms4w/ ms4w], etc.)</i>
+
# Ideally, stable version(s) of executable applications are bundled with appropriate distributions. '''Yes: GeoNode is included in OSGeo-Live since 2013. Software packages are available in Ubuntu's [https://launchpad.net/~geonode Launchpad] and OpenSUSE's [https://build.opensuse.org/project/show/home:tzotsos:geonode Open Build Service], as well as in [https://pypi.python.org/pypi/GeoNode Python Package Index] (Pypi)'''<br/><i>In most cases, this will at least include [http://live.osgeo.org OSGeo-Live], but may also include [http://wiki.debian.org/DebianGis DebianGIS], [https://wiki.ubuntu.com/UbuntuGIS UbuntuGIS], and/or [http://trac.osgeo.org/osgeo4w/ osgeo4w] [http://www.maptools.org/ms4w/ ms4w], etc.)</i>
  
 
== Projects ==
 
== Projects ==
  
Projects do not exist in isolation; and are expected to communicate and collaborate on key issues.
+
GeoNode actively uses and interacts with the GeoServer, PostGIS and pycsw projects.
 
 
<i>As an example the PostGIS release procedure asks that the release be checked with MapServer, GeoServer and others.</i>
 
  
 
== SAC ==
 
== SAC ==

Latest revision as of 06:40, 22 October 2016

Document Status

Version: 2.0

Last Updated: October 2016.

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.

See also:

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"
Open Source License
a license recognized by the Open Source Initiative

Incubation Checklist

Open

The project has demonstrated that it has an open, active and healthy user and developer community:

  1. Open: projects are expected to function in an open and public manner and include:
  2. Active and healthy community: GeoNode has developers and users from many different organizations https://github.com/GeoNode/geonode/blob/master/AUTHORS
    • The project should have a community of developers and users who actively collaborate and support each other in a healthy way. GeoNode has had several code sprints to bring many of the developers together across organizations working with GeoNode. GeoNode actively communicate using the mailing lists as well as other realtime communication such as Gitter.
      Eg. collaboration on project activities such as testing, release and feature development.
    • Long term viability of the project is demonstrated by showing participation and direction from multiple developers, who come from multiple organizations. GeoNode has over 30 core developers who come from both direct users of the software from organizations like the World Bank and US Department of State as well as various professional service providers including Terranodo, Boundless, GeoSolutions, and Open Geode.
      Eg. The project is resilient enough to sustain loss of a developer or supporting organization, often referred to as having a high bus factor. Decisions are made openly instead of behind closed doors, which empowers all developers to take ownership of the project and facilitates spreading of knowledge between current and future team members.

Copyright and License

We need to ensure that the project owns or otherwise has obtained the ability to release the project code by completing the following steps:

  1. All project source code is available under an Open Source license. All GeoNode code is released under the Gnu General Public License version 3 or greater
  2. Project documentation is available under an open license, such as Creative Commons. All documentation is released under the Creative Commons Share Alike License
  3. The project code, documentation and data has been adequately vetted to assure it is all properly licensed, and a copyright notice included, as per a Provenance Review. See https://wiki.osgeo.org/wiki/GeoNode_Provenance_Review#GeoNode_Provenance_Review
  4. The project maintains a list of all copyright holders identified in the Provenance Review Document. Copyright is held by OSGeo.
  5. All code contributors have agreed to abide by the project's license policy, and this agreement has been documented and archived. GeoNode has adpoted a Contributor License Agreement and collecting signatures from past contributors. Future contributions will require a signed CLA

Processes

  1. The project has code under configuration management. All GeoNode code is on GitHub at http://github.org/geonode
    Eg, subversion, git.
  2. The project uses an issue tracker and keeps the status of the issue tracker up to date. GeoNode uses GitHub Issues for tracking
  3. The project has documented its management processes. GeoNode has extensive documentation on all internal process maintained at http://docs.geonode.org/en/master/organizational/index.html


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 in a public manner. GeoNode as a Project Steering Committee made up of the 7 highest committers over the past 365 days.
    • The project uses public communication channels for decision making to maintain transparency. All decision making is through motions archived on the main development mailing list http://lists.osgeo.org/mailman/listinfo/geonode-devel
      E.g. archived email list(s), archived IRC channel(s), public issue tracker.

Documentation

  1. The project has user documentation: Extensive user documentation is available at http://docs.geonode.org/en/latest/index.html
    • Including sufficient detail to guide a new user through performing the core functionality provided by the application.
  2. The project has developer documentation: Extensive developer documentation is available at http://docs.geonode.org/en/latest/organizational/index.html#contributing
    • 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

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

  1. The project follows a defined release process: Yes, GeoNode follows a fully documented and automated release process. The release process is covered in GeoNode's documentation.
    • Which includes execution of the testing process before releasing a stable release. Yes, since all accepted commits in GeoNode's git are only accepted if they pass the automated testing (see next item), the released version is fully tested.
  2. The project follows a documented testing process. Yes, GeoNode follows a Test Driven Development (TDD) model which is based on Continuous Integration through GitHub's Travis CI. The automated testing process is extensively covered in GeoNode's documentation. Also, the unit tests can be executed locally from the developers.
    This includes manual testing
  3. Release and testing processes provide sufficient detail for an experienced programmer to follow. Yes, the release process is fully automated and easy to be followed for an experienced programmer. Please see the GeoNode release documentation.

OSGeo Committees and Community

The OSGeo Foundation is made up of a number of committees, projects and local chapters. This section gathers up information these groups have requested from OSGeo projects. These expectations are not mandatory requirements before graduation, but a project should be prepared to address them in order to be considered a good OSGeo citizen.

Board

The OSGeo Board holds ultimate responsibility for all OSGeo activities. The Board requests:

  1. A project provide a Project Officer as a contact point: Yes, Jeffrey Johnson will act as the OSGeo Project Officer
    • The Project Officer should be listed at: Project Officer
    • This person is established when the incubation committee recommends 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 OSGeo's Marketing_Committee and associated Marketing_Pipeline is one of the key benefits of joining the OSGeo foundation. The Marketing Committee requests:

  1. Marketing artefacts have been created about the project in line with the incubation criteria listed in the OSGeo Marketing Committee's Marketing Artefacts. This lists the documentation requirements for OSGeo-Live. Marketing Artefacts include:
    • Application Overview GeoNode Overview in OSGeo-Live documentation
    • Application Quick Start GeoNode Quickstart in OSGeo-Live documentation and Quickstart in GeoNode documentation
    • Logo GeoNode logo
    • Graphical Image
  2. Ideally, stable version(s) of executable applications are bundled with appropriate distributions. Yes: GeoNode is included in OSGeo-Live since 2013. Software packages are available in Ubuntu's Launchpad and OpenSUSE's Open Build Service, as well as in Python Package Index (Pypi)
    In most cases, this will at least include OSGeo-Live, but may also include DebianGIS, UbuntuGIS, and/or osgeo4w ms4w, etc.)

Projects

GeoNode actively uses and interacts with the GeoServer, PostGIS and pycsw projects.

SAC