The Programmer Workflow in Stella Marina

  1. When someone starts developing a feature, they write a message in #tasks explaining the feature.
  2. They develop the feature on a separate branch, keeping it up-to-date.
  3. When finished, they announce it in #tasks.
  4. A verifier replies to the message, checks out the branch and tests the feature.
  5. If a bug is detected, the branch is not merged until it is fixed.
  6. Once the feature has been successfully verified, it is merged and pushed upstream.

Why this workflow

This workflow is meant to keep the main branch in a testable and working state. The problem with having features that are only halfway finished on the main branch is that they often get in the way of productive playtesting. When a build of the game has been scheduled, nobody wants to be the person who has to sit down and write quick work-arounds and patches to make the build as bug-free as possible before the deadline (I've been there!)

Reflections

In Stella Marina we were 5 programmers, and while the workflow fulfilled its purpose, it may have been exaggerated. Us being a pretty small group, there is always the better solution of simply telling each other about problems that we are having, and solving them proactively.

That said, it still worked very well, and having a central text channel where it was easy to see who was doing what was a relief in a lot of ways. I'm confident that this is a good way to work for bigger projects.

Improvements

One issue that I noticed was that verifications tended to be postponed or forgotten. This is bad because a branch that is not merged becomes increasingly difficult to merge as the main branch diverges from it.

One solution to this could be to name a specific person responsible for verifying a finished task. The decision on who verifies each task would be up to the developers.