How to Contribute to an Open Source Project

Cover Image for How to Contribute to an Open Source Project

Open source projects have given birth to a range of useful software over the years. Many of the great technologies that we use today were born out of open source development! Android, Firefox, VLC media player, MongoDB, Linux, Docker and Python just to name a few.

Even many of the tech giants realize the benefit and allow their employees to take a day off and dedicate their time to open source projects. In fact, many have open source projects themselves.

However, the large majority of contributors to open source projects don’t work for tech giants; anyone can leave their mark on an important piece of open software or create their own “next big thing”. Being part of an open source project can also help you improve your skills, learn something new, get mentorship or form life long friendships. Contributing to open source projects should be mutually beneficial in both the short and long term. Many companies actively hire full-time developers from those contributing the most to a project, and so doing so can be a great way to show off your skills, while learning new ones.

This article combines a few tips that we share with those looking to get involved with MindsDB, and while every project is different hopefully these ideas will help you get involved in any open source project.

MindsDB’s GitHub page

Before Making Your First Contribution

1. Assess Yourself

The first step is to assess any technical or non-technical skill that you have or want to improve. Ask yourself where can I add the most value? This could be directly helping to write code, testing for bugs or even helping to improve documentation so others can use the software more efficiently.

2. Get to Know GitHub

Almost all open source projects used a version control system, a tool that helps with merging new code into the project (the main “repository”). Usually, the collaboration is centered around a website that hosts the central repository. These websites include Github, Bitbucket and Gitlab, thought Github is by far the most popular one and the one we use here at MindsDB.

Generally speaking, version control systems allow keeping track of all changes in a project without saving several files. Make an account on Github, login and explore all the different tabs on the top of the website. Here you will find information about Github, development guides, open source projects, events, conferences etc. You can learn all about the basics of a GitHub by following this guide here.

3. Search for Relevant Projects and Join the Community

Search for relevant projects on Github based on your skills. You can use Github Explore for this purpose or sign-up for Code Triage to get an email on a different issue every day. While choosing a project to start on, look for a project that is actively maintained (loads of commits) and has a lot of issues. Once you have found your relevant projects, Star & Fork the project, subscribe to its mailing list and slack channel. This is the best way to get help if you are stuck in setting up the project or making your first contribution.

Making Your First Contribution

1. Play With the Software andFind Bugs

First, try the software, install it and have a play, try to break it, see if it does what it says on the box. This is a great place where you can start to add value very easily, by reporting any issues you find. Each project is likely to have a slightly different template for reporting issues, but essentially they all contain similar information. (You can find MindsDB’s Issue template here.)

2. Explore Existing Issues

Once you have figured out the project you want to contribute to, explore its Github repository, read the documents and go to the issues tab. Here you will find all the open issues that you can work on. These issues can be from beginner level to advance level. If the repository is properly maintained, the issues would be tagged with “beginner”, “first-timers”, “help-wanted” etc. so that you can work on the easiest tasks to gain confidence and experience with the project.

3. Help Improve Documentation

However, you don’t have to code right away. You can contribute to documentation, creating the developer’s guide, helping other people solve their issues, etc. Read the documentation and if you feel something is missing this can be a great first place to contribute. You can either raise an issue or, if you feel confident enough, you can add the missing parts yourself.

4. Suggest New Features

If you like the project and find it useful, you can also start to request new features to help improve it. Or even better you can try to add them yourself.

The Cathedral and the Bazaar

A classic book about OSS is The Cathedral and the Bazaar. It explores “bazaar” style development, a bottom-up approach that gives power to the developers and the users. Comparing it with the “cathedral” style, a top-down approach where the power lies with managers and product owners.

It’s these ideas that gave rise to work approaches such as that described in the Agile Manifesto. But no matter how much corporations have tried to emulate a “bazaar” approach to development, they can’t do it quite so well as open source projects.

In the world of corporate projects, architects, managers and product owners lead the way. In the world of open source, it’s users and developers that shape the specifications.

Open source software is great because it taps into the “collective intelligence” of its developers and users. Most developers in an open source project stem from its core user-base, most “leaders” in an open source project are simply the developers that put in the most ideas and code.

This “bazaar” approach is not necessarily better than the “cathedral” approach, but it’s a system worth trying. It can give a new developer a lot of power over a piece of software, regardless of external criteria such as age or seniority within the organization. The only token of exchange is code, the more valuable the contribution, the more you influence the design.

If nothing else, you should work on some open source projects to experience this bottom-up style of software design.

Next Goals as an Open Source Developer

1. Attend Conferences

As an open source developer, you can attend conferences and events related to coding and technology. You can check out different events on Github Explore and try to attend those events close to you. MindsDB will be organizing meetups throughout 2019; if you’d like to stay up to date with everything MindsDB you can subscribe to our mailing list.

2. Get Paid for Open Source Development

Generally speaking, you are not paid for doing open source development as most of the work done is volunteered. However, if you cannot afford to spend unpaid time in open source development, you can either talk to your employer and pitch the idea for a project that may interest your employer as well or find a project which pays its open source developer. You can learn more from Github’s guide of getting paid for open source development. Many companies (including MindsDB) also hire or pay top contributors for their work.

3. Shine Your CV, Be a Mentor and Apply to Open Source Competitions

You should mention all the projects that you have contributed to on your CV or add a link to your GitHub account on your CV or in a cover letter. Most employers are impressed with such accolades and prefer such candidates for hiring.

You can also become a mentor to people who are new to open source development. It’s time to give back to the community and give guidance to the ones who are just starting out. There are several programs in which you can opt to become a mentor, e.g. Google Summer of Code, Rails Girls Summer of Code, Outreachy, etc., or just helping people out by replying to their queries on mailing lists or StackOverflow.