Codeline per Release

Synopsis::Branches are created for each release development effort. Changes in early releases are propagated to later releases.

Intent
Release development is partially isolated to assure some stability within each release.

Motivation
Although later releases inevitably depend to some extent on earlier releases there is a need to isolate these later release efforts from the potentially destabilising influence of changes made in earlier releases. To control for this, releases are isolated on their own development branch.

Applicability
This pattern is broadly applicable to any development effort, but especially to large scale parallel developments where there is potential for interference form earlier releases. Codeline per Release is delivery centric, allowing some flexibility in the scheduling of delivery.

Also known as
No known aliases.

Structure
For each planned release, a codeline branch is created. Work is scheduled against the release and performed on the release's branch.



Release codeline branches can be created as needed. Typically an early branching or deferred branching approach is used consistently. In early branching, the release codeline branch is created as soon as the need for the release is identified. In deferred branching, the release codeline is created only when changes unique to the release are required.

Participants
For smaller projects, releases are coordinated by the project manager or release manager. On larger projects, release coordination is performed by a programme office and possibly a programme release manager, with each individual release being assigned its own release manager.

In both cases developers are assigned work on specific release codeline branches.

Collaborations
Coordination between release codeline branches is important. Ensuring that integration points are planned so that changes in earlier releases are efficiently integrated into later releases is vital.

Consequences

 * Additional integration effort is required.
 * Failing to plan integration between codeline branches can cause release delays.

Related patterns
The following patterns are variants of the pattern.
 * variant pattern::Codeline per Major Release

The following patterns are related to the pattern.
 * related pattern::Early Branching
 * related pattern::Parallel Maintenance and Development Lines
 * related pattern::Anti-Freeze Line
 * related pattern::Mainline
 * related pattern::Stable Receiving-Line
 * related pattern::LAG Line