Corporations can easily profit on open source, but they are afraid to because it is such a strange idea. What they need to realize is that software should not be considered a finite product, but a service. Microsoft, for example, is surprisingly close to that philosophy, selling "licenses" as opposed to actual products. With that in mind, it might not be a far cry for them to open source Windows with a beefed up license.
Depending on the intent of the software, this philosophy can change. I do not think it makes the same sense for games, for example, since they are generally shorter-lived creative works. Having said that, many developers do a fine job opening up their engines, attracting piles of positive attention to the name and themselves, but keeping the game's content as a commercial item.
I think what it comes down to, for developers, is a simple question asked in every industry: Do you care about making a great profit, or a great product?