Open source is often associated with coding, giving the impression it’s meant only for computer geeks. But anybody can become an open source contributor — even if they haven’t written a line of code their entire life. Sounds interesting? Then read on…
The beginning of the New Year calls for bringing about a change in your life. It could be learning a new skill, becoming healthier, performing your best at work or studies, or anything fruitful that will help you develop as a person. And it would be great if that change could benefit others too. So here’s an interesting proposition — become an open source contributor.
To which, I say why not? After all, it is exciting and will help you achieve your objectives. And most importantly, you don’t need to be an expert in coding. You can contribute without possessing any prior coding experience.
Interested? Let’s do it. But first, a bit of the basics.
The formal definition of open source software goes like this: Open source software is software whose source code is released under a licence that grants anyone the right to inspect, modify and distribute it for any purpose. The two important things to note in this definition are source code and licence.
Releasing a source code for free doesn’t hinder you from selling the result of your creation. It’s possible to earn money based on open source software and make a living out of it. Companies, including GitHub and MongoDB, to name a few, are doing just that. Nevertheless, there’s a lot more to simply giving away all your software for free.
There’s also a difference between free software (not as in free beer) and open source software. While free software is part of the larger open source community, the opposite is untrue. Open source software allows everyone the right to inspect, modify and distribute its code. However, free software also forces you to redistribute any changes you made to it under the original licence.
Popular open source licences
There are essentially two different categories of licences. On the one hand, there are permissive licences, allowing you to make some modifications to the original software code or sell the modified version as you wish. You can also combine other open source codes and release the final result with little to no constraints, as long as you do not alter the original licences and copyrights. Some common examples of this license category are the MIT license (MIT), Apache License 2.0 (Apache 2.0) and 3-clause BSD license (BSD-3-Clause).
On the other hand, you’ll find copyleft licences. The most commonly used one is the GNU General Public License (GPL). If you are including a code in your project that is under the GPL licence, then you must release the final modified version under GPL too. You cannot mix GPL code with any other proprietary source code. Some common examples of this licence category are GNU Lesser General Public License (LGPL) and Mozilla Public License 2.0 (MPL 2.0).
So it is the licence that separates the general open source community from the free software community.
Why should you contribute to open source?
You may not be aware, but open source software plays an essential part in the functioning of devices that you use daily such as PCs, smartphones, and even cars. Thanks to open source software, global tech has evolved at a rapid pace since 2000. Without this transformation, the startup ecosystem wouldn’t have thrived.
A key benefit of taking the help of open source while starting a new project is that it saves time and energy spent reinventing everything from scratch. You can simply reuse some of the previous work released under an open source licence. By building upon it, you can create something new and innovative. With open source, you can focus on what’s important for your work instead of going through the basics every time.
Another benefit is that it can open many new opportunities in your life and career by helping you become a part of several open knowledge communities out there. Open source is one of the most efficient ways to learn and hone your technical skills and knowledge, because you get to work on highly-technical projects.
You may have heard of open data for sharing data sets for machine learning model training and to access any previous research works. This ‘open community’ approach helps support various sectors to achieve their objectives. Imagine reviewing and sharing codes for such purposes while also learning to collaborate with very smart people around the globe. Sounds fun.
Speaking of community interaction, by collaborating with other project developers, you come across different people and ideas. And that helps you build your network.
|Websites such as Bountysource and IssueHunt offer ‘bounties’ or compensations for fixing certain problems of various open source projects. This means you can make money by assigning yourself to specific issues and contributing to them. There are other websites as well where you can search for issues that have a bounty.|
Far from the stereotype
Whenever someone is told to describe a developer, most people think of a person working alone with machines. But the truth is the opposite when it comes to real-life work. A big part of software development is communication. Yes, you have to write code for machines. But more importantly, you need to work with your peers and other developers.
Communication also entails getting information and feedback from end users, UX teams, product designers and everyone else directly involved in your project. Basically, a developer acts as a central point of communication of a project. All this can be regarded as the first circle of communication.
Outside the immediate circle, developers are expected to interact with different people outside their project or company, especially with bigger development or open source communities. Doing so exposes them to different opinions and constructive feedback, which is very important for improving and building key technical skills.
More contributions = More visibility
As a member of the open source community and contributor to open source projects, you will get more visibility. That means your professional profile will get more desirable views and requests from people looking to hire techies/developers.
This gives you an edge as it allows you to easily showcase your work results. And if lucky, your open source work can help you skip past some of the tricky parts of interviews upon selection for a tech job.
A few ground rules before you make your first contribution
1. Don’t fear making your first contribution. You don’t have to be an expert to begin.
2. Even if you haven’t written a line of code in your entire life, there are still different ways to contribute to open source. You don’t necessarily have to learn to code.
3. You don’t need to ask anyone’s permission before contributing to an open source project. But it’s nice to chat with the project maintenance team to have a better chance of your contribution being accepted.
4. Always start small rather than making a big contribution. If you don’t know the people maintaining the project, their purpose for the project and their expectations from your contribution, chances are your contribution will get rejected. You’ll get less frustrated if you decide to work small instead of working big for several weeks, only to get refused later.
5. Never give up if your first try doesn’t work out. Learn from the feedback on your contribution and make relevant improvements to your style of work. Your contribution will surely get accepted next time.
Steps to make your first open source contribution
Choose a project: If you don’t know where to start, then there are a few different open source tools you can use.
One of them is a website called First Contributions, where you can find a lot of open source projects with specific issues that are friendly for first-time contributions. Simply go through them and select.
On selecting a project, you will be taken to the GitHub page of the project and into the Issues section, which is filtered with good first issues for first-time contributors (Figure 2).
Go through the different issues and select the one that interests you.
After selecting the issue, read the general description to know what you are expected to do. If someone has already assigned himself/herself to the project, then look for any other issue to work upon.
If you don’t wish to go through GitHub, then there is another method, for which Node.js should be installed in your machine. Type npx good-first-issue in the terminal and it will give you a list of available projects (Figure 4).
For instance, if you choose to contribute to Babel, a random issue will be automatically picked. To start working on the issue, go to the given GitHub link.
|Tip: Before making any contribution, check whether the project has been actively maintained over time so that your contribution request gets accepted soon.|
Work on a project: To make a pull request for starting your first contribution, go to the link aka.ms/first-pr that will take you to the GitHub repository called ‘First Contributions’. There you can access a tutorial on how to create your first pull request, which includes forking the repository, cloning the repository on your local machine, and making a change to a file — for example, adding your user name by creating a new branch, committing the change to a local copy of the project, pushing those changes to GitHub and then creating the actual pull request where the project maintenance will be able to review it, give a feedback and accept/reject your changes.
As stated earlier, coding isn’t the only way to contribute to an open source project. There are many other ways. The first one is to promote the project and share it on different social media platforms. If you have experience with a particular project, then you can answer some of the questions related to it on Stack Overflow or GitHub. It will be very helpful for project maintenance.
Another good way to make the first contribution is to go through the project documentation and fix errors. You can also write tutorials and translate the documentation into different languages, making the project accessible to a lot of different people.
If you come across any bug, then do report it. If you don’t do so, nobody’s going to have a look and fix it in time. Writing unit tests for projects, especially after witnessing a bug that escaped someone else’s notice, is also a good way to contribute to any open source project. And if you are a good designer, then you can design a nice logo for a particular open source project.
Besides the above, there are multiple ways to contribute. You can try to come up with some other helpful ones.
|Tip: If you plan to work on an issue for a specific project, do assign yourself to it so that other people can know that someone else is working.|
Submit your pull request: Certain things can increase the chances of your pull request getting accepted. The first thing is to read the contribution guidelines before submission. It’s good to describe the changes made and why for the project.
Just be mindful that some of the people maintaining an open source project won’t be able to regularly check the repository. So be patient and allow them to go through your pull request. If not now, they will do so in a few days.
Giving and receiving feedback is an essential part of the open source cycle. It helps to understand what needs to be changed. If you receive criticism, don’t take it as a personal attack but as a means to further improve your skills. Since hundreds of big open source projects get reviewed every day, feedback on your contribution may take days — even months. Nevertheless, don’t worry. You will eventually receive it.
Get ready for a new adventure
After all your hard work, unfortunately, everything may not work out the first time. Maybe your contribution didn’t fit the project’s objective or someone else contributed in a better way. Don’t worry, it happens. Remember to never give up. Once your contribution gets accepted, you’ll be motivated to contribute even more.
So, if you love the philosophy of sharing content, receiving feedback and being a part of a larger tech ecosystem, then the life of an open source contributor is meant for you.
The article is based on a talk given by Yohan Lasorsa, senior developer advocate, Microsoft, at Open Source India 2021.