My Digital Garden

Branch by abstraction

Branch by Abstraction

An approach to large-scale change in a codebase that allows ongoing releases whilst the change is in progress.

  • assume we have client code (dependent) and supplier code (dependency)
  • introduce abstraction layer between client and supplier by modifying both
  • develop new supplier code
  • migrate client code to use the new supplier code via the abstraction layer
  • remove old supplier code
  • (optional) remove abstraction layer


Paul Hammant wrote about "Introducing Branch By Abstraction", 2007 blog but credits Stacey Curl with coining the phrase

Martin Fowler simplified and promoted the phrase in ~2014 page