Photo by Richy Great on Unsplash

Open Source Contribution 101 🌱

How to get started?

Chaitanya Prakash Bapat
4 min readNov 30, 2022

--

Back-story ⏮

As a mentor at ADPList, I’m often asked about my open-source contributions as Apache committer and how to get started with Github.

Being appointed as an Apache Committer (apache/mxnet#19512) was one of my biggest achievements in the world of coding & technology. I wish to share the learnings from spending time with the open-source community. This prompted me to mentor early-career software professionals and computer science/engg university students. This article is an attempt to answer the question —

What would I do today in Nov 2022 if I were to start my journey in open source?

🙋🏽‍♀ What does open-source mean?

Github is the poster-child of open-source universe, having popularized the notion of repositories, pull requests & version control. Open-source is essentially about dezocratising access to the source-code. It’s about tearing down the walls pasted with non-disclosure agreements [NDAs] and restrictive copyrights & trademarks ™️. This doesn’t imply that open-source code doesn’t have licenses or copyrights. It is about providing freedom to share knowledge and information publicly with the security of proper citation and referencing. Open-source is a great leveler, in that sense. People from across the world can read, comment, write and express freely about the software being developed in the open-source world. It’s this freedom of expression, the fundamental human right, when applied to the world of software and technology, manifests in the form of “open-source”.

🙋🏼‍♂️What does open-source contribution entail?

Alright, now that we are on the same page as far as the term “open-source” is concerned. What activities are associated with OS contributions? 🧩

In my opinion, following sets of actions fall under the umbrella of OS contributions 📝

  1. Create issues, bugs & ask questions
  2. Raise Feature requests [through issues, jira or project tracking software]
  3. Ideate & make Proposals
  4. Comment and participate in discussions
  5. Answer questions
  6. Fix bugs
  7. Review code developed by other members in the community
  8. Add tests, improve the testing/CI/CD infrastructure
  9. Write new feature code
  10. Attend virtual/in-person events
  11. Evangelize the library/product/service
  12. Actively communicate in the discussion/chat channels/dev lists
  13. Vote & participate in the release process [of library/product/framework/service]

and many other things..

🏁 How should I get started?

I’d pursue 1 of the following 2 routes

  1. Famous project by renowned open source organizations
  2. Projects I’ve most context on

☝🏽 Find my first project(s) to contribute

Look up familiar projects supported by famous Open Source Organizations

Famous Open Source Orgs — GNOME, PSF, ASF, DF, LF

✌🏽Select from my high-context projects

An easy way to make meaningful impact to the developer community is when you already have some built-in mental model of the underlying product/framework/service. I’d channelize my energy in making those aforementioned open-source contributions by leveraging the knowledge & the context I’ve built thus far as a developer.

This could mean different projects for different developers, obviously based on the software stack they’re most used to.

I’ll list down common open-source projects based on languages:

Source: octoverse.github.com | 2022

Top 10 Javascript projects by Technical Geek

  1. React by Facebook/Meta
  2. Tensorflow.js by TF [originally by Google]
  3. Node.js
  4. Angular.js
  5. jQuery
  6. Node Package Manager [npm]
  7. Vue.js
  8. Ember.js
  9. Meteor.js
  10. Polymer

Top 10 Python projects by hackr.io

  1. Tensorflow — deep learning
  2. matplotlib — data visualization
  3. Flask — web dev
  4. Django by Django Software Foundation
  5. PyTorch — originally by Facebook/Meta
  6. MXNet by Apache Software Foundation
  7. Ansible — deployment, Ops & orchestration tool
  8. Requests — HTTP library by Python Software Foundation
  9. Scikit-learn — ML in python
  10. Pandas — data science/data analysis

Top 10 Java projects

  1. OpenJDK
  2. RXJava
  3. Apache Pinot — OLAP datastore
  4. Hazelcast — distributed computation and storage platform
  5. Google Java format — Google Java Style
  6. jOOQ — SQL for Java
  7. Spring Boot
  8. Glide — image caching and generation for Android
  9. Guava — core Java libraries by Google
  10. mockito — mock, test framework

For rest of the languages, I’d just

  1. search on Google with keywords “top 10 open source projects” and “language”
  2. Search on Github — https://github.com/search?q=java+language%3AJava&type=repositories&l=Java

--

--

Chaitanya Prakash Bapat
Technology with Chai ☕️

Music, Sports and Data. Engineer @ Facebook | Apache committer @ Apache MXNet | Ex- Amazon | GaTech