I love open source software (OSS). Ever since I installed Linux on the computer I built for my first year at college over a decade ago, I’ve been hooked. Not hooked strictly to any certain piece of software or Linux distro, but to the philosophy.
In kindergarten we’re taught that “sharing is caring” and that we should give to others those things that make us happy so they can feel that as well. Many of us have brought that with us into adulthood, and it is still wonderful. However, when you take that old adage from the material world into the digital world you’ll see that ones and zeros can have a nearly infinite multiplier effect.
Traditionally when you give a possession to a friend, then you no longer have it, making it a zero sum proposition—except for the happiness you have both gained from the transaction, which I certainly don’t mean to discount. Software, on the other hand, is nothing more than information. Like a good idea, it can be given away as many times as you like while you yourself still get to retain it. Furthermore, software can be perfectly replicated endlessly, so you can give it to a friend, and they can give it to two friends, and so on ad infinitum.
The determining factor in whether you can start this chain of infinite giving is whether the creator of the information allows it or not. Just one person selflessly donating their time and talent toward building a piece of software that others want to use and then asking nothing in return for it can set off a domino effect to improve the lives of countless others. I find it to be a beautiful idea. Those who believe in this idea strongly would call it a beautiful philosophy.
The regretful position I’ve been in while using OSS for the last umpteen years is that I could only be a consumer of it and never had the skill necessary to give back to the community. This one reason of many that I’ve been truly excited to dive into learning software development. So this week it was time to dive in and make my first contribution to an OS project.
My friend Sonia and I set to work on an interesting project that had issues marked as help-needed. Unfortunately we never even made it past setting up the development environment. Their policy was that all contributors work on it within a virtual machine, which is actually quite brilliant because it guarantees that all developers are working in an identical environment you won’t run into the problem of “Well I don’t know why my changes aren’t working for you, it worked on my machine.” In this case, however, it was our undoing. After struggling to get the VM up and running we could not get the test suite to initially pass and ultimately decided that to meet the timeframe we were on for this project we had to move on.
The second project we found was more approachable. It was definitely a struggle to dig into a huge brownfield code base just to add a relatively minor feature. After sorting through the code we found where our new feature it belonged, wrote a test, and implemented it successfully.
Ultimately we have no control over whether our contribution gets accepted by the maintainers of the project, so we just submitted it and hoped for the best. To our delight they saw our contribution within just minutes of submission, they gave us very positive feedback on our work, and they merged it into the production product!
My goal is to look back at this years down the road and remember it as my first of many contributions to the world via writing software for a greater good, and then starting a chain of altruism by giving it away.
You certainly have a way with words, Calaway! I appreciate that you started your post with a beautiful exposition on your own personal history with the concept of contributing and sharing. That segues beautifully into your thoughts on contributing as a new coder. The narrative structure is great because that setup allows you to then dive right into our personal experience with contribution. It's a bit like a hero's tale, fraught with difficulty but finally resulting in success. That makes it engaging and pleasant to read. Well done!