The Virtues of Open Source
I started this school year after finishing an internship, where I was working with a team of developers, writing software, attending stand up meetings, code reviews, etc. Open Source quickly became a non-optional thing for me to participate in, because I realized it was a decent way of keeping up the momentum of that experience while in school.
One-off assignments don’t seem like a very good reflection of software development itself, they’re just a way of exercising certain concepts. You’re rarely encouraged to keep close attention to best practices or the maintainability of the code in the future. You’re not (usually) getting feedback from piers or learning to work with them to complete something, at least not in a way that’s encouraged.
Most importantly (to me anyway), you’re only learning to work from information that is spoon fed to you, on something that someone else will almost always have the answer to. You’re not developing the ability to take on totally unfamiliar challenges and adapt through your own research, which was a common demand I faced during my internship. I was scared to lose touch with that, of stagnating.
Before I made a concerted effort to participate in Open Source projects, in my mind a lot of them were enigmatic and a bit off limits, in terms of larger or more popular projects. It seemed too good to be true that I could just jump in and contribute code for popular development tools or even languages. It took a while for me to realize that I was ready and capable of doing so.
It started small with a contribution to a project called Filer. At that point I wanted to learn how to contribute to something I didn’t myself own. I learned the process of looking through and ‘claiming an issue’, creating a PR for it and working with any possible feedback.
From there I participated in an event called Hacktoberfest. It was a fun exercise where I learned about a lot of different project types; although it was a bit chaotic because there was a lot of competition to complete PRs. I’m glad I went through it because it was a good primer for future work and I got a decent t-shirt out of it.
I like to draw and make storyboards, when I have the spare time to at least. So the next project I went to work on was an application I used before called Storyboarder, which was immediately appealing to me because it was free, and a lot of other storyboarding software most definitely it not. The software itself seems to be gaining traction despite its insanely small development team, probably because people prefer free things, as I do. I thought if I became a regular contributor I could help build something sorely needed, that could really use the extra help, even if it was small bug fixes.
However Storyboarder was the point where I began to build confidence and realize that I wasn’t stuck to beginner issues or smaller projects. And as soon as I reached that point I got distracted by other things, more ‘monolithic’ projects.
I think one of my proudest contributions to date was for Node.js. This is something I never would have imagined contributing to even just a year ago. In fact before 2018 ended I was starting to develop of list of larger projects that I felt similarly about:
- VS Code
- Mozilla’s Voice-Web
- Typescript (kind of, learned that I need to research it more before making a PR again though)
But because I was participating in so many different projects, I wasn’t gaining any real traction in a particular one. It was fun to experiment with different things, but I didn’t like that I was only ever making small fixes and not working in any one community.
To remedy that I decided to contribute to fast-dna. As of now I have 6 merged PRs all centered around a particular task/feature, and have become a lot more familiar with the project in general.
There’s no doubt in my mind that actively contributing to Open Source during this school year was a good idea. It was difficult at times but I’ve gotten a lot out of it. I only wish that I started sooner, did more with it where I could, was bolder earlier in my decisions.