skip to content
Bach T. Ly

A new approach to opensource contribution

/ 3 min read

Updated:
Table of Contents

Why open source software (OSS)

Imo, open source software (OSS) contribution is one of the most efficient way to show off your dev skills, especial for those lacking real work experience. This opinion has been enhanced in my mind after years working in companies, from big tech to startup. The development skills, at the end, boils down to code - both understanding code and writing code.

It’s hard to pick one

Choosing which OSS to contribute to is a tough problem. It has take me weeks to find one until realizing it does not actually fit after a few contributions. It takes time to select one because I nailed down that I would spend month on this one. I tried to set hard criteria such as: the owning company is hiring, the programming language is popular, the number of issues is large, PRs are merge regularly, etc. Turns out that’s too naive.

It boils down to reading code

Reading (code) and researching turns out to be more and more critical. After jumping from team to team, I realize that when joining a new team or company, it’s less likely that I will be thrown a nice project at all. Moreover, AI harnesses nowadays are throwing more text and code to our face day to day. My reading and understand speed happens to be the biggest bottleneck throughout the workflow.

Let’s pick one randomly!

Therefore, I decided to kick start a series of reading OSS randomly. I restrict the randomness by a few filters such as: select repo with programming language I am heading to apply for next job, have a certain amount of stars, in an awesome list, etc. With this, I avoid the infinite loop of finding and abandoning OSS. Even when selecting a “wrong one”, I still at least takeaway something helpful.

To start with, I created a skill called awesome-repo-roulette to randomly pick a repo within an awesome list as an input. It filters only repos with a proper recent number of activities (pull requests merged, opening issues). The parameters, if not specified, are default to a percentile in the whole awesome pool.

First repo is coming!!! See my session output below

Terminal window
/awesome-repo-roulette https://github.com/avelino/awesome-go, percentile 90
I'll run the roulette against awesome-go at percentile 90.
Ran 2 shell commands
Cache exists, so this should be quick.
Ran 2 shell commands
Pick: fleetdm/fleet
- 6,621 stars
- 2,959 open issues
- ~25 merged PRs/week (sampled from the last 100 merged PRs, so this may be a floor rather than exact)
p90 thresholds were stars ≥ 5,955, open issues ≥ 55, merged PRs/week ≥ 1.5. Only 69 of 2,725 repos (2.5%) cleared all three.
Fleet is an open-source device management / osquery platform, written in Go with a React frontend. Very active, and with ~3k open issues there is plenty labeled for newcomers.
Want another draw, or a few picks at once (--count 3)? The cache is reused, so re-rolling is instant.
✻ Cogitated for 22s

P.S: Just kidding :) The fleet project is so huge that it took me over 10m to pull not even 10% of the codebase itself. Randomized again and got https://github.com/go-task/task. Let’s try this one instead. Cheers.