Downstream cost of feature branching

Earlier this week I mentioned the consequence of not fixing problems upstream.

A great example of this is the costs of long lived feature branches or long lived copies of a piece of software. Each copy has a set of isolated changes taking place. Integration is the upstream leak. Inevitably with many long lived copies of the system, integration becomes rather difficult, infrequent to say the least. Features take a long time to be developed and merged into the official product. When we no longer can depend upon the practice of frequently merging our work, Continuous Integration, we have to turn to other means to vet our work and release new features.

This quickly manifests itself in the consumers of the branched system. Consumers may need to begin work that depends on an upstream feature that has yet to be merged into the official product. Because upstream development is dragging on in isolated copies, the consumer may need to branch their code too, to take a dependency on the upstream copy. Now the consumer has two copies of their own system. Heaven forbid they have any downstream dependencies.