Getting started with an open source project can be intimidating. I wanted to contribute to open source projects, but struggled with where to start. When the time came and I finally took the shot, I ended up having an excellent learning experience. Here is my experience with my first three open source contributions.
DuckDuckGo is a Google search alternative. They want to provide a search engine that respects your privacy and doesn't track you. They use 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—I was personally emailed by their community manager when I joined. The community manager introduced himself and warmly welcomed me into the group, and this personal touch was indicative of the type of community they have.
DuckDuckGo also has fantastic documentation on how to get started. They use Codio, a cloud IDE that makes setting up a development environment extremely easy. I was interested in 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. And about a week later, it was on the production site.
A user can now enter a search like this:
And get results like this:
Not all open source projects are large official projects. Many personal projects with a sole author are out there and they are happy to accept help and contributions. The Perforce Patcher, written by Buddha Jyothiprasad, is a JavaFX application that creates patches based on diffs from changelists. I had no prior 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 change and submitted a pull request. The author was really nice, and he 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. The best way to learn a new tech stack is to delve into a project using it. GitLab is a fairly well-known on-premise git management application. They have a thorough guide on contributing and a fairly formalized participation 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, and these can be picked up and fixed by anyone who has the desire to contribute. 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 very 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. Dig a bit and you will find a large number of well-run projects that are populated by friendly people who will welcome a new contributor. Helping out smaller projects with a sole author is also a great way to collaborate and learn, while not having to 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.