Subproject Line

Synopsis::Coordinating related sub-tasks when using Branch per Task or Branch per Major Task.

Intent
Provides a method of coordinating related sub-tasks when using related pattern::Branch per Task or related pattern::Branch per Major Task.

Motivation
When using Branch per Task or Branch per Major task and task may be identified that is sufficiently large that it makes sense to decompose it into several smaller, but codependent, sub-tasks. These sub-tasks may destabilise the main codeline is they are released into it individually. The Subproject Line pattern creates an isolated development codeline to coordinate the sub-tasks prior to their inclusion into the main codeline.

In the illustration above, the fix tasks are all closely related. Their release into the /dev_line could result in instability and cause problems such as build or compilation problems, or run-time issues with code dependencies.

Applicability
Any task large enough to be decomposed into separate but codependent sub-tasks.

Also known as
also known as::Sub-codeline, also known as::Change-line, also known as::Project Branch, also known as::Persistent Branch

Structure
A Sub-project codeline branch is created for the composite task. For each sub-task a codeline branch is created from the sub-project codeline branch and results from the sub-tasks are merged into the sub-project codeline branch where they are integrated and tested before being merged back to the main development codeline.



Participants
Sub-project lines may be small enough to the treated as composite tasks. Where they are more complex they should have their own related pattern::Codeline Policy and related pattern::Codeline Owner.

Collaborations
Testers and QA may be involved in assurance of the sub-project codeline even before it is integrated into the main development codeline.

Consequences

 * Additional cost of integration.
 * Related increase in testing and validation to assure the sub-project codeline before subsequent integration to the main codeline.
 * Stabilisation of main codeline.

Related patterns
The following patterns are variants of the pattern.
 * variant pattern::Personal Codeline
 * variant pattern::Experimental Codeline
 * variant pattern::Multi-Project Codeline

The following patterns are related to the pattern.
 * related pattern::Branch per Task
 * related pattern::Merge Early and Often
 * related pattern::Codeline Policy
 * related pattern::Codeline Owner
 * related pattern::Docking Line
 * related pattern::Policy Branch