The Rubinius Project does a majority of its work on the master branch. The goal is to keep master "clean" so that it always builds a working binary and provides a snapshot of the latest fixes and enhancements.
We recommend that committers who have read/write access to the repository do their work on a branch in their local repository. As the changes stabilize, they should be committed in two steps. The first step should commit the spec that highlights the behavior under construction while the second commit adds the behavior and allows the spec to pass.
After committing to the local repository's branch, the commit should be merged back to master and pushed to github. To avoid superfluous git merge messages, we ask that the committer first rebase the master branch prior to the merge.
Steps 9 through 15 can be automated via a script to save on all of that typing.