Release Train
Shipping on a fixed schedule whether or not a given feature is ready, so features that miss one release simply wait for the next instead of holding everyone back.
A release train ships on a fixed schedule. The train leaves on time, and whatever is ready gets on board. A feature that isn't finished doesn't delay the release. It waits for the next train, which is never far away. The alternative, feature-based releasing, waits until a planned set of features is complete, and in practice tends to slip repeatedly as one late feature holds up all the finished ones, the pattern Hofstadter's Law predicts.
Web browsers made the model famous. Chrome shipped a new stable version every six weeks from 2010 and moved to four weeks in 2021. Firefox adopted rapid release in 2011, after Firefox 4 took more than a year, and now also ships every four weeks. Rust has released a new stable compiler every six weeks since 1.0 in 2015. Ubuntu releases every April and October, with a long-term support release every two years, and the Linux kernel ships roughly every nine or ten weeks after a two-week merge window.
The mechanics usually look like this:
- Channels. Code moves through nightly, beta, and stable channels in step. Each new release promotes the beta to stable and the nightly to beta, so every change gets one full cycle of wider testing before it ships, a broad cousin of a Canary Release.
- Release branches. At a cutoff date, a branch is cut from trunk and stabilized. Only fixes are allowed in, usually by Cherry-Pick from the main line, while new work continues on trunk, a common Branching Model for scheduled releases.
- Flags for unfinished work. Incomplete features ship disabled behind a Feature Flag, so the code can merge early, as Trunk-Based Development encourages, without being exposed.
Predictability is the main benefit. Users, downstream packagers, and documentation teams know when the next version arrives. Missing a train costs weeks, not months, which removes the pressure to rush a feature in and lowers the stakes of each release. Smaller, regular releases also make regressions easier to trace. Each Changelog entry stays readable, and version numbers under Semantic Versioning advance steadily.
The costs are real. Some features can't be split to fit a cycle, and users can tire of constant updates. Long-term support releases exist to give organizations something that changes slowly, and maintaining them multiplies the backporting work. Deprecation policies are usually stated in trains: a feature is warned about in one release and removed a fixed number of releases later.
A release train is not a Merge Train, which queues pull requests so each is tested against the ones ahead of it, and it is distinct from a Rolling Release, which has no versions at all. Organizations that deploy web services many times a day with Continuous Deployment have effectively shrunk the train to a single car.
See also1
Linked from7
- Branching ModelVersion Control & Delivery
The convention governing what branches exist, what they mean, and how work reaches production.
- ChangelogVersion Control & Delivery
A curated, human-readable record of the notable changes in each version of a project, written for the people who use it rather than the people who built it.
- Cherry-PickVersion Control & Delivery
Copying the change from one commit onto another branch as a new commit, the standard way to backport a fix without merging everything else that came with it.
- Long-Term SupportVersion Control & Delivery
A release line that receives security and bug fixes for years instead of months, letting users who value stability skip the constant upgrade treadmill.
- Merge TrainVersion Control & Delivery
Validating changes against the state they will actually merge into, in order, rather than in isolation.
- Rolling ReleaseSystems & Tooling
A distribution model that ships updates continuously instead of in versioned batches, trading stability for currency.
- Semantic VersioningVersion Control & Delivery
A version-numbering convention where the number communicates the kind of change.