Yesterday, I went to the entertaining and informative Open Circuits event, held by the Twin Cities Open Circuit, a new local knowledge-sharing network working to demystify computers and information technology. In keeping with their ten-minute-talk format, I spoke briefly about my thoughts on supporting open source. I'll share them here.
I've been developing with Drupal for over three years now, and have been a big supporter, advocate and user of open source much longer than that. Over the years, I've developed somewhat of an aversion to phrases like "giving back to the community", or "contributing" to open source. Certainly not in principle - giving back is what it's all about! But all too frequently, these types of phrases lend to the notion that an open source project is some kind of charity case, seeking a spirit of volunteerism and the goodwill of others to lift them out of the gutter. Frankly, that's just not sustainable.
If open source contributions were based entirely on altruism, they wouldn't make viable business sense to IBM, Sun, or Drupal supporters/users such as Sony BMG, AOL, Fast Company, and Popular Science. Certainly, there's good business sense in downloading something for free in order to save hundreds of thousands of dollars in licensing fees, but these companies are also "giving back" in small or large ways. Benefits include marketing, ongoing collaboration, and a clear picture of how tools are progressing.
Here are five ways that you can "give back" to open source while helping yourself at the same time:
Participate Online
Every project has a website, usually with support resources, issue queues, group discussions, or community announcements. If you depend on an open source project, the first thing you want to do is sign up! This puts your finger on the pulse of the community. It's a good idea to lurk here for awhile to see how decisions are made and what type of behavior is considered acceptable. This benefits you, of course, because you can easily tell what's coming up, and who the important players are.
When you want to "give back", helping people with their issues and questions is a great way to start. Even if you don't know what you're doing, a great way to start is to help where you can while you're learning the ropes. If you answer a few questions or close a few support tickets, your community karma goes up big-time, and you're more likely to get help, advice, and satisfaction to your feature requests.
Participate Locally
Similarly, attending local user groups, meetups, networking events, and other local events can help you stay on top of what's going on. You can usually get some of your questions answered for free, and you can meet people with similar goals so that you can share the load. If you're local, you picked the right place! The Twin Cities has an incredibly rich and well-attended local technical community, including the Drupal, PHP, MySQL, Linux, Ruby, Perl, Web professionals, and one of the largest Barcamps in the world!
Your own benefits for attendance are countless, and you're giving back in two ways: First, you probably know more answers to peoples' questions than you think you do. You can "give back" by answering questions or just giving your vote of approval to ideas and happenings. A large attendance is also useful for market credibility. When I'm speaking with someone on a national or international level, I always tell them how many members there are in these Twin Cities groups, and make sure to provide as much information as I have about community attendance. This helps to increase this area's profile as a viable job market or location for national conferences and events.
Document your progress
People who know the least are often the best teachers. Old-timers can forget how hard it was to pick up new skills or learn a new interface, and can also get a little stuck in their ways. So, one of the best things a new user can do is document their progress! If you have a blog, post information about what you have done to set things up. If you don't have a blog, try using the online forums or support area to detail what you've done. You can post them as case studies or tips within the online documentation or the support forums.
Helping others save time always feels nice, but you'll also be receiving kudos and collaboration from others, further increasing your profile in the community. This should help you when you need assistance later. Also, in the spirit of open source, if someone has any insight on a shortcut or another alternative, you can hear about them while you're still learning.
Support supporters
The key advantage to using open source is knowing who you are dealing with. You can vet a developer, trainer or host based on the code or documentation the produce, events they attend, and the overall community feedback for them. When you're working with a service provider that is intimately familiar with the project and the community,their work is almost always done faster and more future-proof, saving time and money over the long haul. Plus, you can cash in on the good karma that they've been racking up by the participation and documentation that they have been keeping up with. So, if they have questions or patches to submit they'll get the attention they need to get stuff done on your behalf.
The "altruistic" part of supporting supporters is the fact that you're validating open source participation as a viable business model. So, by supporting people who support the tools you rely on, you're helping to guarantee the future of the project for yourself and others. Naturally, you want to consider these factors against working with someone who is simply "cheap".
Join forces!
The single biggest point of confusion in many open source projects - especially Drupal - is the duplication of effort. Leveraging and supporting existing tools fosters growth, while creating a project that parallels the functionality of another one fractures the community. This also goes for working on customizations internally, which might otherwise have been a patch or extension that you can talk the community into supporting for you.
When getting started, it's tough to let go of your ego and realize that people may have gotten started on some of your goals already. There's also an urge to "give back" by "owning" a new project that improves an existing resource. If there's existing work that doesn't do "quite" what you need, it's important to resist the temptation of starting over. Naturally, if you participate online, participate locally, work transparently and hire people who already know what's going on, you'll be a long way towards understanding what's available and what needs doing.
Ultimately, it's all about making yourself as available as you want others to be. Participating and sharing your knowledge while respecting the efforts of others is great for "giving back to the community" while keeping within your own time constraints and budget.