Development Model

From PioneerWiki
Jump to: navigation, search

Pioneer's primary repository is hosted at https://github.com/pioneerspacesim/pioneer. 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.

Review

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.

Merge

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

Once pioneer was released as alphas with freezing period. This changed after alpha33.

Twice a day a complete build for Windows and Linux will be run and uploaded (though obviously not if no changes have been made). Version numbers are formatted like YYYYMM.BB, where BB is the "build number" for that month. So a build for today might be 201308.2. The latest build will always be linked from pioneerspacesim.net, and the last week's worth of builds will be archived, just in case.

To keep the changes visible, we'll be making a "what's new in Pioneer" post to this forum, the G+ page and a few other places at the start of each month with the changelog for the previous month.

Of course, the current changelog will always be available from the homepage and in the release archives proper.

This should mean that if you encounter a bug, the fix is available to you in an official, supported build as soon as possible.

We're aware that asking people to regularly download a 150-200MB archive is a bit of a stretch, so we're also looking at ways to reduce the amount of stuff you need to grab to get a new build..

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:
    • pioneerspacesim.net news page
    • google+
    • spacesimcentral.com forum
    • moddb.com page