But it isn't this simple, because you wouldn't need a single "maintaining" branch. You would need one for each feature release that the user may stop at.
So if you release the feature branch every 3 months after a few years you will have a dozen maintaining branches to backport fixes to, and in which to carefully test that the fix actually works. The problem is linearly worse if you release the feature branch more often.
> So if you release the feature branch every 3 months after a few years you will have a dozen maintaining branches to backport fixes to, and in which to carefully test that the fix actually works. The problem is linearly worse if you release the feature branch more often.
This has been solved by LTS releases for some time. You have a newest release branch that gets feature updates immediately and an LTS branch which has a full release e.g. once every two or three years, at which point it catches up on features to the then-current newest release branch. The newest release branch doesn't have long-term support and you're expected to take the latest feature update, the LTS branch gets only security updates, the user can choose between the two or three LTS releases currently in the support window or the newest release branch.
Only if it hasn't actually been solved. LTS releases resolve the conflict between providing a stable system that receives only security updates and separately maintaining dozens of separate branches.
They don't solve the problem, though, they merely reduce its scope. Ubuntu's LTS versions only last five years for free users, and they currently have to maintain seven of them.
And now instead of having a small update every now and then that you can perhaps try to adapt to, you have a massive update every 5 years or whatever (or less if you happened to start out just before the next LTS) that'll basically guaranteed wreck everything (by design even!!) and for all intents and purposes might as well not exist cause there's no way you're upgrading to the horrible "new" mess. And we're back at people being stuck on outdated software, but now there's just absolutely no way whatsoever you'll get them to upgrade.
Never mind the problem of if you started out on a non-LTS version.
And also the problem of not getting the actually nice updates, and perhaps losing app compatibility.
This was, I believe, the problem that Microsoft wanted to resolve with their gradual burndown of WSUS - a lot of shops (including one I used to work at) would selectively roll out updates based on whether they thought they were relevant, resulting in an explosion of configurations that Microsoft had absolutely never tested against, and naturally, a lot of breakage.
This doesn't really jive with reality as Windows is plenty buggy in the presence or absence of the latest updates. Microsoft has slowly eliminated end user controls over updates because it would interfere with their ability to monetize their customer base. You can't really push a telemetry update, if updates aren't being applied.
So if you release the feature branch every 3 months after a few years you will have a dozen maintaining branches to backport fixes to, and in which to carefully test that the fix actually works. The problem is linearly worse if you release the feature branch more often.