Contribute to Open Source:A Comprehensive Guide for Everyone
I started making Open Source contributions in 2019. It is one of the best decisions I have personally made.Fri Apr 21 2023 21:08:51 GMT+0000 (Coordinated Universal Time) 13 min read
I started making Open Source contributions in 2019. It is one of the best decisions I have personally made. I never thought about the doors Open Source would open for me in the future.
And I often get this question “How can I contribute to Open Source.” It’s time I put my experience and suggestions in a blog.
Of course, taking advice from a random person online is not recommended, so let me tell you a little about myself.
I am Angular Google Developer Expert. I got recognition by Google for contributing to Angular, and I am in the Top 100 contributors for Angular.
I am GitHub Star, a program by GitHub to recognize individuals contributing to Open Source, Teaching other developers, and building communities.
Please don’t take my guidance as the words of God. Everyone should follow what works best for them. I am sharing my experience here, just like everyone doing their best for the community.
How to start
I categorize folks into 2 different categories when giving suggestions on contributing to Open Source.
Note: I will not use the word, developers, as it becomes particular to folks writing code. Open Source is for everyone.
- Freshers (New to Tech)
- Experienced (worked in Tech for a few years)
Freshers (New to Tech)
As a fresher, I suggest not getting attached to any framework or Technology. Keep an appetite for learning and exploring different frameworks and Technology.
For example, several frameworks exist if you choose frontend development (React, Vue, Angular, Solid, Quick). Probably by the time I finish this article, there will be one more frontend framework.
Learn basics; most frontend frameworks exist to solve the same issues differently.
I would recommend a book called [The Framework Field Guide](https://unicorn-utterances.com/collections/framework-field-guide) by my friend [Corbin Crutchley](https://twitter.com/crutchcorn)
Once you start learning the framework or Technology that you are interested in. You are ready to start contributing to Open Source. Let’s see how.
Documentation is a trustworthy source of information when learning about any framework or Technology. I suggest anyone learning a new technology or framework read the official documentation. I know different folks prefer different mediums when it comes to learning. For example, some prefer videos or written text and vice versa.
But this can be your entry into Open Source. The official documentation is generally written by the official teams or contributed by several contributors. By reading, you can also review if the contents are up to date or incorrect.
For example, my first Open Source Contribution to Angular was a documentation change https://github.com/angular/angular/pull/29376
Here is how Dan Jutan started contributing to docs and turned it into a career, heis part of the core team of SolidJS and AstroBuild.
Other ways to contribute
Apart from the documentation, which is the best way to get started in Open Source, you can contribute in a few other ways.
- Design: There are many open-source projects where you can help by improving the website’s design. You need to know HTML and CSS.
- Accessibility: Accessibility is critical for many Open Source projects and documentation. You can also help by improving accessibility.
- Testing: Only some Open Source projects have test coverage, and only a few open-source developers, can invest time in writing tests. If you are learning tools, you can help by writing tests.
Not many freshers get to choose what Technology or framework they will be working on once they join a company. Contributing to Open Source gives you an early advantage and experience, so you can get hired to work on the Technology or the framework of your liking.
Experienced (worked in Tech for a few years)
Only some get to contribute while in college. You may have completed your college and never contributed to Open Source. And now you work at an organization with a few years of experience. Suddenly you hear about Open Source and see many developers rising in careers because they contribute to it.
It’s never late to start contributing to Open Source. If it makes you feel better, I made my first contribution to Open Source after working in Tech for 11 years, after my 32nd birthday.
- I became GDE for Angular on my 33rd birthday.
- I became GitHub Star a week after my 34th birthday.
Only the right intention matters when it comes to contributing to Open Source.
How to start
OK, enough about me. Let me share how you can start contributing.
Contribute to Technology or framework you use at work.
In today’s world, the chances are all Technology or framework you use at work is Open Source. As you already have been using the framework/technology, it is a great way to start contributing to Open Source.
Every project you work on uses a lot of Open Souce libraries.
Everyone prefers contributing to big Open Source Projects like .Net, Angular, or React. But the Open Source libraries are what make the ecosystem more usable. As a consumer of the lib, you are in better condition to help the library grow.
Ways to help as Developer:
- Upgrade the library’s dependency to the latest version.
- Help to fix a bug.
- Help to implement a new feature.
- Help improve the documentation.
- Help improve the code quality.
- Integrate new tools like lanterns.
- Help increase the code coverage.
- Create content about the library.
- Test the new feature releases.
- Support the library using GitHub Sponsors.
Ways to help as a designer:
- Improve the design of the component library you use.
Ways to help as a tester:
- Write the test for the library or framework you use.
- Help improve code coverage of the libs you use.
Open Source some work
As a developer, we solve many issues at work, most of which will be very specific to our business use case. But if you think something can be helpful for others, convince your manager to make it Open Source if your organization supports Open Source.
Contributing to the framework/Technology you use
If you want to contribute to the framework/technology you use, if they are Open Sourced, the best way to do is to:
- Start with documentation.
- Test the new beta releases.
- Try out new features available.
- Upgrade your side projects to the latest version.
- Participate in the RFCs for new features.
- Create content, write a blog, or create videos.
I have made several contributions to Angular by trying out new releases. I found issues and raised PRs to fix those issues.
- The most important thing is never to have FOMO (Fear of Missing out). If you have not contributed to Open Source, it’s not the end of the world.
- Don’t do Open Source just because others are doing it. It’s OK to join a company and work 9-5. Remember, all Open Source projects need someone to consume it. You can be an ambassador of an Open Source Technology or framework at your workplace.
- Please don’t do it for SWAGS. Everyone loves SWAGS, but just doing Open Source for SWAGS is not worth it.
- Be consistent. You can be more successful only by being consistent. There is no shortcut when it comes to Open Source.
What Can you achieve by Contributing to Open Source?
I spoke to several Open Source Contributors and asked them to share their experience, and this is what they said:
I started working/getting involved with open source back in my time as a full-stack technical lead first with Drupal and then AEM lead dev, although you can say I was part of communities that shared code even before collab hosting was a thing.
Open Source is the cradle of innovation, ideas and best software and the communities around it have made my life richer in both the human and professional aspects.
My advice would be to find a project they are excited about or has helped them, get involved with their community, go read the code, read the issues. Find issues labelled “first-good-issue” or something similar, and give it a try. It can feel intimidating at first but once you realize how much maintainers need and appreciate help, and the multiple ways of helping (triaging, documenting, creating samples, spreading knowledge, etc) it is a very rewarding form of being part of something: software and community.
I started doing Open Source as a contributor in 2015, but it was extremely limited to my need. If my customer had created an issue on our product and the fix fall in the areas of any Open Source library, I tried to fix them… but not many. It was in 2020 when I realized the real power of Open Source. What struck me the most was the “Community” around it. Think of it, the project is open to view, code, and enhance. Everyone is working on it, and most of them do not even know each other well. But still, they need to work together to make the project go! This made me think that apart from being a contributor, I can maintain meaningful Open Source projects, which can eventually help people learn and understand the essence of community building! So I started creating projects with exciting use cases and made them Open Source for contributions. It also allowed me to talk about open source and make more people aware of it. So far, I have maintained 8 Open Source projects, and 5 of them get active contributions. Two of them needs special mention, I guess. One is ReactPlay: An open source platform to learn ReactJS with a hands-on practice model. It has grown a community of close to 1K amazing folks. We also do hands-on workshops at colleges, online events, spreading community awareness, etc. I see it going beyond just ReactJS. The second one is fork-me: A simple project that allows any newbie to learn how to adapt to the Open Souce ecosystem by forking-cloning-changing-pushing workflow. So, my motivation was to get my own problem solved as a contributor, but now it has changed to educate more and more people about Open Source, teach them with meaningful Open source projects, Build a strong community presence that helps connect Students to the Industry(I see its possible through Open Source!).
Emma Dawson :
I started contributing to open source during Hacktoberfest 2020. At first it was just a fun way to practice and get better at coding but then I got involved in the community and realised I could make a difference by contributing to projects. I especially enjoy contributing accessibility fixes to websites because issues are not hard to find and fixing them really improves things for people.
To contribute to accessibility of Open Source projects, go to any project with a website and run a Lighthouse or Axe Dev Tools check. You’re bound to find several issues that are easily fixed like missing alternative text on images or color contrast being too low. Check that buttons are marked up as buttons and links as links. Can you activate all buttons and links with a keyboard? And why not test the site with a screen reader? Are you able to understand everything without looking at the screen?
How Companies can contribute to Open Source
Big corporations are the biggest consumer of Open Source, but most of them are not giving back to Open Source. Even many companies include a clause in the employment contract that you can not contribute to any Open Source projects, a practice which I have seen at many workplaces in the past, not sure if things have improved, but do comment if you have a similar clause as an employee.
Companies need to understand, that they cannot be only consumers, they need to support the Open Source ecosystem, there are several ways the organizations can do this.
GitHub launched the Sponsors program years back, and it’s available in 68 countries when writing this article. It allows individuals, as well as companies, to sponsor Open Source, projects you use.
Wondering how to find Project to sponsor?
Go to Your Organisation -> Insights and click on Dependencies. You will see a list of dependencies used in the organization, with the Sponsor button if projects accept Sponsorship.
I know getting funding approved is not easy in big organizations. Hats off to companies that include the Open Source funding as part of their yearly budget.
Here is a model I thought of that many organizations can adopt. This can be implemented at the team level, and you probably don’t need to wait for management approval.
Every project uses Open Source frameworks and libraries; we don’t even need to argue about this. It means every team spends a lot of time using Open Source, which includes your designers, developers, product managers, and testers.
Why should companies care about Open Source? Here is what my friend Sanket Sahu says about building GeekyAnts and many Open Sorce frameworks and tools.
We started using React Native early, the day it was introduced for Android because as a web dev company and being a web dev myself, it opened the door to building native mobile apps for JS devs. We realized that it was too early and the tech was very rough, we jumped right in and started working with people in the community to improve it. On the way, we developed open-source solutions for the ecosystem. This eventually started working as credibility and more of our customers and clients started believing in our work as they saw our open-source projects (mainly NativeBase) being used.
So, it’s like a cycle Problems => Open-source => Credibility => People reaching out for help (community, customers & clients)
Other than consulting and IT services, we are also moving towards building DevTools and services around it, ultimately building a business model.
Solve their own problem. If they do it out in the open, they would end up helping other individuals and companies.
For eg, Meta doesn’t have a model around React. They are just doing it for themselves but it is eventually helping millions