without the users objecting to it to an extend that they buy something else.
They will never object regardless of how breaking the change is, because, you know, rounded corners, zero old fart's USB ports, non-existent repairability, and, of course, the logo on the lid... you won't find all those goodies neatly fitted in one package in other products.
Nonsense — that’s just typical non-fact-based, history-ignoring Apple bashing.
(FYI, I was working as a full-time on-site Mac consultant during the transition from Mac OS 9 to Mac OS X.)
The switch to Mac OS X did, in fact, receive significant resistance, with many users outright refusing to switch for yeeeaaaars, and some did in fact jump ship to Windows XP systems. It was a rough transition, with the overwhelming majority of existing apps running only within the “Classic” subsystem (a loosely integrated virtual machine running a complete instance of Mac OS 9), and with the first native Mac OS X ports of many apps being really disappointing. (*cough* Quark Xpress *cough*) Many peripherals never got Mac OS X drivers at all, resulting in the common sight of, for example, a graphic design agency having one old Mac OS 9 system as the “scanning station” for their expensive slide scanner.
While Mac OS X eventually became a very worthy successor to classic Mac OS, it really wasn’t until around 10.2 that it was complete enough to be tolerable as a full-time OS for most people, and until 10.3 that it was mature enough to really be good enough for practically everyone. 10.0 and 10.1 were really more like extended betas, in that they were just missing too many features and third party apps. (One bit of praise, though, is that even the early versions were very, very stable. Even the developer releases were surprisingly devoid of crashes!) It is very telling that it wasn’t until the very end of 10.2’s life that new Mac models lost the ability to boot directly into Mac OS 9.
For really long-time Mac users like me (since 1992 in my case), there are still aspects of classic Mac OS that I sorely miss. (I don’t think any file manager on any platform, including modern macOS, is quite as nice as the classic Mac OS 9 Finder.) Don’t get me wrong, I wouldn’t want to go back to the crashiness of classic Mac OS. But in terms of user interface design, it was really, really good.
Where Apple stands alone, head and shoulders above everyone else, is in changing the hardware platforms their software (including the OS) runs on. The switch, under classic Mac OS, from 68K to PowerPC was very low-friction, and the Mac OS X-era switch from PowerPC to Intel was goddamned seamless, as was the switch to Apple Silicon. I find it really, really impressive that both classic Mac OS and Mac OS X disk images will not only work on different supported models, but across hardware platforms. (I.e. a single install of, say, 10.5 will run on 32-bit PowerPC, 64-bit PowerPC, x86, and x64, running optimized native code on all of them.) Apple has mastered the “fat binary” as no one else has. Mac OS X of course is the direct descendent of OpenStep (née NeXTstep), which itself was born on 68K and then ported to x86.
Microsoft, on the other hand, has been extremely adept at maintaining binary compatibility with very old applications, going to heroic lengths to keep even poorly written apps running well. If Apple can swap out the hardware platform without you noticing, it’s Microsoft that can swap out the core OS without you noticing. The whole “swapping out the NT kernel for Linux is impossibly difficult” people forget that the Win32 APIs have run on at least three disparate kernels: DOS (both in WfW 3.11 and Win 95/98/ME), WinCE, and NT. (And NT is itself basically a reimplementation of the VMS kernel from DEC, which is technically very different from DOS.) I’m not sure if Win16 runs on WinCE, but it did run on both DOS- and 32-bit NT-based Windows.
When I say “heroic”, I’m not kidding: when prepping Win 95, Microsoft found tons of popular apps that relied on undocumented behavior, and in some cases outright bugs, in Win 3.1. Rather than have those poorly written apps fail on Win 95, they actually built in compatibility shims for those apps, one by one, to keep them running. For example, for some popular game, the compatibility shim actually changed how the memory manager worked, to make it reproduce some weird bug in 3.1. The downside to this approach is that it unwittingly encouraged developers to ignore disciplined coding practices. This really came to bite them when Vista came out and tons of apps broke because they were doing things they never should have done. (Apple was, and is, the opposite: their developer docs expressly state to avoid using undocumented behaviors, because those can break compatibility. If you follow the rules it’ll work and/or recompile going forward, but if you break the rules, you can expect your software to break in the future.)