Why have I contributed to OSS?
Because it solves bugs I find. No software is free from bugs, with OSS I have the opportunity sometimes to do something about ones which annoy me. Having found and fixed them, I submit patches back upstream so that hopefully the next version I download won't require me to do the same thing again. Or the same sort of thing with features I want.
Yes, it's selfish, but then almost everything worthwhile has been done because a person said "I want it". In the case of OSS my selfish "I don't want that bug" benefits everyone else as well (and their selfish introduction of new features they want benefits me). It's why I don't work on things like VLC and OpenOffice, they already work as well as I need them to, but I do on other products which I need.
As far as my own software is concerned I release that as OSS because I'm not interested in the cost of monetising it. If someone paid me a quid for something then I'd have to do receipts, tax returns and all that stuff which would cost me far more in time, so I just let it go free. If someone likes it and wants to tell me, that's fine. If they find a bug and fix it and send me the details, that's great, that's the sort of reward I like. If they don't like it and decide to use something else or write their own, on the other hand, it's no skin off my nose (and if, as has happened, they write and say "Your software inspired me to do the same thing another way", well, that's still nice to hear).