July 23, 2019

FOSS contributions -- getting started

I have made only one major contribution to a free open source software (FOSS) project – DataDog’s first Ruby gRPC integration. As I adjust my working schedule to accomodate my move to Japan, I’m looking for other ways to contribute openly to projects. My goal is simple: make a valuable contribution while keeping my skills sharp and my opportunities for work (paid or otherwise) fresh.

I had a great experience working with DataDog’s Ruby team. What follows is a simple pattern for making a good open source contribution:

Find an interesting project

Preferably this is something that you use in your work. The project should present an opportunity for contributing, meaning, it ought to have a maintainer that you can work with productively and accept your contributions. This is just a matter of reducing friction – it should be easy to motivate yourself and to find a way to get involved. Otherwise, move on.

Observe how the chosen project operates

Who is part of the community? What are their needs? How to they write/review/use the code? The point is to enter into the project’s process and not cause disruption through your involvement.

Check the QA and docs

You want to make sure you understand the project, its purpose, and its usage from a technical perspective. You want to know what people are doing with the project and how its done.

Create a demo application

This gives you a hands-on way to learn the project. This also demonstrates to others that you have experience with the project and can demonstrate positive changes when requested.

Make small improvements

The key word here is “small”; do not assume a large change will be welcome. More than likely, large changes – especially when new to an open source community – will cause more problems than praise. In some cases, the project may have an initiative in place for larger refactors or a modularized contribution, but you should in general seek to start small to gain trust.

Communicate proactively

Communicate proactively with the maintainers and users. At the end of the day, your job is to establish a trusting relationship with the open source community. This allows you not only to make welcome contributes, it also helps you recognize the community needs better, and be of service.

Content by © Jared Davis 2019-2020

Powered by Hugo & Kiss.