Many people ask me, “Which distributed version control system should I use for my programming project, GitHub or GitLab?” It’s not such a simple question. Let’s break it down, shall we?
First, do you really need a distributed version control system (VCS)? The job of a VCS (also known as a source code management system (SCM)) is to facilitate collaboration between multiple developers, designers, and team members on the same project. It ensures everyone has equal access to the latest code and that changes are tracked.
It’s easier said than done.
That’s why Linus Torvalds considers Git his other great invention. Git is free, open source, and fast. It also performs better than its predecessors, such as Apache Subversion, Concurrent Versions System (CVS), Perforce, and Rational ClearCase. There’s a reason so many VCS services have “Git” in their names.
Of course, you can use Git alone on your own server. If all you’re doing is building a program in-house, a local Git instance is all you need. You can also use Git as a centralized VCS on your own servers or cloud. There is no need to subscribe to a VCS service when you can create your own. With this template, you can easily conduct a project with your team and partners scattered around the world.
If you need the bells and whistles of a hosted Git service, it’s time to look at GitHub and GitLab.
GitHub is the oldest of the services. It was developed by Chris Wanstrath, PJ Hyett, Tom Preston-Werner, and Scott Chacon using Ruby on Rails in February 2008. Due to its first-mover advantage, GitHub has become the basis for many open source code repositories. source.
Also: GitHub Calls for Contributions for New Cybersecurity Advisory Database
GitLab came later; Ukrainian developers Dmitriy Zaporozhets and Valery Sizov created GitLab in 2011. From day one, GitLab was designed to be a set of collaboration tools as well as a code repository service.
Yet they look more alike than they are. Both run on Linux servers, come with issue tracking tools, and offer a wide range of third-party integrations and import tools.
They also both have command line interfaces (CLI) for advanced developers, and they also offer web interfaces for new programmers. In the case of GitLab, the UI uses GitLabs own Pajamas design system and is written in Vue.js. GitHub’s desktop user interface is available as a Windows or macOS program. You can also now use Visual Studio with GitHub
Although both support open source, the repositories themselves use a mixed programming model. GitLab used an open-hearted business approach. In this model, the GitLab Community Edition remains free and open-source, while the GitLab Enterprise Edition has more features and comes with support. As for GitHub, although its code contains open-source code, it is not an open-source project.
Yet basically both offer web repositories with Git-based open-source code management and local file edits with a remote repository. If all you want is the basic functionality of Git, but someone else is keeping Git up and running, either service will be fine for you.
Of course, some people still don’t like GitHub because Microsoft acquired it in 2018. For some, Microsoft will always be the evil empire, no matter how well Microsoft shows it supports the methods and open source software – or how often Microsoft CEO Satya Nadella says he loves Linux. That said, it has never been such a big factor. While some users fled GitHub for GitLab and Atlassian BitBucket at the time, it was never the mass exodus some expected.
That said, GitHub is clearly the 800-pound gorilla of the VCS world. According to programming tools company JetBrains, 77% of developers regularly use GitHub compared to 40% for GitLab and 25% for BitBucket.
Also: GitHub enables a two-factor authentication mechanism through the iOS and Android app
The main difference is that GitLab integrates continuous integration/continuous delivery (CI/CD) and DevOps workflows. GitHub lets you work with any CI/CD tools you want, but you’ll need to integrate them yourself. Typically, GitHub users work with a third-party CI program such as Jenkins, CircleCI, or TravisCI.
Another important difference is that GitHub prioritizes speed, while GitLab focuses on reliability.
Specifically, GitHub advocates merging new branches with the master branch. This way, you are already ready to deploy quickly, while quickly reverting to your old version in case something goes wrong.
In the GitLab workflow, you create multiple stable branches beyond the master. At a minimum, you will have stable production and pre-production branches. This means that you will have to go through a multi-step testing process. A single code review when requesting a merge is not enough.
Of course, you can operate either as you wish, but there is a distinct difference in the preferred approach.
Another fundamental difference is that GitLab gives you a complete software development solution. They bill themselves as a complete DevOps platform for a reason. That said, GitLab offers integrations with some third-party programs and platforms such as Jira, Microsoft Teams, Slack, Gmail, and many other apps and platforms.
GitHub, on the other hand, offers fewer services within its own program, but offers ways of integration with many external programs and services. These include software that GitHub has worked on to integrate with the service and hundreds of other programs through the GitHub Marketplace.
Both services offer free plans. These come with unlimited public and private repositories. This may be enough for you if you are a solo programmer or have a small team. But, if programming is the life of your business, you’ll need more.
It is difficult to compare the prices of GitHub and GitLab. It’s apples and oranges. I suggest starting with their free plans to get a feel for how your workflow works on each platform, then subscribing to the one that works best for you.
Subscription costs should be the least of your worries. I’ve used both, and for my small scale programming needs, they worked extremely well.
That said, GitLab’s Premium plan costs $19 per month per user, while the full Ultimate plan costs $99 per month. As for GitHub, the Team plan is $40 per year per user and the Enterprise plan is $200 per year per user. But, the devil is the details, you might have to pay extra, whatever service you end up subscribing to.
Don’t let the price guide you. What really matters is which one will provide you with the tools and services you need to develop your software to the best of your abilities.