There is an interesting thread in the Open Source group on LinkedIn that started with the message: "why would someone contribute to open source project? what would programmer get in return?" Here is my response to this:
This question is a good one because it goes to the core of how open source software gets created. The fact that there have been so many replies to this question demonstrates its importance (even to those who seem offended by the idea that an individual needs a reason to contribute).
The factors of satisfaction, building skills, and better employment opportunities (for certain types of companies anyway) are, IMO, more symptoms of the underlying reason rather than the reason itself.
What is implied by the question and many of the answers is that intellectual property protection is the only way to earn a living making software. It seems clear to just about everyone the IP law is not good for innovation, which is best recognized by symptoms like satisfaction and greater value in a market.
Along with this IP law is also not in the best interest of software creators, and does not result in greater income for those of us who create software professionally. When we create software for an employer we get a salary and unless we're really lucky the salary is the minimum they can get away with paying for what is often considered a worldwide commodity skill that isn't worth much in the market.
IP law is great for investors, but bad for the software itself and bad for software creators. Open source and free software are the answers to that.
Those who give up on IP protection to make a living will make more money and have more opportunities for satisfying and skill-building work.
I like to consider myself a good example of that, so much so that after a decade of working on what is now Apache OFBiz all of my free time is going into the next generation of free software tools and applications for business use with Moqui and the projects based on it.
In all of this I've made 2-3 times as much over the last decade as I would have by working as an employee, unless perhaps I had hit a C-level position in a larger company by now (which I'm not sure I'm really that interested in anyway).