yep, it's all about "whuffie", as Cory would have it!
I doubt anyone writing code in the OSS community would disagree. OSS is a reputation economy.
However there is another factor; code quality. Writing commercial code uses a strictly different methodology.
Nowadays, commercial software development is all about strict isolation between customers and developers -- there's multiple levels of tech support, product management, sales etc., who filter what the customers want, and what problems they see. Developers don't talk to the users, period.
Then once the code is being written -- it's released according to the schedule. if it's not ready, tough luck -- the dev team must go into burn-out mode until they have something that's reasonably non-buggy that'll fit the deadline.
Finally, staff turnover seems to be higher in commercial dev than in OSS. Not sure about this, it could just be the places I've worked. ;)
(BTW I think it didn't used to be like this in the software industry; but in my experience in the last 10 years, this is what commercial s/w dev works like.)
I've worked on several commercial products and several OSS products. *I* write OSS (a) for reputation, (b) for my resume, and (c) for fun -- given what's wrong with the commercial model outlined above, I need a way to write "fun" code.
(That's not to sacrifice code quality for "fun" BTW; I've seen the code quality that can emerge from a commercial house and it's not pretty ;)
Another point: this is not anti-commercial BTW. There are a small number of commercial houses who write code using a non-traditional dev methodology, which is closer to OSS style; Perforce (
http://www.perforce.com/ ) is one, for example. Their products are relentlessly excellent. And why? Because they use a small, constant team, like an OSS project -- and they maintain close contact between devs and users (check out the mailing list link right on the front page).