A lot of the focus here is on the developer implications of whether or not features like this get back ported. Makes sense, that's our jam, but I would argue that the user implications are more important.
Suppose you're the owner of a Mid-2014 13" MacBook Pro. MacOS Monterey drops support for this device. Unless a third party patcher becomes available, you'll be stuck on Big Sur. It's been 7 years, so that seems reasonable. Look at some of the impacts of that:
- You won't get the new "Focus" features. (that's okay, you still have DnD)
- Third party apps won't have access to the Focus-related APIs (they'll have to disable related features, or fallback to something else)
- Third party apps won't have access to Swift concurrency (third party developers will need to ... ???)
One of these is not like the other. It's not like we're missing dark mode, or some theme change, or an isolated feature that can be chopped off with
if #available. We're talking about a low-level, prevailing source code feature that's impossible (for practical purposes) to conditionally use.
There's a diversity dimension that I'm particularly concerned about: economic status. It's one whose importance seems (to me) to be clear as day, but I don't really see anyone championing for it. We forget that most people aren’t cycling their expensive tech like us, as though they were some baller annual subscription service. Indeed, iPhone software longevity is a large selling feature, and a competitive advantage of the platform compared to the fragmented Android ecosystem. Moves that go against this just end up being anti-poor (intentionally or not), obsoleting older/second-hand devices.
I can remember a few instances on other platforms (particularly Android) where a single release had so many improved APIs/features that they caused a major turning point. Companies with a policy of say, supporting 3 years back, made exceptions and ended up only supporting 2 years back, just to rush to get to this good stuff.
Every time that happens, we (the dev community) form a thundering herd that leaves poor users behind. We should make sure there's a good reason for it, and I think it's important to do whatever we can to not force the hand of third party devs to drop support for OSes. If Java/Mono/Go could figure this out, I think we should, too.