Earlier this year I built my first real Open Source Software (OSS) project. I saw a problem that hadn’t been solved and I decided to fix it. It took some long nights, but eventually I released it. Other people eventually ran into the same problem I had and decided to use my project for their solution. Now, this project isn’t huge by any means. It’s not Redux, Babel, or React Router. You’ve probably never even heard of it. However, it’s big enough that I’ve learned many things about building an open source project that people rely on for their production apps. Surprisingly, my biggest and most valuable take away wasn’t what I thought it would be because it’s not in the usual “the benefits of building an OSS project” list.
Sure having extra hands on the project has been great and has added features that I didn’t have time to work on myself.
Sure it’s helped my personal brand and I get recruiter emails based on the project.
Yes, it gave me some street cred on Github.
But none of those things really mattered.
I remember one of the first issues that was filed to my project. It was something small and my thought process instantly went “This is kind of silly. All you have to do is X. It would take a beginner 15 minutes max in the code to see that”. But instead an issue was filed and later that week I got to it. Could I blame this person? Definitely not. If my thought process is like that for my own project, do other authors think the same thing when I file issues on their projects?
The most important take away for me — the one that will help me the rest of my career and the reason why I hope everyone would strive to build their own open source project, is this.
When you build your own open source project, you realize that other projects aren’t the black boxes they appear to be.
The natural mindset of frameworks/libraries/tools that you use is that there are really smart people called contributors who work on the project. Only those contributors are capable of actually contributing to the project. Everyone else just uses it and files issues when they find them. This isn’t accurate and if that’s your paradigm, whether by design or by accident, your forgoing special learning opportunities.
The only difference between the software you write at work and the open source project you use is that one you’re expected to contribute to and the other you think you can’t.