Hi friends π,
At the beginning of my open-source journey, I got confused with many terms used around Git and open source.
"It is an OSS project." "In which repo can I see your project on GitHub?" "Have you created an issue and the PR?" "Have you read the README?" "You want to create a branch and not work your changes on the main branch." "LGTM!"
Let alone start contributing; the terms are already intimidating enough for me. Learning from my experience, don't let these terms scare you off if you're new to open source. In this article, I will share some terms in open source and Git β in alphabetical order β that you will often hear when you dip your toes into the open source.
Open Source Glossary
CONTRIBUTING.md
An open-source repository usually will have a file written in Markdown (.md
) called CONTRIBUTING.md
β some others called this file CONTRIBUTION.md
or anything similar. This file is the contribution guide that contains everything you should know when you want to contribute to a project. You must first read this if you wish to contribute to a project. The contributing guide can be included in the README if you don't find this file.
Contributor
A contributor is a person who contributes to a repository by giving ideas and suggestions, reporting bugs, making changes to the code base or other resources in an open-source repository, and any other action that helps with the project enhancement and maintenance.
Documentation (Docs)
When you hear the word "docs", it refers to documentation. It's a guide that serves as an onboarding medium for new contributors and users in an open-source community. It's the place where you can learn more about how to contribute to the repository and information about how you can get started with their project, such as the installation process, the code syntax and examples, and many more.
Fork
Fork is creating a copy of a repository in your GitHub account. This copy is your remote repository.
GitHub
GitHub is a cloud-based service and platform for hosting, sharing, and collaborating on Git repositories. Other similar well-known platforms are GitLab and Bitbucket.
Issues
Issues are a project's development trackkeeper. An issue can contain a bug found, a feature request, a documentation fix suggestion, etc.
Labels
Labels are tags that inform the type or status of issues and pull requests β for example, bug
, feature
, documentation
, triage
, help-wanted
, good-first-issue
, etc.
LGTM
Maybe you've seen a maintainer mention "LGTM" in a comment of a pull request after a review. Some say it's the abbreviation of "Looks Good To Me", and others say it stands for "Let's Get This Merge". But whenever you see this term, your pull request has passed the maintainers' review and is ready to merge.
Maintainer
A maintainer is a person who maintains an open-source repository. They usually review issues and pull requests, assign contributors to issues, make updates to the project by merging pull requests, etc.
Open Source Software (OSS)
Open Source Software (OSS) is software where the source code is freely available and accessible to the public and distributed under a copyright license. Anyone may reuse, modify, and redistribute the software where the limit depends on the license used for the software. Because of its transparent and open nature, open source encourages open collaboration among contributors.
Pull Request (PR)
A Pull Request, commonly called a PR, is a notification about changes pushed to a branch in a remote repository and ready for the merging process.
README
A README is the face of the project. It is a Markdown file (README.md
) that contains everything essential about the project. In this file, you will usually find the software description, how to install them, the license, the Code of Conduct, the contribution guide, etc.
Repository (repo)
A repository β commonly called a repo β is a storage to keep the open source project's code files and resources.
Git Glossary
Branch
A branch is an isolated environment for contributors to work on changes such as fixing bugs, developing a feature, etc. This branch is usually known as a "working branch" or any other name besides "default branch".
A default branch is the branch that people see when they visit a repository on GitHub. All changes in other branches are merged here. By convention, this branch is called a main
(previously master
) branch.
Clone
Clone is creating a copy of a repository in your local environment.
Commit
Whenever we finish with our changes, we mustΒ commitΒ them. It means that we must record our changes. That is also why a commit always includes a message as the record. The message makes it easier for us and others to see what changes have been made.
Git
Git is an open-source Distributed Version Control System (DVCS) that tracks all changes we make to a program. We can see the history of the changes through commits and revert them to the previous version if necessary.
Merge
Merge is an act to merge changes from a branch into the main
branch.
Origin
When you create or fork a repository and have it as your remote repository on your GitHub account, by convention, it is called the origin repository. It is an alias of your remote repository.
Pull
Pull is an act to get new changes from the remote to the local repository.
Push
Push is an act to move changes from the local to the remote repository.
Upstream
Say you fork a repository. By convention, the original repository you forked is called the upstream repository. Upstream is an alias of the original repository.
Final Words
I hope this article helps you get less confused when you hear these terms. If you want to share more terms in open source and Git, feel free to drop them in the comment below, and let's learn together π!
πΌοΈ Credit cover image: unDraw
Thank you for reading! Last, you can find me on Twitter, Mastodon, and BlueSky. Let's connect! π
Top comments (8)
Thanks Ayu for sharing this explanations !
Working myself on an OS project it was a bit confusing at the beginning. About the maintainer role do you think that this role can be open to the majority ?
Thank you for reading, IsmaΓ«l!
That's a good question! Based on my experience, a maintainer role is usually granted by the project's organizers/core team. This person knows the docs and understand the codebase inside and out, very active in contributing and helping the community, and most importantly, fully trusted by the organization. So in my personal opinion, it's not a role that can be granted easily and open to the majority. I hope this explains π
wow thats really helpful thank you
Glad to hear that it's helpful for you β¨οΈ
Thank you for reading! π
Is was really informative.
Glad to hear that! Thank you π
Thanks Ayu this is a good article about of terms.
Thank youbfor reading, Emin. π
I'm glad that it helps π