From supposed hero to supposed zero
IBM did do some advertising for linux - but to be fair it was crap, who is going to be swayed by some albino kid, looking like an extra from an odd horror movie.
No, they should have used cute penguins, all CGI'd up and doing commando stuff for the IT world, with an IBM logo branded on their penguin tushes.
If IBM wants to develop a tool that is commercial, using an open source platform then all power to them, that is what most developers do. If they make an alteration to Eclipse, PHP, or Ruby in the process, then yeah they should release the change back to the community, that is the idea But, their product does not have to be open source.
To believe that all development should be open source and free is ridiculous, most devs want a customizable stable environment, a few tools and the ability to code for their living.
And yes google, of 'do no evil fame' are perhaps the worse for not contributing back, they will have made some alterations to the linux kernel that they are sitting on.
Opensource is not really for your day to day consumer, it is meant for the IT field. People have installed it for the avg users to increase wide spread adoption, that enables the commercial software development to gain a foothold. It is actually quite an interesting balancing act.
This has happened because of mismanagement of unix, and MS window dominance. Mismanagement in not charging a smaller fee for Unix say $100 back in the days of SCO, and MS charging the correct amount for consumers. There were other debacles as well, such as not being able to fix your own printer driver.
The vast majority of Open Source is not altruistic, but it is not selfish either. It is the evolution of shareware and freeware, and the understanding that corner stones of technology are better off being open. Most developers don't even give it too much thought, they just have a personal itch to scratch, and because they don't want to polish it they open source it.
It does go deeper than this, but the idea that developers never wish to be paid for another line of code they write in their lives is a fallacy.