There is more to open source than a licence. It is also a development methodology. This page links to various resources about different aspects of open source development.
Contents
1. Project Creation
"By giving off this aura of preparedness, the project sends out a message: "Your time will not be wasted if you get involved," which is exactly what people need to hear." (Producing Open Source. Chapter 2)
Open source is often sustained by sharing the costs of development across a number of collaborating partners. As a project gets larger it is often desirable to attract new partners. There are usually three important steps in attracting a new partner:
- attract interested parties
- show them the project outputs are useful
- encourage active participation
All three of there steps are carried out wing online resources. The following sections describe the key tools at your disposal.
1.1. Documentation
Documentation is key to the success of your project. If people cant understand what your project aims to achieve they will take no interest. If potential users can't get to grip with the software then they will simply leave. If your potential developers do not know how to contribute they won't bother.
In the online world documentation is delivered through your website. We recommend that you use a website management look that allows you to repackage your documentation in multiple ways. For example, you will need an online version, a printed version and a version to bundle with your releases.
You will need four main sections within your documentation:
MarketingDocumentation consists of materials intended to attract potential users
UserDocumentation consists of materials aimed at guiding users through common tasks.
GovernanceDocumentation contains materials aimed at showing users and developers how to contribute to the project
DeveloperDocumentation consists of materials aimed at helping people improve the software and its documentation
1.1.1. External Links
1.2. Mailing Lists
2. Code Development
2.1. Version Control
UsingSubversion - Subversion is a very common version control system that allows multiple people to work simultaneously on the same documents and code.
SoftwarePatch - Working with patches
2.2. Team Communications
SVN Commit Messages - SVN can send out emails on every commit, great for peer review and keeping up to date
3. IPR Management
ContributorLicenceAgreements - a contributor licence agreement helps ensure that all contributions to the project can legally be included
4. Build Automation
4.1. Dependency Management
5. Issue/Bug/Patch Tracking
6. Quality Control
Quality is key. This does not mean shipping without bugs, that is close to impossible, what it does mean is shipping with no known bugs (actually shipping early releases with known. but manageable bugs can be ok too). Testing is the way to ensure you are shipping (near) bug free code. Testing falls into two camps, user testing and automated testing. Both have their strengths and weaknesses.
6.1. User Testing
6.2. Automated Testing
EMMA code coverage plugin for Eclipse
6.3. Coninuous Integration
Hudson an extensible continuous integration engine
7. Release Early, Release Often
Open source development is all about attracting users and developers. It is therefore important to release the software early, and as frequently as possible. Many people have difficulty with this concept, asking questions like "won't users be put off by the bugs?" Well, no, that is the point of open source, we are honest about our bugs and, if it really bothers you, you can fix it yourself (or pay someone to fix it).
Bugs exist in all software, not just open source. As long as you don't claim the software is more complete than it really is users will be happy to work around its limitations, safe in the knowledge that it is temporary.
More on ReleaseEarlyReleaseOften.
7.1. Release Management
Releasing Open Source Software
Wikipedia on Release Management Method
Release Management Within Open Source Projects by Justin R. Erenkrantz
Software Release Practice HOWTO by Eric Steven Raymond
7.2. Release Packaging
You should make the installation of your software as easy as possible, ideally users should be able to download and install from a binary, whilst developers should have a clear document describing how to configure their environment.
7.2.1. Installers
IzPack - an installer generator for the Java platform.
8. Related Documents
OpenAndAgileDevelopment - notes on what an open and agile development process would look like

