>I'm not asking for "free unlimited labour", I just want software that 1) works and 2) doesn't need replacing at the cost of millions of dollars every few years. I don't think that's an especially ridiculous thing to ask for. You don't need to "open source" the code in the sense of "put it on GitHub"; you can give people more limited access to the code (or just parts of the code).
The problem is equating "you can" with "must be forced to".
>There's another way of saying it: the software has a defect, and not only does the vendor refuse to fix the defect, it also prevents me from fixing it.
>With physical hardware people would be up in arms about it, but for software it's considered "normal". I don't think it should.
That's quite an exaggeration. You can't realistically fix bugs in CPU chips, or USB micro-controllers or bluetooth radios or cellphone antenna radio chips. "So then Intel should open up their CPU design" and/or "But I should be able to" is not really an argument, because anyone could say the opposite and be on equal grounds.
So now, the only principal argument that I can see us having is "should freedoms have limits" or "what freedoms are essential", and we would probably agree on most things, but it seems to me that we just come out at different positions on a spectrum.
>Microsoft also sells maintenance contracts for Windows XP, but also to large bulk customers to the tune of millions of dollars. It could choose to sell it to anyone for $2/month or whatever price is realistic.
Okay, but that is a business decision that was made because a lucrative customer demanded it as a requirement before purchase. I don't see the connection. Both parties entered into a voluntary contract... well for the most part.
On the other extreme, you are free to hire a software developer, and get software made which you can choose to release under an open source license.
Personally I happen to think that data interoperability is more crucial than the software itself. All software does in the end is just manipulate data. Its possible to have a rich variety of software when the data interchange format is standardized and protected from monopolistic abuse. The foremost example being the internet packet protocols.