I actively contribute to OpenSource Software, and here are my reasons:
- Some stuff of mine is OpenSource, because I want give something back for using so much OpenSource software myself. If I do not do OpenSource development, why should others? I think it's part of belonging to the community :)
- I use OpenSource libraries. Sometimes, I encounter bugs or need new features , so I fix and extend the library and push a patch upstream
- I read mail lists and issue trackers and try to help by answering questions. I read that stuff anyway, because I want to know what problems to expect and what other people think. And I want to contribute my ideas. Whenever someone has a question I can answer, I will answer it as part of contributing to the community
Oh, and don't get me wrong. I also have a few projects which will not be opensourced, but distributed in binary form.