This post is from my talk at MOSSCon - "Contribute".
Before I talk about contributing to Open Source, I want to define Open Source. In asking people I'd hear words like: public, free, software, and shared. I want to discard software. As explained in Open Source and Open Source Software are not the same thing… well you get the idea.
For the purpose of this post, the best of these is free. But not free in the sense you might think. Consider this quote:
Not free as in beer, but free as in freedom.
There's a spirit behind Open Source. A free-spirit. I consider Open Source a philosophy. A philosophy to freely share with others. This philosophy creates an interdependence. Open Source could not exist without these free-spirits contributing back to the source.
But how do you contribute? Because of the strong link between Open Source and Open Source Software, many think you have to develop code. While this is one way to contribute, there are many others. My hope is you will find one that allows you to contribute to Open Source.
Open Source Software
As noted the most obvious way to contribute to Open Source is code. And most obvious way to do that is Github.
GitHub makes it incredibly easy to release (push), copy (fork), and contribute (pull request) code. They've also done an excellent job of abstracting this process, while still keeping good development practices - source control.
We've reached the data age. You've probably heard the latest buzzword Big Data. Data, big or small, drives the Internet. And there is a growing movement towards Open Data.
Many organizations have released their data to the public. Often in formats readily used by developers. A good example of this is U.S. Census Data.
You don't have to have big data to contribute. You just need data. If so, contribute your data.
Similar to Open Data, services also drive the Internet. API's are everywhere. Twitter and Google have led the way by opening their services. In turn, these services created entire ecosystems.
If you provide a service, consider releasing it as an Open Service. If you can not open all your services, you could adopt a freemium model. Your service could help foster another.
Releasing code, data, or services is the easy part. Out in the wild, it needs support. It needs your help. To me this is the lifeblood of Open Source - its community. Without you, these projects would not survive.
Open source projects need communities. People to help support the project by testing, reporting bugs, and promoting growth. You don't need to be a guru to support a project. Jump in and get started by sharing your experiences.
Often Open Source projects lack documentation. After all developers hate documenting. If you use an Open Source project that lacks documentation, contribute by writing or expanding the documentation. You can also write tutorials. If you know another language contribute by translating the documentation to help the project reach more people.
Developers rarely design. An Open Source project often lacks color. As a designer, contribute your creativity by helping brand the project.
Finally, you can contribute by simply spreading the word about the Open Source projects you use. The goal of any Open Source project is to reach people. You promoting the project helps accomplish that goal. Write a blog post, tweet, or email the author to say thanks.
Why should you contribute? Well, sharing is caring. We all just want to help, right? As noted, the Open Source spirit is a free-spirit.
Let's be honest, we live in a material world. Sometimes we follow more along the lines of show me the money. Contributing to Open Source is not without recognition.
Contributing can be a form of self-promotion. Employers often request Github accounts from potential candidates. Personally, my reputation on StackOverflow has led to many recruiter calls and talking points during interviews.
It's also not uncommon for an author to earn money from their project. Organizations often use open source project, but will pay for consulting, installation, or support. In some cases, end-users pay to fix or improve projects.
Whatever your reason, start small. Any contribution helps. I know you'll find the experience rewarding.
Find this interesting? Let's continue the conversation on Twitter.