How to become an Open Source Contributor


Contributing to Open Source Software (OSS) was something i had thought about a few times before but never quite made it a priority. Fortunately, things fell into place over the past few months and i made a few open source contributions in 2022. It was a great learning and enjoyable experience. In this blog, I will share some tips and lessons learned in hope of motivating you to also become an OSS contributor.


1. Find an Open Source project that aligns with your interests or you use at work.

For me it was the Opentelemetry project and in particular the opentelemetry-demo app within it. I am passionate about the  Observability domain as i think it's the key to improve reliability and availability of software applications that we all use and rely on in our day to day lives (news,  banking , map mobile apps and web sites etc.). Opentelemetry project is an OpenSource project within the Observability domain backed by multiple observability vendor (AppDynamics, Dynatrace, Datadog, Honeycomb, LightStep,  etc.) as well as cloud vendors (AWS, Azure, Google etc.). My current employer Cisco Appdynamics is a key contributor to Opentelemetry project and they highly encourage employees to contribute to it. Opentelemetry is also an integral part of my day to day work as the product i work on - AppDynamics Cloud supports Opentelemetry based ingestion natively. So contributing to Opentelemetry project happened organically for me due to my work and interests. 

Spend some time identifying what your interests and goals are. See if your company is already using some OSS. Between the two very likely you can find OSS projects you would be interested in contributing to. 


2. Go over the Repo Readme, then Clone it and get familiar with it 

Typically every OSS repo now a days has a Readme listing why the repo exists, what benefits you can gain from it etc. Depending on whether the repo is a library or an application - it may have instructions on building, deploying and using it in different context. Try out the steps listed - you will be surprised that sometimes the steps listed don't work on your environment or setup and fixing this issue could be your 1st PR ! 

As next step browse around the repo in your IDE of choice - VisualStudio code, Intellij IDEA or GitHub CodeSpaces etc. Try to get a feel of how the repo is organized , where are the build files, core logic files, utilities,  different constructs used etc. You may come across some new terms - google them to get familiar. 

 

3. Go over the repo contribution guide - OSS projects are always looking for more contributors and welcome new contributions.Very likely there will be contribution guide section or link listed in the readme. See this as an example. Make sure you have informed and received approval from your company for open source contributions. Many big companies have an Open Source office for such approval, for smaller companies you should bring it up to your manager and get approval. Rarely some companies due to security or other reasons may have strict rules on not contributing to OSS.

For me it was getting the Contributor License Agreement approved through my employer. Once you get the approval, next steps is to Fork the  repo, create a branch off of your fork, make change to it and push it. 


4. Join Repo's slack channel - Once a repo starts getting users, more contributors and popular the repo maintainers typically start a slack channel to discuss roadmap, ideas, answer questions etc e.g.  this is the Slack channel of open-telemetry demo repo. Browsing through it you get a good idea of the prior discussions and debates that have happened and get more context about the current state of the repo.


5. Browse around open issues in the Repo  - See this as an example. With your unique experience and background you may be the right person to fix some of these issues. Some repos add labels such as "help-wanted", "good first issue" etc to make it easy for new contributors to contribute.


6. Report a bug - As you use the repo or it's library for your use case on your machine you may encounter a bug. Check the open issue's if it's already reported, if not then go ahead and report the issue. Most repos will have Template for this. Be concise and precise in your reporting so other's can follow the steps to reproduce it. Mention if you found a workaround so if other's ran into same issue they can be unblocked until the fix is made. 


7. Try Fixing the issue you reported  - This is the fastest way to get the issue resolved. Depending on the type of bug you may be able to do it yourself ,  after some help from maintainers or will need to wait for maintainers to fix it due to complexity of issue. For me, while using open-telemetry demo i reported this issue and after discussion with the maintainers I submitted a fix for it. Fixing the issue yourself is a great way to learn the contribution process and lowers the barrier to future contributions. 


8. Look at prior Pull Request's (PR) that were merged -  This gives  you an idea of what information to generally provide in your PR and what to lookout for based on the comments by maintainers or approvers. It is also a good way to understand the code piece by piece. Most repos have a PR Template with guidance on what to add. Depending on the change somethings to consider adding include - what was changed and why, pros and cons of the change, how the change was tested, was documentation updated, any relevant screenshots showing the runtime result of the change etc. Small, focused and well written PR's are more likely to get approved and merged soon and also reduce the maintenance burden on the contributors. 


9. Be Patient and Understanding - Realize most approvers and maintainers are working pro-bono and have full time jobs. Sometimes their response may be slow. Issues requiring design changes or tradeoffs need more discussions and hence time to resolve. Sometimes your PR may get closed as it doesn't align with the repo roadmap. Unlike in a professional setting where you can quickly have a slack conversation/ setup a Zoom/ webex call and expect a fast resolution from repo maintainers OSS generally have no such agreements and some issues and PR's can remain open for a long time. In such cases you can create and maintain your own fork to meet your needs.


Contribution to OSS can be a great learning and satisfying experience. You get to interact with like minded individuals from around the world who share the same interests in Open Source as you. Like me you may have thought of making OS contribution for a while. With 2023 around the corner what are you waiting for ? Make it your new resolution and get on the journey to become an OSS contributor !



Comments

Popular posts from this blog

Software Alerting maturity levels

Playwright - The Game Changer Test Automation Tool

New Habits for 2023