open the source!
February 23, 2018 8:49 AM   Subscribe

How did you start contributing to open source projects? Looking for advice on identifying an appropriate project and participating in a (healthy) OS community.

For folks who are regularly involved with open source: how did you do it? What are some of the implicit rules and codes of conduct that would be helpful to keep in mind? Was it possible for you to make a real contribution as more of a low-intermediate-level developer? Did you find a mentor, either somebody you could bounce ideas off of in general or somebody specific on the project?

I'm familiar with the advice to "contribute pull requests to a tool you already use," but the projects I use most frequently are probably way too prominent for my contributions to be helpful (pandas, jupyter, visual studio code, godot, django, etc.) Ideally I'd love to help out on a project related to civic/open data, digital scholarship in the social sciences, exploratory data analysis, etc., but I'm open to all kinds of things. I'd love to find a slightly smaller project that I might be able to get more significantly involved with over time (I'd like to devote a few hours a week on this).

Also any tips on identifying communities that are welcoming and inclusive to diverse contributors (in terms of identity, but also folks with non-traditional tech backgrounds, etc.) would be great too.

posted by elephantsvanish to Computers & Internet (9 answers total) 9 users marked this as a favorite
How I got started probably won't be of much help, but, back in ~2000 or so, we had been using CVS for a while, and I was running the CVS server for our stuff, and there were a couple minor annoyances with it that I fixed and sent patches to the CVS mailing list. That did not ultimately lead to any long term work on CVS. As it happens, I was working on drivers for a computer hardware company at the time, and around that time linux was taking off, and so I ended up working on open source drivers for linux for my job (not very helpful to you, I realize). Since I stopped doing that a few years ago, pretty much all of the open source stuff I do is work on my own silly little projects that almost nobody cares about. I get a few drive-by pull requests from random people now and then, but not much significant -- it's hard to get other people to work on your baby, they'd usually rather work on their baby. One exception, I did have a good friend I already knew IRL contribute significantly to a couple of my projects though, but that was the exception by a wide margin rather than the rule.

This might help a little: Recently, I participated in Digital Ocean's Hacktoberfest t-shirt giveaway, which required you to send 4 pull requests to open source projects run by other people on github (didn't require the pull requests to be accepted, just sent.) In an effort to get this free t-shirt, I had to find some projects I could contribute to, which is not so easy, as you know. I searched github using the advanced search option by language to find projects written in my preferred language and which weren't too large, less than 200k (easier to understand and build, fewer dependencies) and that had been pushed to within the last year (so as to not be so old that they were likely dead). Then, because I just wanted a free t-shirt, I'd browse the results for a likely candidate repo, clone it and try to compile it, and hope that there were some compiler warnings -- but not errors -- that I could trivially fix. :) So that strategy got me some low-effort commits and a free t-shirt, but did not lead to any long term participation. I don't think the advanced search will let you filter by number of contributors (since you're looking for a community) but it does let you filter by number of forks, which is probably a reasonable proxy.

And I think long term participation is what you're looking for, so I think the advice to work on something you actually use and are interested in is pretty important, because it's hard to be motivated to work on something unless you have some compelling interest in it when you're not being paid to do so. Good luck, hope that helps.
posted by smcameron at 9:33 AM on February 23, 2018

It really is true that scratching your own itches is the easiest way to get started. Even small patches to large projects are appreciated. As is documentation, if that's something you're interested in. Way back when, I used to use the Horde suite for web calendaring and a bunch of other stuff, so it wasn't uncommon for me to submit patches to fix little things or extend some functionality or whatever, though this was long before GitHub.

Literally the worst response I've ever had was "thanks for the patch, I like the basic idea but your approach isn't quite right," so it's not like you're risking a lot if you start with the little annoyances. But yes, something you use is easier to remain interested in..
posted by wierdo at 10:52 AM on February 23, 2018 [1 favorite]

"the projects I use most frequently are probably way too prominent for my contributions to be helpful"

I guarantee that's not true. Some quite successful projects are produced by a small overstretched group of core contributors. Bigger teams are really collections of smaller teams. And bigger projects don't run out of problems to solve, quite the contrary.

Also don't rule out contributing to open source for a living. Lots of us do.
posted by bfields at 11:44 AM on February 23, 2018

Jupyterlab would be a great place to help. With it just clearing beta there's a ton to do and the devs seem pretty willing to engage in github issues.
posted by advicepig at 12:59 PM on February 23, 2018

Look, they even tag a group of good first issues.

Of course, when I was in there, I had to comment on a few issues.
posted by advicepig at 1:16 PM on February 23, 2018

You might be interested in the SageMath community? Sage is math software built on top of Python. There are pretty regular, funded development workshops, and in particular Women in Sage events are a lot of fun. You can keep an eye on the list of upcoming events here, or MeMail me to learn more.
posted by yarntheory at 6:42 PM on February 23, 2018

GitHub employee here. You can check out this page that has some good advice. Contributing to Open Source
posted by willF at 12:07 AM on February 24, 2018

There are many open source projects with labels that are targeted for first timers. The FSharp Foundation is doing a mentorship program and my mentee and I are collaborating on adding a feature to a project. HoodieHQ is really good about onboarding people as well. I definitely recommend finding a community to participate in.
posted by andendau at 6:35 PM on February 24, 2018

Thank you so much! Great suggestions and stories. To start, I'm learning JupyterLab with an eye to contributing (perhaps documentation to start, or even a tutorial) and will keep an eye out for mentorship programs as well.

Also, I didn't realize that developing open source as a career was a realistic goal! I assumed it was only a very small number of people with Lead Developer roles who could focus full-time on projects. I will definitely look more into this :)
posted by elephantsvanish at 11:24 AM on March 3, 2018

« Older How to make ASCII art display in HTML email cross...   |   How do I get in shape to enjoy my vacation? Newer »
This thread is closed to new comments.