iPods and AirPort Express units from 20+ years ago still work in modern macOS too. Things have been shuffled around some (iPods are now managed with the Finder instead of in Music.app) but they still work.
I would agree with the idea that they're not bothered about breaking workflows, particularly those involving command line tools, but hardware compatibility isn't nearly as bad as the internet might have one think. Source compatibility isn't all that bad either, many ancient Objective-C/AppKit codebases can be made to compile in an evening. It's mainly binaries that break.
Yeah, Apple is very weary of breaking user functionality. They'll just break your app's ability to run.
Frankly, I don't think it's practical to expect operating systems to continue to run binaries perfectly in perpetuity. It's an enormously burdensome expectation that holds development of the platform hostage.
Usually all it takes to keep one's software running on macOS is compiling against the latest SDK once every ~5 years. Depending on the nature of the app, source changes often aren't even required. As a dev I don't think that's too much to ask.
> Frankly, I don't think it's practical to expect operating systems to continue to run binaries perfectly in perpetuity.
A lot of that is going to depend upon perspective.
Take something that is coming up: Apple has mentioned that Intel application support is going to end in the next release, or about 8 years after the introduction of the M1. Eight years may sound like a good run, but there are all sorts of edge cases: software that doesn't receive updates because the publisher is no longer in business, or software developers who are providing updates under a disagreeably different business model (ahem, subscriptions). Some software may have been released Intel only after the release of the M1, simply because the developer wasn't going to test a new architecture immediately after its release.
I'm not going to pretend that I know how much software that affects, because there was a 12 or 13 year gap in my use of Macintosh. Something I did notice after my return to macOS was the absence of software due to earlier changes in the platform. An more exotic example is F-Script[1]. Not only is the project gone, but the change in the security model pretty much ensures that nothing like it will ever exist again. A more common example will be games, where only a select few will receive updates a couple of years after its release.
[1] https://www.macintoshrepository.org/25973-f-script
Apple unfortunately takes the opportunity of you compiling against the newest SDK to change and break all kinds of undocumented behaviors your app has been depending on, which almost always negotiates source code changes. If you’re lucky you’ll actually notice the changes; more than likely your app just appears more unstable and buggy to your users.