Demystifying the Jargon of GitHub
I ran an event a few months ago on this very topic, and after talking to several attendees I discovered out that they had all been put off contributing to Open Source projects because they found the jargon confusing. So I’ve decided to write this quick article to get you up to speed with the basics!
Let’s do this!
Git is the technology that powers GitHub! It is a version control system, developed by a clever guy, that basically means you can keep snapshots of your projects to revert back to at a later date. Git also makes it really easy for loads of people to work on the same project at the same time, and deals with merging everyones changes together in a safe way… a pretty useful feature for developing open source software!
A repository (often shortened to repo) is a place where GitHub stores your project. It’s just a bunch of files and folders (all under version control with Git, of course).
If you’ve never seen a repository before then go to GitHub at once and find one! …or jump to one of mine 😋
As you can see a repo is nothing new, just files and folders 😴. You can navigate through the projects just as you would on your local computer.
Ignore all the fluff around the repository, we’ll get to what that does shortly.
When you clone a repository you are simply downloading it to your local machine. Why don’t you try it out?
The simplest way is to click on the big green Clone or download button above any repository and then click Download ZIP.
However, if you’re feeling nerdy 🤓 then try cloning from the command line! Just click the Clone or download button as before, and copy the link. Then open a terminal, navigate to where you want to download, or clone, the repo to and type git clone <paste link>.
And just like that you have cloned the project to your computer!
There is a second way to copy a repository…
The ancient art of forking is not as fun as it sounds. It just means making a copy of a repository, and that copy is popped into your personal GitHub account. So instead of downloading the repository to your computer (cloning) this makes a copy on GitHub (so no download).
This is really useful if you want to make changes to the code freely, without having to go through the project owner.
Try it out! Just click the fork button above the repo you’re interested in and …voila!
A pull request (PR) lets you show off the changes you made to a repository and ask for it be merged into the project. Pull requests are critical to open source because they are the method by which you contribute to a project.
When you make a pull request, you have the option to name it and add a description. Use these fields to highlight the changes you have made and why they should be accepted (ie. what problem have you fixed / feature have you added).
If your pull request is accepted then WELL DONE 🎉🎊
You are now a contributor…
A contributor is someone who has made a pull request and had it accepted! Contributors are the people who make open source what it is, and anyone can become one.
You can check out the number of people who have contributed to a project at the top of a repo.
A collaborator is someone with read/write access to a repository. The repository owner can invite users to become collaborators. Collaborators, along with owners, can accept, or reject, pull requests to their repository.
Go out there and change something! The process of contributing to open source can seem confusing and complex at first, but now you are armed with the necessary knowledge to get started 💪. The best way to learn, after all, is by doing.
Nervous? Don’t be! You don’t have to learn the complete code-base of a project to help out. To begin with look for typos or simple bugs to fix. Some larger projects even have a list of known bugs that you can get working on straight away!
Hungry for more? Checkout the GitHub glossary for more keywords.
GitHub’s Open Source page is an amazing place to explore, and you’re bound to find something you’re interested in.
I set up an example repository for you to practice forking, cloning and making pull requests. Give it a go, it’s a great way to consolidate what you learnt!
Thanks for reading ❤️