"As we advance technologically, more and more products and services are being turned into software-ready services. And many of them are being made open source."

Create account
How to Contribute to Open Source Projects – A Beginner’s Guide - DEV Community
How to Contribute to Open Source Projects – A Beginner’s Guide
"As we advance technologically, more and more products and services are being turned into software-ready services. And many of them are being made open source."
This is an article adapted by me and translated directly from English: https://www.freecodecamp.org/news/how-to-contribute-to-open-source-projects-beginners-guide/
Most developers and companies rely on open source tools and software to make their products work. And I think you'll agree with me that the number of contributions to open source has really grown lately – not just from individual developers, but from companies as well.
The reason for this? It's creating maintenance, solutions and developing features so quickly with the community that everyone will have a little part in that creation and that makes a huge difference.
My first contributions to the open source community were during KalifyInc projects and this started around 2015 or so, apart from other events such as the AMBEV Hackathon and many others.
Now, if you're reading this article, it's because you want to be part of the great open source community – but maybe you don't know where to start? Well, you are in the right place.
In this guide we will cover:
What exactly is open source?
How can you start contributing?
What should you expect?
Well, in this article we are going to cover all this and much more.
Let's start!
What is open source?
In simple words, we can describe an open source project as source code made available to the public for viewing, use, modification and distribution under a permissive license.
As an example to explain this, let's use a classroom scenario. A teacher can share a document on a platform like Google Docs. On this platform, students can edit the document and even make their own copies. But whenever they make edits, they need to be approved by the teacher before reflecting on the document again. This way, he will know what changes are made to the original document and must be approved so as not to affect the original idea.
This is how open source code works: once it becomes public and you need to add a feature or make changes, the owner needs to approve the added changes and publish them for others to see.
The most successful open source projects are the result of contributions from people of all skill levels – and not just coding skills, but also other skills like writing, translations, documentation, and so on.
Every time someone fixes a typo, adds a warning about a possible compiler warning, fixes a bug, or even adds detailed documentation to a project, progress is made. If we take all these little contributions from different people with different skills and put them together, big things can happen.
Just as Vincent van Gogh said:
Big things are done by a series of little things put together.
Why You Should Contribute to Open Source
Contributing to open source projects can be a rewarding way to learn, teach, share and build expertise.
There are many reasons why you should contribute to an open source project, such as:
To improve the software you rely on and/or use daily.
To find a mentor if you need one.
To learn new skills or improve existing ones.
To share your skills.
To gain much deeper knowledge about the software you are using.
To build your reputation and help grow your career.
Furthermore, it is fun and gives you personal satisfaction, of accomplishment.
Step-by-step guide on how to contribute to open source
When we say contribute to open source, it doesn't necessarily mean you need to know how to code. There are different ways you can contribute even if you're not a programmer - but having some coding skills will help you (and the projects) a lot.
Some common contributions can be made through:
Add a description to a project's documentation to detail a particular point, often called a README file
Giving guidance on a specific project and how to use it.
Adding sample output to show how the code works.
Write detailed tutorials for the project.
Adding translation to a project.
Answer questions about a project (such as on StackOverflowFlow, Discord community, or Reddit)
You can offer to mentor another employee.
You can correct typos and organize your project workbook correctly.
All of these forms, and many others, count towards contributions. Now, what exactly should you know before you start contributing to an operating system project?
What to know before contributing to an operating system project
Just as we expect every open source product to be different, so are communities. Each community has its own rules and will have different guidelines and roles, and if you're lucky, some will also give rewards after you contribute.
But despite all this, there are some common features that apply to all OS projects, and that's what we're going to talk about:
In a typical OS project, we will have the following people:
Author – This is the person who created the project. They have the power to assign new roles to other members to help maintain the project.
Owner – The owner has administrative ownership of the project (and can be the same person as the author)
Maintainers – These people are responsible for driving the vision and objectives of the project. They are generally people who feel responsible for the direction of the project and who strive to improve it.
Contributors – Contributors add to the project in one way or another. They follow the same code review process, are subject to the same code style requirements, and so on.
Community Members/Users – These valuable community members can provide feedback on features, bug reports, and more.
Must have elements in all OS projects
When talking about an OS project, they are categorized in various ways depending on the structure, type of product platform, programming language used, whether it is sponsored or completely independent, and much more.
All this information must be described with the help of the guidelines and information:
License
If a project does not have an open source license, it is not open source. The license helps protect collaborators and users. Experienced companies and developers generally won't touch a project without this protection.
README file
This is a manual that explains how to start a project. It lists the requirements to contribute to the project, the steps to follow to contribute to the project, etc... A good README should contain everything a potential contributor would like to know about the project.
Contribution Guidelines
These are guidelines that help people contributing to the project know exactly what is expected of them. And even if it's not mandatory, it's always good practice to add one. If you need help writing one or understanding what it entails, the operating system's official website has a template guide to help you:
code of Conduct
A code of conduct is a document that sets out your expectations for how your employees and participants behave. Adopting and enforcing a code of conduct can help create a positive and welcoming environment for your community. The operating system guide explains more about what this entails: https://opensource.guide/code-of-conduct/.
As an individual or organization running an Open-Source project, it's about creating a community where people can grow together. This means you will have to develop a friendly environment where people can share ideas, work on challenges, and even chat randomly at some point.
There are a few options here, and you can use tools like:
Issue Tracker
This is where you track your work on GitHub and how development happens. If there is a problem, a contributor can create an issue and link it to a pull request and other contributors can choose to try to fix it. Then, once it's fixed, it's closed.
Pull Requests
They let you inform others about changes you've pushed to a branch in a repository on GitHub. Once a pull request is opened, you can discuss and review potential changes with the contributor and add follow-up commits before they are merged into the base branch.
Chat channel
While not required, you may consider it a good practice to be part of an OS community channel. It is specifically intended for people to share their ideas and have conversations. Some of the most common media for this purpose include Slack and Discord.
So now you have an idea of what an operating system project is and what to expect when contributing to one. Moving on to the most important part, how do you know which project to contribute to?
How to find an open source project to contribute to
Contributing works on all levels, there is no need to overthink how you will do it. Instead, think about some of the designs you already use and how you can change or improve them.
Research has shown that around 30% of casual contributions are documentation, typo corrections or even translations.
At the beginning I promised to share some of the projects that helped me when I made my first contribution. Good luck, if you are a first-time contributor – which everyone is at some point – here are some links that will help you get started in the world of open source and which are from Kalify Inc:
Essentials
Onigiri Hardcore
FindYourPet
In the world of open source software, problems are reported and fixed quickly. So a good way to get the ball rolling is to own a problem and try to work on it immediately.
How to choose an open source project
Once you've found the project you want to contribute to, it's time to do a little checking. Make sure it meets the following criteria so you know it will be a good project to work on:
Check if you have a license file.
Check when the last commit was made. This will help you know if the maintainers are active and will also give you an estimate of how long it will take to respond to your contribution.
Look for the number of taxpayers.
Check how often people make commits.
If you see a lot of recent activity, that's a good sign – it means the community is active and so are the maintainers.
Now, if the first "check" is successful, proceed to also check the following points:
Do you have any open issues? If so, this could be a good sign, you will have somewhere to start.
How long does it take for maintainers to respond? This will be determined by how often issues are closed and PRs merged.
Is there an active discussion about a topic?
Are issues being closed regularly?
How many pull requests are there open?
How long ago were the most recent pull requests merged?
Do maintainers thank people for contributing?
If this final verification process passes, you are ready to begin your contribution.
I know you're excited and ready to take the world of open source projects by storm, but do you know what to look for in a project?
As mentioned above, there are different ways you can contribute. But before making your first contribution, it is good to note some things about the project you are going to choose, such as:
What programming language does the project use?
The most fundamental technology behind any application is the programming language it uses. Some of the most popular languages on GitHub are JavaScript, Typescript, Python, Java, Ruby, and PHP – but there are many others.
There are a multitude of projects that can suit your skills and interests. So just find one that you feel comfortable working on.
Project type
Once you've chosen the language you want to work with, you'll also need to choose the type of project you prefer. Just take a look and choose a project or topic that interests you.
Once you find a project, you really want to make contributions. And you will do this by submitting pull requests. Let's talk about this now.
What is a pull request?
Well, a pull request is similar, only this time it's about code.
We can describe a pull request as when a contributor submits changes – whether code, documentation, or elsewhere – and asks a maintainer to check it, make sure everything is OK, and then merge it into the base project.
So how do you send one?
How to submit a pull request
If you are at this stage, it means you have found a project and are ready to make your contribution. So let's talk about how to actually submit a pull request.
Steps to submit a PR/Pull Request
Fork the repository
In the upper right corner you will see the term "fork". All you have to do is click on it and you will have created a copy of the same project in your account.
After this operation, the project URL will change to:
https://github.com/<YourUserName>/projectname
Clone the project to your local machine
In order for you to perform this step, you must have Git installed locally on your machine. Otherwise, see the official Git docs on how to get started. Copy the URL of the forked project and proceed to your local machine where you will open git bash and proceed with the command below:
git clone https://github.com/<YourUserName>/<projectname>
This will create a copy of the project on your local machine. Now that you've cloned the repository, we'll need to do two things:
The first is to make the necessary changes/contributions and commit those changes. Once you've made your changes and added new files, it's time to add those changes to a separate branch before pushing them to the remote.
But first let's create a branch. In your git bash, change the path in your repository directory. To do this use this command: cd project folder name
Now, to create a branch, we will use the command: git checkout -b name-of-your-new-branch
Here's an example: git checkout -b lary-mak
It's time to add the new changes to the branch we created. To see all the changes you've made, we'll use the command:
git status
The command will list all changes made. To add them we will use git add, which will add all the files to our branch. gitadd*
Let's add a commit message, briefly explaining what we added: git commit -m "<message here>"
Push changes to the remote base
Now that everything is set, it's time to let our maintainer know what we added. This is possible by pushing changes with this command:git push origin <add-your-branch-name> replacing <add-your-branch-name> with the name of the branch you created earlier, in my case it will be git push origin yagasaki.
Submit changes
If you go to your repository on GitHub and refresh the page, you will see a Compare and pull request button. Click that button.
Soon, the maintainer will merge all your changes into the master branch of this project (unless they require changes from you). You will receive a notification email once the changes have been merged.
Creating a pull request has some advantages, such as:
It allows you to contribute to another repository without needing administrative privileges to make changes to the repository.
It allows others to review your changes and suggest corrections, additions, edits, and so on.
It gives repository administrators control over what is added to the project repository.
Congratulations 🥳🎉,
You've just completed the standard fork: clone -> edit -> pull request and that sums up your first contribution.
You will use this often as a collaborator! So what's next?
What comes after your first pull request?
This does not mark the end! Now just find more projects and keep contributing. Also, keep an eye out for the month dedicated to open source contributions every year, run by Digital Ocean, for a chance to win some awesome gifts.
One more thing to talk about a little more before we finish. In other words, why contributing to open source is rewarding.
Benefits of Contributing to Open Source
People contributing to an open source project know the technology on a much deeper level than simply using the technology.
You can focus your efforts on adding and leveraging features that will benefit the business based on experience with what works and what doesn't in the real world.
It builds your morale and reputation. People who contribute to open source projects have access to the insights and experiences of other members of the community.
Contributing to open source provides a clear vision of a project's future
If you're on GitHub, most of the things you do on that platform are public. Use this to your advantage by always doing your best when contributing and communicating with other employees.
Why You Should Contribute to Open Source as a Developer
This will help sharpen your coding skills and get better at writing clean code.
This helps the community and your peers get to know you. This recognition can bring you many opportunities in your career.
It helps you learn more about project management and can leave you inspired to start your own project.
The cool thing is that OpenSource could be applied to anything. We are experimenting with ODCs on the ~Design territory. An
#OpenDesigninitiative: obviously it's hard to have any kind of engagement when there's uncertainty on final results and no-rewords-guarantee