- Curtis Mitchell
One of the most rewarding things I've been able to do in my career is answer questions from people curious about transitioning to a career in tech or from those who are early in the transition and are still searching for their first job. A consistent piece of advice I offer, especially to the folks who have already made the tech transition, is to look for an open-source (OS) project to contribute to. People are often intimidated by contributing to an OS project, but it's really not as scary as it might seem, and it can be a great signal to employers on your competence to work with other people in a large project or codebase. And if you find the right project and community, it can turn into a fun hobby and even (as it was in my case) a path to a future job!
In this post I'd like to share some examples of my own path into an open-source community. One of the great things about OS is that by its very nature most everything is open and available to view on the internet.
At the height of the COVID-19 pandemic in May 2020 I was laid off from the startup I had been at for the last few years. I had been trying to transition to machine learning engineering for a while, and fortunately I had just been accepted into Springboard's ML engineering program. As I progressed through the course material, I learned about the sub-field of privacy-preserving machine learning, or PPML. Initially my interest in this branch of ML was intellectual as the methods that blend cryptography with machine learning techniques are technically fascinating. However I also quickly began to appreciate how PPML could help address a host of social issues inherent is standard ML and AI practices, such as training datasets that can expose the privacy of individuals by including sensitive data such as medical and financial information.
When I began researching groups working on PPML, I quickly came across the group OpenMined. They are a non-profit open-source group dedicated to building PPML software, and after a quick glance of their website I decided to join their Slack group and enroll in a course they had just launched on privacy and technology.
My First Contribution
At one point while working through the course contents I noticed that a radio button on one part of the course web app wasn't working properly, so I opened an "issues" ticket and documented the bug: https://github.com/OpenMined/openmined/issues/92. Initially I thought that pointing out this issue was sufficient, and having been a developer for several years at this point I knew that OpenMined's developers would appreciate a well-documented bug filing. However I kept ruminating on possible causes for the issue, and a few days later I decided to start working on the problem myself. I asked the project lead if I could be assigned the work, which you can see in the comments on that ticket. Once I implemented a solution - a missing property on a React component - I opened a pull-request: https://github.com/OpenMined/openmined/pull/94, and I made sure to adhere to all of the suggested information in their pull-request template such as documenting how I had tested the code change.
After the bug fix was approved and merged, the project lead asked if I'd be interested in contributing more since they were short-staffed (a common thing for open-source groups and non-profits). After passing a brief phone screen I began joining weekly calls with the frontend engineers working on their course material and volunteering a few hours a week with them.
From Open Source to a New Job Opportunity
Within a few months I scaled back my volunteering with OpenMined as I was busy moving houses and then began a new job contracting with NASA, but I kept following OpenMined's work and reading posts in the Slack group. Fortunately I was able to resume working with them a year later when I was accepted into the initial round of their padawan program to dive deeper into privacy-enhancing technologies (PETs) and the PySyft codebase. I've been working with them ever since! And becoming knowledgable of PETs and PySyft directly led to my current role as an emerging technology fellow at the Census Bureau. One of the key points in my favor during the interview process for this role was that I was able to demonstrate an example of my PETs knowledge with a pull-request on Github for a function to compute a differentially private mean: https://github.com/OpenMined/PySyft/pull/66341
Simpler Paths to OS Contributions
Admittedly I had been working for several years as a web developer by the time I began contributing to OpenMined's projects, so I felt comfortable diagnosing and fixing the issue with the React component in the courses codebase. But there are plenty of simpler contributions that could be less intimidating to first-time OS contributors such as fixing or adding to project documentation.
As another personal example, when I was first learning about differential privacy I started reading the great book (Programming Differential Privacy). It's an open source book that's entirely hosted on Github, so when I came across some small misspellings I opened pull-requests to get those fixed:
Beginning Your OS Journey
Hopefully now the idea of contributing to open source seems less intimidating. I often tell people that there is an OS project for any community and interest, and that the OS communities are looking for people with all skills sets, not just software developers. And while knowledge of git used to be a prerequisite for OS contributions, the user interfaces on platforms like Github and GitLab are constantly improving to lower the barrier to making proposed changes and opening pull requests.
Hopefully this post has sufficiently motivated you to begin your open source journey, and if so I encourage you to find a project of interest! Some quick googling and searches or posting a question on Reddit can often help you find some great codebases. As a newcomer I would look for an active codebase (ideally changes are made on a regular basis with the most recent occurring in the last few days or weeks) with some issues marked as “beginner friendly”, “good for first timers”, or something similar. For example, here are the “Good first issue” tickets in OpenMined's PySyft repository.
If you're a developer who is somewhat comfortable with git, I also suggest reading / watching introductions to how to fork repositories and open pull-requests. Here are just two quick examples but there are lots of great resources just a quick search away:
- My first contribution to open source: Make a fork of the repo
- An Easy Introduction to Open Source, Github Cloning, Forking and Pull Requests
Best of luck in your open-source journey, and don't hesitate to contact me if you have questions!