Re: The trouble with money
I don't have problems with any of those things. For example:
"At what point does it just become writing code for the company?"
At the point where the code is no longer available to everyone without added restrictions, or in other words if it stops being open source. Otherwise, yes, its development is being driven by the company, but I can still take any bits that are useful to me. Of course, they could make something where I no longer value what they've made, but that's not only the case for company-supported open source. There are lots of projects that I find completely useless, but they're still useful to someone else.
"a company threatens to pull funding that the developer needs to continue or sustain themselves if the developer doesn't do what the company wants."
Absolutely that can happen, and it could be a problem. However, being open source, this is when I fork, tell the developer that they've messed up horribly and won't get any donations, and tell everyone about it. The company will get their version and most people will run something else. If it was a proprietary project in the same condition, I couldn't do that. Also, I've seen that happen several times and, if the company is paying for development, then it's less likely. The times I've seen it are when an open source developer has grown tired of maintaining their project for little or no money so they just sell the name and copyright and the buyer does something bad to it. Nearly every time, that ends in a fork about five days later. But if the original developer had been paid to write something, they probably wouldn't have sold it.
"I can also see it turning into a competition between companies. They each try to donate more than the others to try and get priority on their requests. If could be very good money for the developer but it may not be worth it."
This sounds like the dream to me. You can pick features based on your concept of how much you want the feature and how much they're paying. If there are so many people eager to pay people to develop, you could find others to get familiar with the code, either people who are interested in earning some money as an open source maintainer or an employee. If that keeps up, that project is likely to be pretty healthy unless the changes they're paying for are detrimental in themselves. In most of the cases we're talking about, they're asking for a feature they want to run, which means at least they think it's a good idea. If I, as an author, decide that it is a bad idea but I want the money, then I can design the feature to be easily disabled. They use one compiler switch and get the feature, so they can have it and I get paid. You can omit the switch and build a version without the feature so you don't have to use it. It's always possible for someone to try to sabotage a project like that, but it is an expensive way of going about it and easily thwarted, so I doubt it's very common.