Getting started in an open source project can be incredibly intimidating. You may ask yourself questions like:
Which project should I get involved with?
How do I get started?
Are the moderators nice?
You hear stories about Linus Torvalds’ brutal comments and you don’t want to be on the other end of those types of emails. Well, not every project is the Linux Kernel and there are some really great communities out there able and willing to help someone starting out. I wanted to share my experiences with my first 3 open source contributions.
DuckDuckGo is a Google alternative. The company wants to provide a search engine that respects your privacy and doesn’t track the user. They have the notion of an Instant Answer which is essentially a result to a search query. One form of an Instant Answer is a cheat sheet. Contributing a cheat sheet to the search platform is a fairly simple way to make your first contribution. They also have a great community on Slack, where I was personally emailed by their community manager after signing up. The community manager introduced himself and warmly welcomed me into the group. This personal touch was really indicative of the type of community being harbored.
DuckDuckGo also has fantastic documentation on how to get started. They use Codio, a cloud IDE which makes setting up a development environment extremely easy. I was interested in a contributing a Perforce cheat sheet where a user can easily find a reference to the command line client. In a couple of hours, I was able to read through the documentation, set up the environment and make my first contribution. The community was very attentive and gave friendly feedback. After a couple of days, my Perforce cheat sheet was on their staging site. About a week later, it was on the production site.
So a user can now enter a search like this:
And get results like this:
Not all open source projects are large official projects. There are many personal projects out there with a sole author willing to accept help and contributions. The Perforce Patcher, written by Buddha Jyothiprasad, is JavaFX application that creates patches based on diffs from changelists. I never had any experience with JavaFX applications but I knew enough Java to read through the code and make basic sense of it. I wanted to add the ability to start the application with some command line arguments to pre-populate the initial login fields. I made the the change and submitted a pull request. The author was really nice and asked me to update the README with my changes and merged in my commits.
I’ve been wanting to learn more about the Ruby on Rails framework and know that the best way to learn a new tech stack is to delve into a project using ia project’s . GitLab has really thorough guide on contributing and a fairly formalized process. Their instructions for setting up a development environment is detailed enough to get started but not overwhelming. They use an up-for-grabs label on their issues which can be picked up and fixed by anyone who has the desire to contribute. My only issue(no pun intended) is that once someone has claimed it, there doesn’t seem to be a way to know from the list without drilling down to each individual ticket. I decided to get my feet wet by fixing an issue that required a simple text change. Picking out low hanging fruit is good way to get acquainted with a project’s workflow and development environment. I submitted my merge request and the moderators were really responsive and enthusiastic. After a little back and forth, I made my first GitLab contribution.
Contributing to open source projects is not as scary as it may seem. There are a lot of friendly and well run projects that are welcoming to the new contributor. Helping out smaller projects with a sole author is also a great way to collaborate, learn and not reinvent the wheel. I hope this encourages you to find a project you’re interested in and to be unafraid to make that first commit.