Note · DevOps
Trunk-Based Development Is Not About the Trunk
The criticism of long-lived branches is usually framed as a criticism of the branch. The actual problem is batch size. The trunk is just where batch size becomes visible.
The criticism of long-lived branches is usually framed as a criticism of the branch. Branches go stale. Branches conflict. Branches diverge. All true. None of it is the point.
The actual problem with a long-lived branch is the batch size it represents. A branch that has been alive for two weeks is, by definition, two weeks of work that has not been integrated. Two weeks of decisions the rest of the team cannot see. Two weeks of merge-time risk accumulating in one place.
Trunk-based development does not solve this by deleting branches. It solves it by forcing the batch to stay small enough that the question does this branch still belong to today? has an answer.
The same argument runs in reverse for short-lived branches. A branch that lives for two hours is fine. The work fits in a meeting. The conflicts are visible. The integration cost is small. The “branch” is barely a noun — it is a workspace, not an artifact.
What people are usually arguing against when they argue against feature branching is long batches with the word “branch” attached. The branch is a measurable proxy for batch size, and the measurement is what makes the practice possible. Without that proxy — without a way to ask how long has this been outside trunk? — the batch hides.
The lineage is unsurprising. Lean software development took batch size from manufacturing and named it as one of the seven principles. Single-piece flow is the same idea applied to assembly lines. A car body that sits between stations for an hour costs more than a car body that moves every fifteen seconds. The cost is not in the sitting — it is in the work-in-progress accumulating across the line.
So the trunk in trunk-based development is not the practice. The trunk is the measurement surface — the place where batch size becomes visible. The practice is: keep the batch small enough that integration is cheap.
If branches existed but every team integrated to trunk every four hours, the discipline would be the same. The word would just be different.