Overview

Phases of a Release

  • Release day is January 28
  • Open coding occurs from January 4-15
  • Feature freeze starts on January 18
  • Code freeze and QA start on January 25

Release Flow

Planning a Release

  1. Set a release date. Work backwards from here. It's generally good form to not choose a Friday or a holiday. Determine other key dates:
  2. Create a release wish list. This contains the functionality we'd like to add to the release.
  3. Tasking: find out how much work we can actually get done in time for the release
  4. Define the release plan
  5. Start the process of integration right away:

A suggested release schedule to get us started:

  • Release a new version of "Project" each month, on the last Thursday of the month.
  • Code freeze and QA testing occurs three days before, on the last Monday of the month.
  • Feature freeze starts a week earlier, on third Monday of the month

Feature Freeze

In some ways the phrase "Feature Freeze" is a misnomer as it is a stage and not a moment in time (i.e. something still and frozen).

The feature freeze stage is a checkpoint in the release process; it's an opportunity to slow down, reassess priorities midway through the release cycle, and focus on whole-product integration of the most important features and fixes. The feature freeze stage is a natural check-in point to see where we're at and ensure our progress is well-communicated. This stage involves:

Code Freeze and QA

The code freeze and QA phase is an opportunity for the whole community to focus on the quality and details of the product. This phase involves:

Who Does What?

Every phase of this release process inevitably involves a lot of community input and involvement. This chart outlines who might help to keep the release flow going by organizing a particular activity.

Phase

Who Helps Organize It?

Setting release dates

Release Manager with Team

Creating a wish list

Release Manager with Team

Tasking

Each developer

Define release plan

Release Manager with Team

Start integrating

All developers

QA testing

QA lead with the whole community

Prerequisites for Successful Releases

  1. A clear, well-communicated, mutual understanding of key milestones, phases and dates for a release
  2. A clear release checklist, describing:
  3. The ability to create integrated builds on a constant basis
  4. Enough information and/or collaborative availability that teams can cross architectural boundaries to help out when needed