Why I Believe in Open Source
The tale of a lone wanderer
Before we jump into the reasoning, I want to take a step back to walk you through my train of thought, as I believe it would feel out of place to present those ideas without telling a bit of my background, just as a painting’s meaning deepens when we know the artist’s story.
I’m a self-taught engineer with around two decades worth of experience in the software industry. Most of my knowledge and experience was acquired through contact and use of OSS (open-source software). Many such technologies I never invested a single cent to have access to. Over the years I have professionally worked with over a dozen different languages, most of which in the JVM. Not only that, but everything ranging from neovim to kubernetes, that I use daily, was made available to me (well, to us) for free.
I learned to set up and scale kafka clusters and how to optimize mongodb aggregations; I’ve debugged postgres stored procedures and tinkered with nix for reproducible builds and deployments; I’m a generalist, by nature, and I’ve been blessed with the opportunity to work with a diverse range of technologies.
So, where am I now? What I’m about to write now comes from the point of view of someone who is minuscule in the grand scheme of things and yet is thankful and grateful for all that was offered. I’ll be truly happy if, like a philosopher in a Stoa, I manage to inspire others.
Standing on the shoulders of giants
I invite you to do a mental exercise for a second:
Try to list all the software you rely on - libraries, tools, services, etc - on your day-to-day. Then, try to list all the software that each of those is built upon - again, libraries, services, etc. Quickly you’ll realize that this list is much bigger than we can count. If if by chance you manage to reach an end to this list, there’s a big chance it has already changed by then.
The point I want to make with this exercise should be pretty obvious by now: Our productivity is profoundly supported by tools developed by others.
Our craft is no longer, and for a long time already, small enough so one person could master all aspects of it. It would take an infinite amount of work for one person to put up an SSH-based coffee company online from ground up by creating all their pieces (operating system, ssh library, language, compiler, etc).
Yet, we’re witnessing, day after day, software to reach new heights and the whole complexity of it all might not entirely fit in a chunk of thinking buffer.
And this is fine. I’m not going to be an old man yelling at the cloud here. Quite the opposite in fact, I think we should be thankful. It is only through such a complex net of human interaction that we have the ability to reach peaks that were unimaginable ten or twenty years ago. We could look at it from an economical perspective and realize that we’re only now able to achieve those because of the pre-existing conditions that were given. We’re not spending time building those, so we can, with them, build more.
And this is my first point in favor of open-source, as I don’t think we’d be as fortunate if all we had available was proprietary and closed source.
I speak open-source
In the last section I deliberately referred to this amazing collection of open-source work as “a net of human interaction” because, well, I believe software is a way of communication.
Software is a form of communication. On a small scale, we communicate with words; but in a large ecosystem like the open-source world, we communicate through code.
Let me explain: in a small group of people we can communicate with each other individually using words, sentences, etc. In larger scale, we have higher kinds of non-verbal information exchange: In economy, we have supply and demand; In open-source software, we have code to express intent and communities express afinity to this idea.
Participating in OSS communities is a way of belonging in a society where ideas are exchanged faster and at a larger scale than ever before. And it exists independently of any economical signals, because many projects bear significant value in our OSS plane while still not achieving economical success (for reasons beyond the scope of this article I suppose, so I won’t go further this route, though I’d gladly discuss this elsewhere).
We are inherently collective beings, and since we are relying on what others have built for us to be productive, figuring out a way to belong to this large pool of talented people is nothing but fair. And we don’t need to make it a stereotypical manifestation, as tribal marks we sport in the physical world. We do so by keeping our communication open.
Humbled and grateful
If it wasn’t clear up until this point, I’ll make it explicit: I’m very grateful for being able to sustain a long lasting career with knowledge and skills acquired from tools shared with me by the open-source community. It was only through this that I managed to reach the point I’m at in my life and I am completely sure that is true for many if not all reading this post.
Knowledge shouldn’t be locked behind closed doors and hidden from us. It belongs in the wild open. Free access to knowledge is what will allow people to make their own minds and build their own journey. I can attest this through empirical, anecdotal evidence. Ideas are not a scarce resource. Sharing knowledge doesn’t diminish it. After all, I don’t lose what I know after sharing it with you. We should not treat knowledge as if it was some kind of rare material that we want to safeguard away from the use of others.
The impact that open-source had and still have in transforming peoples lives and multiplying our technology is impossible to calculate and we can only barely imagine how deep and profound it is.
So being part of this and supporting open-source software is solidifying this foundation in which we are making the world a much better place.
Ants work
Another trait of OSS that really resonates well with me is the fact that it is decentralized, distributed and chaotic. And yet, almost magically, everything works perfectly. This is such a fundamental property of open source and attests one of the true natures of our universe, the organized chaos.
Open-source work exists independently of our will, because each piece is individually driven by work and effort of autonomous actors. All with their own reasons and goals, contributing to the bigger picture, while yet, paradoxically, focusing on their own little microcosm.
It is through the open-source communication, the activity, the participation, the intent, the collaboration, that the pieces interconnect with their nearest neighbors and power the gears of this ever-moving machine. When we zoom out, we end up with a net positive always. And this trumps any sort of centralized-planning-based hierarchy organization.
In other words, the OSS is an environment in which not only we get the freedom to use software, but we also get the freedom to write software. The freedom to be in the driver seat, to exercise our autonomy, to try, to fail and to learn. If it was free to use only, it would be freeware. If it was free to read source, it would be source available.
Being open-source means that it is free throughout. Free do our share in this amalgamation of chaos, however we see fit.
And although countless people are acting in their best individual interest when writing software, we still manage to get fantastic products as a result. This is a testament to our adaptability and creativity, for sure.
Virtue of Sharing
As I hinted in the first section, I have a strong empathy for the school of thought that inspired Marcus Aurelius.
For those that are unaware, in their secular beliefs, stoics had a deep sense of purpose and acknowledged that it is through helping others we can fulfill it.
Given the one-of-a-kind nature of this environment, one which we don’t see in other areas of human development, I can surely say that we are privileged to have access to a community that is in the vanguard of the betterment of our kind.
No other area of human interaction has such intricate, unrestricted network of collaboration, knowledge transfer, complex composition of independently developed pieces at a global scale with microsecond latency.
Scientific papers are often hidden behind paid publishers, a lot of the manufacturing industry locks their factory secrets behind closed doors and patents slow down progress significantly.
We have the unique position in which the work we do can reflect positively on others lives. Performance optimizations we contribute to one project can reduce a company’s cloud bill, and thus save someone’s job.
Making some software more secure can reduce the risk of frauds or hacks which would impact negatively the lives of others.
We can’t predict it, nor we should think too deeply about it, but each of us is, somehow, positively impacting the world we live on.
A little feather in the wind
And how does that affect, if at all, Penna? Why did I decide to write this article here?
Penna is a small library, with a minimal community. It can be easy to feel tiny in such a vast ecosystem. But this is a note to myself, and others that might cross the same path, to remind us that we should not fear. That we belong. And as such, as small as Penna can be, it is relevant.
It is also a note of commitment, since being an open-source maintainer is hard on its own. As humans not exclusively belonging to this fantastically intertwined engine that is the OSS community, we have families, our health, daily jobs. We’re human, and open-source is a synthetic component of human life that we accepted to be part of. So as much as I’d love to see things moving fast and making as much noise as the other pieces around, this is a reminder that I’m just another ant in this giant forest, and as such I should keep doing my thing, independently of how loud the noise outside is.
And thus, Penna will continue being developed. Perhaps at a slower pace that what I expect, but nevertheless I shall remain stoically staid knowing that it is still a moving gear in this engine.
And as an integral part of the open-source ecosystem, I would be thrilled to know more about your experiences with Penna, so this is also an attempt to broaden this two-way communication channel. Penna can greatly benefit from learning more about your experiences, ideas and suggestions as well as it would be personally rewarding to know more about how Penna is influencing you or your project. Join our discussions channel and share your thoughts and ideas on how we can improve Penna together!
Thank you for reading this article to the end and helping making Penna a better actor in our open-source community.