We plan on leveraging the Agile development process, so that we can iterate quickly. We will initially have one week sprints while we get our bearings, and then move to two week sprints. We will begin each sprint with a sprint review, where we discuss where we are at and how things went, followed by sprint planning, where we make new, specific tasks for each of us, applying what we learned in the sprint review.
We will be using Git as our version control system and GitHub as our VCS host. Git is very friendly to Agile development as branching and merging is simple. We will have three kinds of branches:
- Stable branch - this is where stable, production-ready code is kept. We will only merge into master when we have “releases."
- Feature branches - Each team member will develop new features inside their own branch. This branch will usually be local to the developer’s machine and not exposed to the rest of the team (unless they need to pull in help from others).
- Development branch - As features are finished, they will be merged into the Development branch. Development is where everyone’s features come together to make sure they play nicely together.
GitHub will be hosting our central repository. GitHub also has several other features we will take advantage of.
We will be using Pivotal Tracker to track high-level features and user stories. Pivotal tracker has all the Scrum/Agile aspects we will need such as velocity tracking, backlog organization, and feature comments and discussions.
We will be using GitHub Issues for our issue tracking. GitHub Issues has many useful features such as: closing and referencing issues from commit messages, tagging, milestone grouping, bug assignment to particular person, email notifications, and Markdown commenting for richer conversations.
We plan to do regular code reviews for committed code, and we will use GitHub Pull Requests to facilitate this. Pull Requests have all the same features of GitHub Issues as well as: diffs of all changes made in a branch, commenting on specific lines of code in the diffs. We will not always be able to meet together for code reviews, and GitHub Pull Requests make asynchronous code reviews not only possible, but preferable.