Three years of bug fixes. Four years of security fixes. Symfony 2.7 came out this weekend, and that is the line from the announcement I care about. The changelog has new things in it, but the important word is on the label: LTS.

For a pet project this is boring. For a product with paying users and a team, this is the actual feature.

A big application does not upgrade for fun. Every framework upgrade is testing time, regression risk, and a sprint that produces nothing visible. Business asks a fair question: what do we get. “Newer version” is not an answer. “We keep receiving security fixes until 2018 without touching anything” is.

So latest versus LTS is a bet on how often you want to pay the upgrade tax, and taste has little to do with it. Small team, product that changes every week: ride the latest, keep the upgrades small and frequent. Large codebase, careful release process: sit on LTS and batch the pain.

One more thing in 2.7 I like. It reports a deprecation warning for everything that dies in Symfony 3. The upgrade path is announced years ahead. You can burn the list down slowly, during normal work, instead of discovering it all at once on migration day.

The practical part is one line. Pin "symfony/symfony": "2.7.*" in composer.json and stop thinking about it. Then put the 3.x migration into the plan now, as a real task with real hours.

End of LTS has a date on it. That date arrives whether you planned or not. So far, for me, mostly not.