Before I get into the why, I want to take a moment to discuss the what and the how. First, what exactly are you supposed to give back?
The most important contribution you can make to open source is you, i.e., your time and your expertise. Everyone who comes to the OSS table brings something unique. Perhaps it's a use case that you or your customers have run into. Or perhaps it's a bug that you found, or a trick you learned once that could improve the software. Whatever it is, you should share it.
How? The best way to get started is by stubbornly reporting every bug you encounter and every feature request you need. Be specific and clear in your reports, and include the steps to reproduce any problem. The second best way is to become a part of the community by helping others. If there's a mailing list or forum, read it and respond to questions if you know the answers. Ask questions of your own. If you have any patches or code to contribute that's great too, but you can help a lot by just doing these two things.
Finally, why? Someone is putting code out there for you to use, so why not just take it and use it and be done with it? All that other stuff, the sharing experiences, the reporting bugs, and so forth sounds like a lot of work so why bother? There are many reasons but generally they fall into two main categories: the altruistic and the pragmatic.
The altruistic reasons are usually the ones cited by free software advocates. Helping your fellow developer, doing something to help them in exchange for how much they helped you, blah blah blah. If these reasons do it for you, that's great, go make a contribution to Greenpeace or the FSF. I'm not trying to belittle these reasons because they can be powerful motivators, but they don't matter a whit to the managers looking at the bottom line. So that leaves the pragmatic reasons.
Basically, it's strongly in your best interest to do all these things. Look at what I've suggested here. Sharing your use cases will help make the software cover those cases better. Reporting bugs is the first step in getting them fixed. Hanging out on forums? Networking. Answering questions? Explaining something to other people is the best way to learn.
So contribute back as much as you can to open source. Not only will it give you a nice warm fuzzy feeling, but more importantly, you'll maximize the benefits you get from the software and the community by participating in it.
Our IT Commandments:
- Thou shalt not outsource mission critical functions
- Thou shalt not pretend
- Thou shalt honor and empower thy (Unix) sysadmins
- Thou shalt leave the ideology to someone else
- Thou shalt not condemn departments doing their own IT
- Thou shalt put thy users first, above all else
- Thou shalt give something back to the community
- Thou shalt not use nonsecure protocols on thy network
- Thou shalt free thy content
- Thou shalt not ignore security risks when choosing platforms
- Thou shalt not fear change
- Thou shalt document all thy works
- Thou shalt loosely couple