> most companies/organisations that use Free software don't contribute to its development
That is a big problem. But the underlying issue is competition (a pillar of the capitalist system) and we should address that instead of trying to fix surface symptoms. If there were incentives to cooperate for the interest of humanity instead of competing for private profit, there would not be a problem.
No, it's actually by design. When I write free software (I don't do it a lot), I don't expect anything of my users. There's no obligation on the user, and there's no obligation on from the author. That is the whole point. Other people may have other motivations, but for me, it's always been, ah, maybe this will help someone else out...
Also, a very important point: cooperation and competition are not opposed to one another. They are equally valid and often cooperation arises from competition.
Free software is great, but most software is not Free, and most companies/organisations that use Free software don't contribute to its development.