The essential difference is that the role of uber is absent from your analogy.
> Do you think software contractors can somehow force clients to accept any rate they want
I'll just assume that's a sarcastic quip in rhetorical question form rather than what you actually think I believe. Obviously, a software contract is negotiated between two parties, unlike in the case of Uber where all possibility of negotiation is eschewed for a price explicitly set by uber. If a driver wants to offer their services for more or less than uber decides, they cannot, and are forced to lower or raise their price in order to gain access to the market.
The drivers can ask for any price they want from Uber. Uber can either accept it or not. That’s a negotiation. What more do you think it needs to be a negotiation? That’s just like a normal contract. I may want my fence painted but I’m not paying over £500. If I won’t go below that is it no longer contracting?
Like any contractor!
If I offer to pay $500 for get my fence painted, a contractor can either accept that or not.
If you want to hire a web developer for $500 a day, a contractor can either accept that or not.
The fence painter, the web developer and the Uber driver, can all set their own rates by either accepting the job or not, can't they? I don't understand what you think is the difference between the first two and the last one?
A software contract offers $50 an hour. I can either take it or leave it.
Uber offers $x an hour (or mile, or however it works.) Drivers can either take it or leave it.
What do you think is the essential difference here?
Do you think software contractors can somehow force clients to accept any rate they want? No. If they client doesn't want to pay above $x then there's nothing you can do but decline the job. Just like Uber driver can do nothing but decline the job, surely?