Shawn Smith

Software Engineer

Playing in the Open Source Space

Who are we doing this for and why?


I made my first code contribution to an open source project in October, 2022. The impetus was that I needed the code to work. I was using a library called DefinitelyTyped in a small personal project written in TypeScript that leaned on the Spotify API. DefinitelyTyped is a monorepo providing complex type definitions for (among other things) the Spotify API. One of those definitions (for a /recommendations request response) was causing problems in my project. A little digging on my part revealed a tiny inconsistency. It was in fact a bug, but whether that bug lived in the codebase of the Spotify web API or the codebase of DefinitelyTyped seems a matter of perspective. So, let's just say 'inconsistency.'


My first step was to report this inconsistency as an issue on the DefinitelyTyped github repo. After a day or two without any activity on my post, I began to look into the code for myself. I ended up forking the repo, working on the problem and submitting a pull request on github. Eventually a maintainer commented on my PR, and after some discussion and a revision, it was merged. Cool! Add 'Open Source Contributor' to my resume!


It felt good to make a difference like this, to loosely belong to a community of people just trying to put some good out into the world, without the expectation of anything transactional in return. DefinitelyTyped is not owned, operated, or connected to any business (afaik); it's just a community of developers who see a gap and work to fill it, making Development better for themselves and other developers who they don't even know. Philosophically, idealistically, this rocks.


But these warm-and-fuzzies aren't the only upside to working in open source. For many developers, it provides an opportunity to get eyes and hands on codebases that are truly massive, with architectures, conventions, patterns and workflows (both good and bad) they wouldn't otherwise be exposed to. Depending on the size of your organization or team, you may think a couple hundred thousand lines of code is pretty big. That's not not big, but open source can give developers an entry into projects much larger, sprawling monorepos with frontends in TypeScript with React, backends in Go, maybe a little Ruby on Rails over here in the corner.


For me, contributing to DefinitelyTyped two years ago provided exposure to a codebase that implemented JavaScript/TypeScript entirely in Object Oriented form, as well as exposure to a very specific and standardized pull request format. Any exposure like this serves to broaden your experience and equip you with higher-level skills, understanding, and wisdom.


A third upside for developers contributing to open source may be a little less intrinsic, but can be very valuable. Many employers look for open source contributions as a way to select through candidates. They often assume an idealistic, values-based posture like "We love Open Source", but I tend to think it's just a mechanism to narrow the field and make an unmanageable pile of applications a little more manageable (kind of like asking for a certain number of years working with a specific technology, as if that says anything about the value a candidate can bring to a team). Ok, jaded sensibilities aside, contributing to open source really does make you a better candidate; as mentioned above it will give you experience and exposure that you can talk about in interviews and that will in fact allow you to make a bigger impact in your current role or the next one.


To this end, I have recently begun following a number of open source projects on github and was even able to submit a PR on one (that's right, I'm now up to two bullet points in the Open Source section of my resume). Many of these that I follow are projects in the same vein as DefinitelyTyped: a loosely connected community of developers just trying to make a difference. Some examples are material-ui, shadcn-ui, vite, and chatwood. I'm keeping a close eye on these for an opportunity to contribute, understanding that there are more ways than with a PR to contribute: reporting bugs and issues, commenting on others' issues, tagging and labeling, etc.


But now it's time to talk about a not-so-warm-and-fuzzy aspect of open source, a space that is not occupied by the altruistic projects described above, but by businesses. The feeling on this for me is conflicted at best, because there is value in participating in this space, but there is also a fundamental disconnect. In addition to the above, I am following open source projects run by organizations like Facebook(Meta), Spotify, PayPal, and even retail giants like Target. We're talking about a category of multi-Billion dollar for-profit enterprises with massive development teams, with massive resources to hire and pay top talent to develop and maintain their software, and some of whom nonetheless participate in what seems to be an 18-month layoff cycle.


Ok, calm down, cool your jets . . . I'm not saying that all of these companies I just name-dropped do that last thing. I'm saying they all belong to a category where some do. The relevant point is that they have the resources to recruit, hire, and pay top talent from across the industry -- and they do -- so why are they off-loading some of their development work for the public to do for free? This, fundamentally and philosophically, doesn't sit quite right with me (maybe I'm missing something?). Nonetheless, I'm in their codebases, watching and waiting for an opportunity to contribute. The hope, of course -- although futile -- is that I may develop some connection or at least recognizability with some internal team member, something that may benefit me in some future job search. That's a long shot, but at least I'm exposing myself to things that can help me to stretch and grow, and there's limitless value in that.


The subtitle of this post is "Who are we doing this for and why?" Ultimately, that's up to each of us to decide for ourselves. For me, being part of open source ventures like DefinitelyTyped helps to satisfy my need to work on projects that make a difference for people. Working on open source of any flavor exposes me to people, architecture patterns, code patterns, conventions and workflows that help me continue to learn and grow. Each codebase I leave a footprint in (no matter how small) strengthens my resume, strengthens my ability to speak knowledgeably in interviews, and most importantly strengthens my ability to solve problems as they arise, help the developers around me in their own growth, and make a real difference for my employer and our customers.