Scott Hanselman posts a set of intriguing questions on the nature of open source on his latest "Is Open Source a Crap Idea?" post. One of the things he mentions from this article is that most people contribute to Open Source software out of self-interest, and I think I would agree with it.
I know at least that all of my participation in Open Source projects (not that there have been many) were motivated by self-interest:
- When I contributed to NAnt and NAntContrib, I did it because I liked NAnt, but needed a few things to improve in order to use it for the project I was working on at the time. Pretty much all tasks and core changes I submitted were motivated by a specific problem or difficulty we were encountering when automating our build.
- When I contributed to Felix Kazsa's FKSEC library, I did it because I was already familiar with some of the security APIs, but there were some that I really wanted to learn in more depth, and this was an excellent opportunity for that. Besides, I really was getting tired of writing almost the same code all the time I needed to fool around with access tokens.
Really, there's nothing wrong with this (it's not supposed to be a charity, after all). In fact, I believe this is probably one of the core ideas in Open Source development, and a good thing altogether, as it helps ensure you get useful things put into the product, things someone actually needed.
On the other hand, this also means that, inherently, Open Source developers will tend to work on what they want (which is what makes it fun for them), and not on what regular users of the product need/want. If you want an Open Source project to go someplace, chances are you might need to jump in sooner or later and do the work yourself if no one else is interested (or you can't convince someone that they are interested in it as well), which really doesn't work for a lot of people.