4.1. Introducing GitHub
For others to discover, contribute to, learn from, and re-use your project, it needs to be on the world wide web. We recommend using a web-based software platform called GitHub, which helps you with one of the main challenges in collaborating with lots of volunteers on a single project. This challenge is “version control,” the task of managing the many contributions your group makes to shared working documents. This module explains the more about version control, and how GitHub can help.
Read, look at diagrams, and watch videos
Have completed all previous sections and modules
Collaborative Work and Version Control
Your contributors may be spread around the world or working in the same room; they may be working simultaneously or asynchronously. No matter how you’re working, all contributions need to be wrangled into a single project. Thankfully, we have version control, which is a way of keeping track of changes made to a collection of working documents. Version control also stores the history of changes, allowing you to revert or go back to earlier versions of those documents, and understand how contributions have changed the project over time. You may have used word processing software that has a “changes,” “history” or “revisions” feature, which also allows you to see and revisit any changes to the document: this is a form of version control!
How does it work? Let’s look at some diagrams to better understand version control, and learn some new vocabulary related to this concept.
When we code, write text, or create any kind of content using computers, we end up with a collection of files in a folder or directory, also known as a repository, or “repo.”
Even if you’re working alone, you’re probably going to make lots of changes to your content or code as you go– you’ll change some sections or functionality and leave others untouched, you’ll make mistakes while you experiment with new ideas.
You might make multiple copies of your files to preserve a version that’s working while you try to improve it or add functionality, but keeping track of all these versions and the differences between them becomes difficult.
We need version control. Imagine your document has a life story. Version control is like a time machine, it can take you back to the moment your document was born, or any other point in time when you or a collaborator saved that document. You don’t save copies, you just save the the life story, or the document’s timeline.
What’s on the timeline? For our purposes, let’s call any saved change a commit. The life story of your document is a timeline of commits.
When we share and work on projects with collaborators, managing the changes, or commits that multiple collaborators working in different places at different times make to a single set of documents becomes very, very important.
And when we’re working with multiple collaborators, everybody needs to know and understand what commits are being incorporated into the repository and why, so good communication becomes very very important. The great news is that there’s a piece of version control software to help us both manage and communicate with our collaborators about commits to our project– that software is called Git, and it’s the basis for the online platform GitHub, where we recommend you work on your project.
GitHub to the Rescue!
GitHub is a web-based tool originally developed by software engineers to work collaboratively on coding projects, but you don’t need to be a computer programmer to use it. GitHub has terrific project management features, a social platform, and communication tools that are useful for any project where a group of people are working together on the same set of documents. Because GitHub is online, it’s designed to share your work, and allows other people to “fork” your project– meaning they can create an independent copy of your work to test, modify, remix and reuse it. Let’s see how projects in real life (IRL) are using GitHub.
GitHub Projects IRL, Andre Garzia
Before we go any further, let’s talk for a minute about something that Andreas mentioned in his video, a piece of software called Git. Git is the command line software that powers GitHub and actually handles the version control work. When you use GitHub, Git is working behind the scenes. You can also use Git without ever using GitHub, and many software engineers do. This is what Git looks like to a user:
But, for nearly all your collaboration needs, you don’t won’t use the command line and Git directly. You’ll use the GitHub web interface (with Git running in the background). That interface looks a bit friendlier, like this.
Continue to the next module to get a closer look at the GitHub interface.next: The GitHub Interface and Markdown