What is Open Source?
Open source refers to source code that is made available to the public to view, use, modify, and distribute under a permissive license.
It’s often in a company’s or person’s best interest to open-source their code, whether they’re an individual, a corporation, a small business, a non-profit, or a government agency.
Contributing to open source projects can be a rewarding way to learn, teach, share, and build experience. There are plenty of reasons why you should contribute to an open source project, such as:
- To improve the software you rely on daily
- To find a mentor if you need one
- To learn new skills
- To share your skills
- To gain a much deeper knowledge about the software you’re using
- To build up your reputation and help grow your career
- Plus, it’s fun and gives you personal satisfaction
How to Contribute to Open Source
Contributing to an open source project does not necessarily mean that you have to contribute to the codebase. You can contribute to open source in many different ways, like:
- You can add a description to a project’s documentation to elaborate on a certain point
- You can give guidance on a specific project
- You can add examples to show how the code works
- You can write tutorials for the project
- You can add a translation for a project
- You can answer questions about a project (like on Stack Overflow or Reddit)
- You can offer to mentor another contributor
- You can fix typos and arrange the project’s work folder correctly
All of these ways and more count towards contributing to an open-source project.
What to Know Before You Contribute to an Open Source Project
Every open source community is different. Each community has different people in it with different roles and rewards offered. They also each have their own rules and expectations for contributing.
A typical open source project will have these people:
- Author – This is the person who created the project. They have the power to assign new roles to other members to help with the project’s maintenance.
- Owner – The ownder 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 goals of the project. They’re usually people who feel responsible for the direction of the project and who are committed to improving it
- Contributors – Contributors add to the project in one way or another. They follow the same code review process, are subject to the same requirements on code style, and so on.
- Community Members/Users – These valuable members of the community can provide feedback about features, bug reports, and more.
Important elements all open source projects should have
Every open source project should have the following guidelines and information:
- License – If a project does not have an open source license, then it is not open source. The license helps protect contributors and users. Businesses and savvy developers usually won’t touch a project without this protection. If you’re wondering how to get one, click Here to read more.
- README – This is a manual that explains how to get started with the project. A good README should contain different everything a potential contributor would want to know about the project. You can read more about how to write a good README file HERE.
- How to Contribute – These guidelines help people contribute and show what type of contributors are needed (this file is not a must)
- CODE_OF_CONDUCT – A code of conduct is a document that establishes your expectations for how your contributors and participants behave. Adopting and enforcing a code of conduct can help create a positive environment for your community.
To create an open-source project you will want to create an environment where people can share their challenges and have in-depth discussions. This is made possible by the following tools:
- Issue Tracker – This is where people discuss issues related to the project
- Pull Requests – This is where people review changes in progress
Learn a programming language
Since open-source contribution requires you to read/write code if you want to be involved in its development, you are required to learn a programming language to get started. You can get started with any language of your choice. You can easily learn another language at a later stage if a project requires it.
Many people help with documentation, translation, etc as well which does not require programming. If you do not want to contribute as a developer then you can skip this step.
Get Familiar with Version Control Systems (VCS)
When we are working on a big project, it is extremely important to store all the changes that are being made to recall it at a later stage. Version Control Systems are software tools that help with it. They keep track of all the modifications that happen over time in the source code as versions. They also allow us to go through older versions and revert to an old version if required.
You can read more about VCS here – What is version control?
There are many version control systems such as Git, Mercurial, CVS, and SVN. Git is the most popular and most widely used version control system in the industry.
Git is the most popular open-source distributed VCS used with most commercial and non-commercial projects.
These resources might help you learn Git from scratch:
In the initial stages, this cheat sheet might be very handy: GIT CHEAT SHEET
GitHub is a code hosting platform for collaboration using the Git Version Control System. In layman’s term, it is the place where you keep all your projects and multiple people can work together on those projects.
Good resources to get started with GitHub:
- GitHub Learning Lab
- Git & GitHub Crash Course For Beginners – Traversy Media
- Git and GitHub crash course from FreeCodeCamp
Note that you do not need to be a master in VCS/Git/GitHub to start contributing. Once you are comfortable with the basics, you can start contributing to open-source.
From the planning phase of your open source project to the final submission of your patch, participating in an open source software project is fun, rewarding, and can be interesting too. Whether you’re just starting out or are an experienced open source contributor, there are several tips and guidelines that you can follow to help get you started contributing to an OS project.