I love contributing to open source projects. I think open source is a great way to build software. To be really honest and It may be counterintuitive, but any critical software should be open source.

I have contributed to projects like -

  • Apache Datafusion-Comet - An apache spark accelerator
  • ParadeDB - Full text search over postgres
  • Arroyo - Distributed Stream Processing Engine - still in progress
  • raft-rs (maintainer and author) - An understandable, fast, customizable and scalable async-await Raft consensus algorithm implementation with zero-copy and self-healing storage.

What is Open Source?

It is a software development methodology that allows the source code to be viewable online. Yes, I know that it is a limiting definition but it is the most concise one.

Whether you can contribute to a project or not is a different question (for example - sqlite). But the fact that you can see the source code is a big deal.

Open Source Impact

Modern world is built on open source. From the Linux kernel to the web browser you are using to read this blog, open source is everywhere. That is enough to show the impact of open source. Anyways, this post is not about the impact of open source.

Why contribute to Open Source? Why am I contributing?

I cannot tell you why you should contribute to open source. But I can tell you why I contribute.

  • Learn from the best - We keep asking for “challenging” work in our day jobs. Open source gives you that. You get to work with the best engineers in the world. Network with them. Learn from them. See how they think. Watch them writing code. It is a great learning experience.

  • Building a body of work - I am no genius. I am learning. Writing code is hard. Writing good code that will be used by others is even harder. An author has books, A musician has songs, A painter has paintings. What do you I have? Writing open source is, at the moment, my way of building a body of work. Something which is independent of my employer.

  • Autonomy and Purity - I get to work on what I want. No one arbitarily decides my story points, capability etc. No holier-than-thou PM lingering around. It is like doing pure mathematics. You are free to explore. You are free to fail. You are free to succeed.

  • Giving back - Honestly, I am not at a stage where I can think about this.

How to choose a project to contribute?

  • Interest - Choose a project that you are interested in. It is hard to contribute to a project that you are not interested in.

  • Community-owned Projects - Projects from organzations like Apache Foundation, etc. are good to contribute to. They are here since decades and still no surprise with sudden license changes.

  • Active Projects - Choose a project that is active. You don’t want to contribute to a project that is dead.

  • Alignment with your goals - My current contributions are aligned with my goals. I wanted to get better understanding of distributed systems and databases. So I chose projects that are in this domain.

What is not Open Source?

I don’t want to gatekeep but thinking that a project is open source just because it is on github is a wrong notion. Open source is not just about the code. It is about the community, the license, the governance, the transparency, the decision making process, the contribution process, the code of conduct etc. The overall impact of the project on the society.

That’s it for now. I will keep updating this post as I have more thoughts on this.