Dear customers: we know. But our businesses are viable as subscription services, and not as one-off or ad-hoc puchase models. We know because we tried them. So we're catering to the people who are OK with buying a subscription because there are enough of them. Sorry if that doesn't suit you.
That sounds like a cynical take, but is actually close to the truth. The usual take is that businesses are "greedy" and subscription models are "lucrative". The word I'd rather use is "sustainable". Maintaining software (any software) is an ongoing process, not a one-time effort. It needs to be paid for on an ongoing basis. Even a tiny phone app needs regular maintenance work just to stay current with OS and tools de…
One of my ideas is that we should package manage solutions to problems at a level higher than just code and subscribe to them. We all depend on BSD sockets due to history. BSD sockets Just Works™ and people don't really evolve the BSD socket API over time. If only the rest of the software stack was as feature complete as BSD sockets.
Imagine a labour market that was also a package manager.
When library "xyz" upgrades from version 1.2.0 to 1.3.0 there's an interface change that breaks everybody. If there's 1,000 dependents of "xyz" and it takes 1 hour to upgrade and 1 hour to pass all QA tests and get into production, then that upgrade takes 1,000 man hours + 1,000 hours automated testing.
If we don't depend on library "xyz" throughout our codebase, we reduce the number of callsites to change. If we use a facade, they're all in one place. If we use a Service Provider Interface, we isolate ourselves even more and add flexibility of implementation.
If our facade or SPI is in escrow on a labour market, someone can fix it for us for a cost of their time. Ideally the software maintainer fixes it so they don't break so many people.