General Principles of Incubation
This document is meant to be a guide to the incubation process in general. The goal is to introduce you to the concept of incubation in open source and how we do it here at OSGeo.org. It is currently a work in progress.
Open Source (OS) is often associated with anarchy or certain rights to do as you please. However, software is complex, hard to manage, and most software projects are prone to total failure or riddled with debilitating bugs. The story is true in OS as well as commercially produced software. The simplistic view is that software is software. The primary difference between OS and commercial software is that in OS, we can all see the code and in some cases see the process of code creation.
The key to success for software is elusive. There is no silver bullet. However, we can say that there are a few things that can contribute to success:
* Some type of leadership and/or decision process * A process for changes to the code * Documentation (design and end-user docs)
In addition, software is useless without end-users, so we want to ensure that the project targets the end-user. This also helps by reducing the time that the project developers have to spend on support. Here are a few things important to end-users:
* End-user documentation * user email lists for supporting user questions * Issue Management (on OSGeo we user Project Tracker) * Home page and content (including documentation) * Simple to use downloads with automated installation
In addition to these OS issues, the OSGeo Foundation has a few things that need to be done:
* Intellectual Property verification of ownership and choice of OS license * Contact with owners of the project * A review of the merits of the project and if it is worthy of hosting at OSGeo.org * Ensuring that the project is healthy
Back to the subject of Incubation. Incubation is aimed at getting the above items to be done in some manner. The actual processes, content, and organization of the OS project is less important in this process as the actual execution and verification that these things are done. Incubation is meant to ensure that this stuff gets done.