“In real open-source, you have the right to control your own destiny”. – Linus Torvalds
This means that you can influence the future of a particular software by contributing to it. Developers can review the code and fix bugs to ensure the software works as expected, while non-developers can make changes to improve the interface or usability.
Do you want to understand the concept of open source, learn about its benefits, and learn how open source projects contribute to finding? Then this article is just for you.
Table of Contents
ToggleTable of Contents
- Definition of Open-Source
- Open-Source Communities
- Benefits of contributing to Open-Source
- Buzzwords in Open-Source
- How can you find Open-Source Projects?
- Contribution Checklist
- Ways you can contribute to Open-Source Projects
- Members of an Open-Source Project
- Submitting a Contribution
- Gathering Context
- Opening an Issue
- Conclusion
Definition of Open-Source
“Open source software is made by a community and distributed under an OSD-compliant license which grants all the rights to use, study, change, and share the software in modified and unmodified form.” – opensource.org
In other words, open source is a method of collaborative software development that uses peer review and process transparency to create freely accessible code. The source code is made available for modification and redistribution due to its publicly accessible design.
Open-Source Communities
An open-source community is a group of individuals who work together (sometimes voluntarily) to develop, test, or modify open-source software products.
“An open source project is only as strong as the community behind it.”
The open-source community is an essential part of the open-source movement; without it, there would be no open-source code and no infrastructure to bring it to its full potential. Individuals who share similar interests in writing code and all other software creation processes (such as documentation, design, etc.) motivate the development of open-source software within the community.
Benefits of contributing to Open-Source
What will you gain from contributing to Open Source? Well, there are numerous benefits of open source, which are not limited to the following;
- Improving and sharing your skills
- Building your portfolio
- Getting real-world experience in software development
- The satisfaction that comes with knowing that your contributions are being valued by people all over the world
- Networking with future employers [some companies look on Github to know if you can collaborate with others].
- Getting paid to contribute.
Buzzwords in Open-Source
Here are a few terms in open source that you’ll hear frequently;
- Repository: A Git repository is virtual storage for open-source projects on GitHub. It allows open-source projects to save versions of their code that the community can access as needed.
- Fork: This means making a copy of a GitHub repository (repo). The forked repo resides in your GitHub account. Once you fork a repo, you own the forked copy and can edit the contents of your forked repo without affecting the parent repo.
- Branch: A Git Branch resembles a tree branch. It is linked to the trunk, the central part of the tree. While branches grow and fall off, the trunk remains. Similarly, a Git branch allows one to develop and code a new feature or change the software without affecting the project’s main body. A master or main branch is the trunk in this case and where all changes get merged. Multiple branches can exist within a repository.
- Merge: The
merge
command is used to integrate changes from different branches. - Issue: Most open-source projects use issues to track their work on GitHub, where development happens.
To view an open-source organization’s issues:
- on GitHub.com, navigate to the main page of the repository
- under the repository name, click
Issues
- Commit: The
commit
command saves changes to a file (or set of files) to the local repository. Git creates a unique ID (also known asSHA
orhash
) each time you save. This unique ID allows you to record what changes were made, when, and by whom. A commit must contain a commit message and a brief description of the changes made. - Label: This is an identifier for categorizing or tagging issues, discussions, and pull requests.
- Pull Request (PR): A pull request occurs when a contributor/developer is ready to merge new code changes into the main project repository.
How can you find Open-Source Projects?
On Github, you can search for beginner-friendly repositories using specific labels, search for unassigned issues on these projects and identify projects that have easy-to-fix or good-first issues.
Here’s how:
Step 1: Visit Github Search
Step 2: Click on advanced search.
This way, you can search based on many factors; name of repository
, username of the owner
, number of stars
, labels for an issue
, programming language
, etc.
Step 3: Let’s search for labels “good first issue
” and “beginner”; the programming language will be python
. You’ll see results for issues that align with your search. Here, they’re 67 issues.
Alternatively, you can search for trending repositories using this link.
Here are some links that will get you started in open source;
- First Timers Only
- First Contribution
- Up for Grabs
- Contributor Ninja
- Hacktoberfest Projects
- Open Source Friday
Contribution Checklist
After you find the project you want to contribute to, some things will help you decide if the project is suitable for contributions:
- Does the project have a license file?
- Was the last
commit
made recently? (On GitHub, you can find this by clicking on Commits in the top bar). - Are the maintainers still active?
- Does the project have contribution guidelines? For most open-source projects, this is a contributor.md file stored in the project’s root directory on GitHub.
- Does it have a code of conduct? If the project does not have one, this is a red flag. Alternatively, you can suggest adding one to the project, which also counts as an open-source contribution.
- Do maintainers respond quickly to pull requests when they are opened?
- Is there an active discussion on the pull requests?
- Are the pull requests up to date?
- How long has it been since pull requests were merged? (On GitHub, click on the
closed
tab on the Pull Requests page to seeclosed
PRs).
Answering these questions before contributing to a project will save you from working on a pull request without getting any response.
Ways you can contribute to Open-Source Projects
An excellent way to get started is to take on an issue and work on it promptly.
Here are a few ways that you can contribute to open source as a beginner;
- Add a ReadMe file if the project does not already have one.
- Use these open source softwares and report issues or bugs.
- Add a step to the documentation file.
- Write tutorials for the project.
- Respond to questions about the project in the community.
- Help to plan and organize events for the community.
- Fix typos in the project.
- Redesign the organization’s logo or UI
Members of an Open-Source Project
In an open-source project, you will find the following people:
- Author: This is the project’s creator. They assign new roles to other members.
- Owner: The owner is in charge of the project’s administrative aspects. An author can also be the owner.
- Maintainers: These individuals are responsible for driving the project’s goals.
- Contributors: They comment and work on issues, create pull requests, and add value to the project.
- Users/ Community Members: These members of the community provide feedback about features, bug reports, etc.
Submitting a Contribution
- Communicate effectively: Collaborating with others is one of the most important skills you’ll develop in open source. As an open-source contributor, you’ll often need to ask questions to solve problems. Before opening an issue or pull request, or asking a question in chat, consider these points to ensure your ideas are well received:
- Provide context: help others find their way around quickly. If you encounter a bug, explain what you’re trying to do and how you can reproduce the problem. When you propose a new idea, explain why you think it would be useful to the project.
- Research: it’s OK not knowing things, but showing that you’ve tried. Before asking for help, check the README, the documentation, the issues (open or closed), the mailing list, and the Internet for an answer. People will appreciate it if you show that you’re trying to learn.
- Keep requests short and direct: similar to sending an email, every contribution, no matter how simple or helpful, needs to be reviewed by someone else. Many projects receive more requests than there are people available to help. Keep it brief. This will increase the likelihood that someone will be able to help you.
- Keep all communication public: keeping the conversation public allows more people to learn and benefit from your contribution. Discussions can also be contributions.
- It’s okay to ask questions (but be patient!): Everyone has been new to a project at some point, and even experienced contributors sometimes need time to get up to speed on a new project. Remember that most open-source contributors, including maintainers, are volunteers and have other full-time jobs, so show them the patience you expect.
- Respect the community’s decisions: Your ideas may differ from the community’s priorities or vision. The community may give you feedback or decide not to pursue your idea. If you disagree with their direction, you can still work on your fork or start your project.
Gathering Context
You’re ready to submit a contribution if you can’t find your idea anywhere in the project. If the project is hosted on GitHub, you’ll most likely communicate by creating an issue or pull request.
Things to note:
- Issues are similar to starting a conversation or discussion.
- Pull Requests are for starting work on a solution.
- Try asking a clarifying question or asking for advice on Stack Overflow, IRC, Slack, or other chat channels if the project has such channels.
Opening an Issue
Normally, you should open an issue in the following situations:
- Report an error that you cannot fix yourself.
- Discuss a high-level issue or idea ( such as community, vision, or policy)
- Suggest a new feature or different project idea.
Tips for communicating on issues:
- If you see an open issue that you want to tackle, comment on it so others know you’re working on it.
- If an issue was opened some time ago, it’s possible that it’s already being worked on elsewhere or solved, so drop a comment asking for confirmation before you start working on it.
- If you opened an issue but later came up with the solution, comment to let others know and close the issue. Documenting this outcome is also a contribution to the project.
Conclusion
Open source offers a lot of opportunities that you can take advantage of. All you have to do is get started.
I hope this article is the kick you need to start. Please feel free to share your open-source journey with me on Twitter or leave a comment if you have any questions.
My next article explains the processes involved in making a pull request as a beginner.