It occurred to me one day that the free software development model is easily likened to a rushing river. Not just a stream or calm and gently flowing river but a raging rapids. It takes a lot of turmoil and effort to create quality code in an open manner and maintain a respectable amount of forward momentum.
As people improve the code they add to the overall speed that the water reaches people. People can then use it in their everyday lives to accomplish things that they need to.
One of the challenges that commercial companies face when they attempt to break into the open source world is that just like a river you cannot bottle it and sell it without completely loosing the momentum that makes it so powerful. The moment that they scoop it up it becomes still and stagnant.
I remember the days when Red Hat was free I also remember when they made it not free. They lost a lot of fans and developers that day but the one thing that they did learn pretty quickly was that they still needed community contribution. They created streams that could then trickle down into the river so that they did not loose out on the massively powerful force and momentum. Several commercial companies have used that same paradigm to capitalize on the momentum of the mighty raging river.
Others like Canonical have even gone as far as to find ways to change the course of the river without diminishing its force and speed. In fact they have developed ways to improve the communication between coders and the people who use the resulting applications.
No matter what approach commercial companies that benefit from what I prefer to call freedomware take one thing is for sure. They would not be where they are and freedomware would not be where it is without every drop of code that makes the river run wild.