This is a bit naive. Software and especially apps these days are more a stream of updates (like Netflix) than a v1.0 you buy once. Updates are expected from users (and app stores).
Example: A customer bought your app on iOS 9. It worked perfectly fine. You wrote it once, because you couldn’t expect more revenue from existing customers. It stopped working on iOS 11, because 32-bit support was ended on Apple’s side.
Of course, it’s not Apple who gets the blame, it’s you, because your app doesn’t work anymore. But it is supposed to work, because your customer paid good money for it ($4.99).
Back in the day, sure, if you bought a software that worked on MS-DOS only, it’s your fault when you got Windows and it didn’t run your software. No expectations, no hard feelings. But iOS is iOS. It’s the thing running average Joe’s smartphones. Software bought for iOS should work on iOS. Forever.
Your examples all describe products with an expected expiration date. Software used to have expiration dates. But not anymore. The expectation changed.
Example: A customer bought your app on iOS 9. It worked perfectly fine. You wrote it once, because you couldn’t expect more revenue from existing customers. It stopped working on iOS 11, because 32-bit support was ended on Apple’s side.
Of course, it’s not Apple who gets the blame, it’s you, because your app doesn’t work anymore. But it is supposed to work, because your customer paid good money for it ($4.99).
Back in the day, sure, if you bought a software that worked on MS-DOS only, it’s your fault when you got Windows and it didn’t run your software. No expectations, no hard feelings. But iOS is iOS. It’s the thing running average Joe’s smartphones. Software bought for iOS should work on iOS. Forever.
Your examples all describe products with an expected expiration date. Software used to have expiration dates. But not anymore. The expectation changed.