Development Model

From PioneerWiki
Revision as of 00:33, 7 September 2012 by Philbywhizz (talk | contribs) (Import of development model)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Pioneer's primary repository is hosted at To do any hacking you need your own clone of the repository. We recommend that you host your own repository on Github by forking the primary repository as we make heavy use of Github's features, but in the finest git tradition you're welcome to manage your copy of the code as you please.

Getting your changes into Pioneer

Create feature branch

Get your master copy up to date with the central repository, and create a branch for whatever it is that you're working on.

Implement feature

Hack hack hack! This is the fun bit! Its recommended you stay in close contact with the other developers, either via IRC or the mailing list, to make sure that your work fits with the rest of the project.

Request merge

Once your code is ready you need to request that it be merged. If you're using Github, the standard mechanism is a pull request. This creates an issue in the issue tracker so your request doesn't get lost. If you're not using Github you should manually create an issue, point to a place where your repository can be accessed and the SHA1 of the branch head you want merged. We prefer the SHA1 over the symbolic ref so we can be sure that we're reviewing the same code.


Once you've requested a merge someone will review your code. This is the most important part of the process. We insist on a review for two reasons:

  • Ensuring that the codebase remains consistent and there are no glaringly obvious bugs or structural defects in your code
  • Giving the reviewer an opportunity to learn your code and the parts of the codebase you changed

For small changes the review will often be a quick nod from someone in IRC, possibly even the merge manager doing the review at the same time as the merge. Larger changes will require a more thorough review, possibly by more than one person (if an expert in a particular area is required).

When the review is completed the reviewer should make a note on the relevant issue to indicate the branch is ready for merge.

If the change does not pass review then the reviewer should note the problems in the issue. You should go back and fix the things that the reviewer flagged as problems and then update the issue/pull request with the new SHA1. The original reviewer should take the lead on follow-up reviews to make sure that all the original problems are addressed.


Once the review is complete the merge manager will complete the merge and push an updated master. Congratulations, your code is now a part of Pioneer!

Release process

From alpha 11 onwards Pioneer works on a timeboxed release schedule. Releases occur on the second Friday of each month. A release branch is created one week before this release. No new development is accepted onto this branch - only critical bugfixes and documentation updates.

Projected release dates
Release Freeze date Release date
Alpha 14 2 September 9 September
Alpha 15 7 October 14 October
Alpha 16 4 November 11 November
Alpha 17 2 December 9 December
Alpha 18 6 January 13 January

need to update this table Philbywhizz 17:33, 6 September 2012 (PDT)


On the freeze date the release manager will create a new branch for the release. Development can continue according to the normal development process and code will be merged to master as normal. No new features will be included on the release branch except for critical bugfixes (as determined by the development team).

The main purpose of the release branch is to give us time to test, update docs and prepare for release.


Things that need to be done for release:

  • Ensure the Changelog, AUTHORS, README and other docs are up to date.
  • Do the builds
  • Test the builds. This includes making sure they run and making sure all the necessary files are included.
  • Upload
  • Update the download page with links, MD5 sums and the change log
  • Post announcements to:
    • news page
    • forum
    • page