One barrier to entry to contributing to open source is understanding the terminology, especially if you’re new to tech. Below, I've defined some of the common vocabulary and provided some examples to help provide context.
Repository
A repository is a central location where code is stored and managed. In open source, repositories are often hosted on platforms like GitHub, GitLab, or Bitbucket. Each repository can contain one or more projects, and contributors can submit changes to the code by making pull requests.
Example: The WordPress repository contains all the code for the WordPress content management system.
Maintainer
A maintainer is a person or a group of people responsible for maintaining a specific open source project. Maintainers are typically responsible for reviewing and accepting or rejecting contributions from other contributors. They also have the authority to make final decisions about the direction and scope of the project.
Example: Redwoodjs has a team of maintainers that are listed in the Core Team section of their README.
Core Member
A core member is a contributor who has been granted additional privileges or responsibilities within an open source project. Core members are typically trusted contributors who have demonstrated a deep understanding of the project and have made significant contributions to its development.
Example: In the Python project, core members have commit access to the codebase, which allows them to make changes directly to the main code repository without going through the normal pull request process.
Issue
An issue is a problem or bug that needs to be addressed in the code. Issues can be created by anyone, and they're often used to keep track of bugs, feature requests, and other tasks that need to be done.
Example: An issue might be created to report a bug in the code, request a new feature, or suggest an improvement. Here’s an example of a feature request for OpenSauced’s chrome extension.
Contributor
A contributor is anyone who makes changes, additions, or suggestions to an open source project. Contributors can be developers, designers, writers, testers, or anyone else who helps to make the project better.
Example: If you submit a pull request, report a bug, or help to answer questions in a project's community forum, you're a contributor! If you want to learn more about types of non-code contribution to an open source project, check out How to Contribute to Open Source without Knowing How to Code: A guide with project suggestions.
Fork
A fork is a copy of a repository. When you fork a repository, you create a new copy of the codebase that you can modify and experiment with without affecting the original codebase. This is a great way to experiment with changes or work on a project without fear of breaking anything.
Example: You might fork a repository to create a new version of a project that's customized to your needs.
Branch
A branch is a separate version of the code that's created for development purposes. Branches allow contributors to experiment with changes without affecting the main codebase. When changes are ready to be merged into the main codebase, they're typically submitted as a pull request.
Example: A contributor might create a branch to experiment with a new feature, fix a bug, or refactor code.
Pull Request
A pull request is a request for changes to be made to a codebase. It's typically submitted by a contributor who has made changes to the code and wants those changes to be reviewed and merged into the main codebase.
Example: A contributor might submit a pull request to fix a bug in the code, add a new feature, or improve documentation. Check out Sunday’s PR highlight for a specific example.
Merge
Merging is the process of combining changes from one branch into another. When a pull request is accepted and merged, the changes made in the pull request become part of the main codebase.
Example: You might see something that looks like this on a Pull Request that’s waiting to be merged.
Hopefully, this will help decrease the barrier to entry for folks new to open source. If you have more questions or want help getting started, let us know in the comments below and join us for our Twitter Space on Wednesday with Josh Goldberg at 11a EDT.
Top comments (8)
Just a minor note on something that used to confuse me: A pull request is asking the maintainer to pull a contributor's changes into the codebase, as opposed to the contributor asking to pull some code.
Great distinction to point out!
I wish I had seen this blog 5 years ago, and did not struggle on the Fork and Pull Request part.
Thanks for sharing.
Great post, really helpful!
I appreciate your feedback!
Great article, amazing work!
Great stepping stone for any fresher entering in the world of OSS!
Nice, It is amazing to know.