jargon

Comparison

Branch by abstractionvsExpand and contract

Branch by abstraction

you put an interface in front of the old code, added the new one behind the same interface, and switched with a flag.

Making a large change on the main branch by introducing an abstraction over the existing implementation, building the replacement behind it, and switching over. It exists because the alternative — a long-lived branch for a big migration — reliably ends in a merge nobody can review. The abstraction is temporary and should be removed once the old path is gone, which is the step most teams forget.

Full entry →

Expand and contract

you add the new column, write to both, backfill, switch reads, and only remove the old one in a later deploy.

The multi-step pattern for making a breaking change safely: expand the schema or contract additively, migrate over, then contract by removing the old form once nothing uses it. Each step is independently deployable and reversible. It takes three deploys instead of one, which is the price of never having a window where old and new code cannot coexist.

Full entry →

Related comparisons