A-Z of Open Source for Beginners
This article discusses open source benefits, open source in general, ways you can contribute to open source, and useful open source tips and resources
“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 make sure 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 how to find open source projects to contribute to? Then this article is just for you.
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 the community, 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 processes of software creation (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;
- Improving and sharing your skills
- Building your portfolio
- Getting real-world experience in different tech stacks and skills
- 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 other people).
- Getting paid to contribute.
Buzz Words in Open Source
Here are a few terms in open source that you’ll hear frequently;
- Repository: A Git repository is a 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 provides a way to develop and code a new feature or change to 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 is used to save 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, which is a brief description of the changes made. - Label: This is an identifier used 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 you can find open source projects
On Github, you can search for repositories that are beginner-friendly 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
and python
as the programming language. You’ll see results for issues that align with your search, here there are 67 issues.
Alternatively, you can search for trending repositories using this link.
Here are some resources to help you get started in open source;
Contribution Checklist
After you find the project you want to contribute to, there are some things that 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 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 see closed PRs).
Answering these questions before contributing to a project will save you from working on a pull request and not 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 software and report issues or bugs.
- Add an additional 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 show 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 some 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 same patience you expect from them.
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 own fork or start your own 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 has already been 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 yourself, comment on the issue 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 off. Don't forget to hit the like button if you enjoyed reading this article, and please feel free to share your open source journey with me on Twitter, or leave a comment if you have any questions.
Coming up next: An article explaining the processes involved in creating your first pull request as a beginner.