Open source is about collaborating; not competing
I did my very first open-source contribution in 2022, and I wanted to share my experience and the learnings that I gained along the way. This involved an open-source repository named Expertiza.
Expertiza is a web application through which students can submit and peer-review learning objects (articles, code, websites, etc). The Expertiza project is supported by the National Science Foundation.
To give an overview, I worked on fixing some design issues, refactoring, and adding new functionality to the website. The following contributions were made:
Why?
- The first question many of us have and even I did, was why would anyone ever contribute to an open-source project.
- Isn’t it just spending time and not even getting paid for it?
- How would I benefit from this?
As part of my first contribution, I found answers to many such questions
While it seems like free work and a waste of time, the beauty of open source is that no single entity has ownership of the software (In most cases, but may vary depending on the licensing terms). Thus, rather than perceiving it as working for someone else, it makes more sense to perceive it as working towards a common goal that you are dedicated to and believe in. Most open source contributors, are either users of the product and want to improve this product continuously both for their use and also the community, or believe in the product’s end goal.
Furthermore, as a developer, one gains a reputation as an open-source contributor. It provides you with a global platform to showcase your skills to the community out there. This is a great way to network with like-minded developers as well.
Finally, it gives you an immense feeling of satisfaction to see your changes merged and being used by thousands of people out there. One example, that always motivates me, is of an engineer from Microsoft, who made an open-source contribution to the Nasa Mars mission, and his changes were merged and deployed to the Mars rover. I can’t even imagine the feeling of seeing your code being used in such critical missions in outer space. Thus, you never know where your code might end up, just keep going!
How?
The next question that comes to mind is where to get started, and how to make contributions.
The first step is to identify what motivates you because without that it’s really hard to burn the midnight oil on something in addition to your day job. This may be software that you have been using and have been complaining about a bug that’s making it difficult for you to do your job, or maybe a feature that you have always wanted to see in this software.
Next, go to this software’s repository, and understand what the project is (README.md), next read the guidelines of contributions (Getting-Started.md or CONTRIBUTING.md), finally see if the project has a product timeline or active bug list and try to identify if what you intend to do is in line with the product’s vision. If yes, great, if no, the next step is to start a discussion on the GitHub repository using the Discussions tab, and start a conversation about your ideas. If the community agrees with your side of the story, you can then take up the task of implementing it.
During implementation, ensure you follow the coding standards that the project has been following and effectively use issues and discussions to raise concerns or share ideas and updates with the community.
Conclusion
I firmly believe that the software community has done a great job so far in sharing and collaborating. Hats off to selfless contributors, who believe in the betterment of society as a whole. Like me and many other developers who have relied on websites like Stackoverflow and GitHub to find answers, I thank all developers who spend time answering such questions and helping others out. Without such individuals, I doubt we would have been where we are today. I believe if we as a community continue believing in the idea of collaboration, no one can stop us from innovating.
Alone we can do so little; together we can do so much