Earlier quoted context omitted.
> I would totally pay for major upgrades when fixes are indeed needed, but not per month or year by default That's one model I like too and unlike one time payment for lifetime support, it's sensible. However, there's no straightforward way to implement it. How do you do it? Ship all the versions every time and show the user the latest version they have a license for? Ship a "shell" which will download the latest bin…
The best model I've seen for this is to simply charge for major version upgrades. It's totally at the developer's discretion what they put into any given major/minor/patch version so you can demarcate development in whatever way suits.
(1) If you purchased something just before the new version comes out, it feels like you got screwed over.
(2) It requires a lot of new features be released at once for the new major version. This is actually more difficult to develop for vs releasing one feature at a time.
(3) It makes planning and budgeting much more difficult, for users and for developers. If there is a bug (especially a compatibility bug for the latest annual version of iOS/macOS, or a security bug) affecting version N, version N-1, and version N-2, all will require bugfixes. This raises the cost of bugfixes. Not to mention potential bugs related to future physical AirPods products.
(4) It leads to bloat from gimmicky new features being added to attract new customers.
I'd much rather pay, say, $0.99 per month or $9.99 per year, and get regular compatibility and security updates, and know that this developer will not go out of business, compared to paying $50 for a product I might not actually use very long if it won't work on a new computer.
If you want good software that gets regular updates, bugfixes, and compatibility updates, it's best time to pay for it on a regular basis.