Hacking on the Ushahidi Platform

We use Phabricator for all project management, issue tracking, and code review. You can find our instance of "phab", as we call it internally, at https://phabricator.ushahidi.com/ After you have signed up for an account, please read the help guide and follow the instructions for setting up arc.

The master branch is considered "stable" in that the build should be passing and all tests should complete successfully. All development is done locally or through feature branches. All changes must be code reviewed through the Differential tool on phab. Each modification should be a complete unit of change and not break any test. Any new feature should come with a spec test, unit test, or feature test.

Progress Tracking / Workflow

Ushahidi practices the Agile method of development, with a continuously changing master branch and timed releases. New releases are packaged bi-weekly on Thursday afternoons (US/Eastern time). You can check what tasks are currently being worked on by following the project workboard on phab. Any task that is planned, but not yet being worked on, will be in the Backlog column. Tasks in the Next Release column are to be for the next release. Anything that has been shelved for a later date, or has very low priority, will be in the Bike Rack.

Bug Reports and Features

Bug reports should include:

Feature specifications are more loosely organized, but should always follow these rules:

Testing Changes

We prefer that tests are written before writing code, but we do not strictly enforce TDD. However, we do require that:

For testing, we use a mixture of phpspec, phpunit, and Behat for functional tests. We do not currently test the client-side JS code, but we plan to. (Recommendations on this are greatly appreciated!) See 3.x Testing for info on running the tests.