Version control is an important part of the development process. It facilitates collaboration, makes bug tracking easier, keeps your code organized and up to date and enforces best practices across your organization. A world without version control would be a world on fire (even more on fire than it already is.)
What is Git?
The purpose of Git is to store and track source code over time. Git stores the information about the changes made to the files in a repository. A repository is kind of like a folder that holds all your source code, but as well as giving you access to the files, it also allows you to see how those files have changed since they were first created. When it comes to version control systems, Git reigns supreme. It is the most popular version control tool in the world, and taught as the de-facto version control method in most modern programming courses.
The two primary platforms for Git development are GitHub and GitLab. These are both repository hosting services that provide individual engineers and companies with a place to store and track their code. GitHub is significantly more popular, with millions of repositories, but in recent years GitLab has upped their DevOps game, and it’s likely that the platform will increase in popularity in the coming years.
GitHub vs GitLab
Paid vs Free Plans
Both GitHub and GitLab offer free and paid plans. They also offer both public and private hosting for repos (repositories.) Public repositories are typically used for open source code, or by individual developers who want to tinker with their own projects. Private repos are more likely to be used by a startup or company who don’t want to give up their IP. Both allow unlimited contributors to a public repo. GitHub limits collaborators on a free private repo to 3, while GitLab allows unlimited collaborators on a free private repo.
On a free plan, GitLab allows you to locate your repo inside an organization or outside it. GitHub does not allow you to locate your repo inside an org on a free plan.
GitHub’s issue tracker allows users to create issues with Markdown, associate issues with pull requests so that they automatically close upon merging, transfer open issues to other repose, and pin important issues. It also allows for issue templates to help contributors report issues in a more meaningful way.
GitLab’s issue tracker allows users to create Markdown issues, and associates issues with PRs so that they close automatically. They allow for templating, transferring and pinning of important issues. GitLab also offers “list” and “board” issue views, similar to what you would expect to see in Trello or Jira.
GitHub’s documentation is organized into a series of guides. Each guide covers a particular aspect of the platform, and includes tutorials as well as articles. The guides as a whole are not searchable, and each article is typically a 5-10 minute read. GitHub also offers a searchable help page and FAQs.
GitLab’s documentation feels more similar to documentation for a language or technical platform. The first thing you see on their docs page is a search bar. They list docs for GitLab, and for the GitLab installer, integration and deployment tools. The page also has a “most popular topics” section.
The key difference between GitHub and GitLab is the integration tools. GitHub offers no built-in continuous integration – it all comes from third-party vendors. GitLab, on the other hand, offers 100% built-in integration. We saw a glimpse of this earlier when we looked at issue tracking. GitHub is un-opinionated about the issue tracking software you want to use – in fact, you have to hook up to something like JIRA in order to see a list or board view of your team’s issues. GitLab, on the other hand, does this in-house.
GitLab takes a similar approach to testing, building and deploying. Those who have used GitHub are likely familiar with the third-party tools that facilitate testing and deployment through the platform: CircleCI, Travis, Jenkins, etc. GitLab eschews these in favor of their own continuous integration tools. Does this mean that GitLab is better than GitHub in this regard? Possibly. It’s possible that having all of this done in-house will make for less bugs, less complication and a smoother user experience. Or it’s possible that GitLab is a “Jack of all trades, master of none.” The only way to know for sure is to test it yourself.
GitHub is the tried-and-true platform for version control and software releases, but it seems that GitLab is jockeying for position and coming up fast. As of now they host over 1.5 million repos and are used by over 26 million people. They are certainly a platform worth evaluating for your next project.