I think there's an argument to be made that the work that compilers perform might as well be DRM. Granted, the obfuscating effect of source-to-binary translation is in most cases incidental to the compiler's main purpose, but it's an effect that can be felt nonetheless.
It is like people going to the cinema expecting to be given all the details, including technical documents and whatnot about how the movie was made.
If there's a bug, the user can fix it only if the source code is available.
> It is like people going to the cinema expecting to be given all the details, including technical documents and whatnot about how the movie was made.
Well, movies do include credits, detailing who did what. From there, you could research what the "what" is and know more or less how the movie was made.
Disclaimer: I have no care either way between OSS or commercial software, beyond liking to contribute and support OSS projects, and working on proprietary applications (and being generally ok with it). So I'm replying not with an intent to proselytize; just thought I could address your points.
The point is that proprietary software is inherently that kind of bad practice - it means users can't fix bugs they encounter, or can't share their bugfixes. This is particularly vexing when the vendor also disclaims all warranties on the software, which is usual practice - reserving the right to sell something broken and unfixable.
Compare e.g. car right-to-repair laws that require manufacturers to make their repair manuals available.
I don't know what would work for you. If you're doing in-person support for your users, that may well be a lot more valuable than the software itself. Maybe that's a viable business, or maybe it isn't. Again, the world doesn't owe you a business model. If you're selling shrink-wrapped software then my honest opinion is that that business is dying (with or without the open-source movement) and it's better to get out of it.
If pacemakers really need software updates, then regulate that companies are required to provide the updates or release the code if unable to do so for any reason.
Assuming the terms and prices are fair and no "bad practices" are going on (no excessive EULA/DRM, no ads, no enforced subscriptions, no online requirement, etc.), how is that immoral?
The world does not owe devs a business model, you are right. The same way, the world does not owe users a solution under whatever terms they want, either.