GitLab vs GitHub. Comparison

Roman Ceresnak, PhD
CodeX
Published in
6 min readJan 29, 2023

Sometimes it is hard to choice between technologies, programs and of course repositories. I will compare features of two similar repositories GitLab and GitHub in this article.

Image by Daniel Skovran

GitLab: GitLab is a repository hosting manager tool for software development that was developed by GitLab Inc. We can streamline our collaborative workflow for completing the software development lifecycle by using a variety of management options provided by it. We are also able to import the repository from Bitbucket, Google Code, and other platforms.
Some of GitLab’s features are as follows:

  • Platform for managing repositories with an open-source community edition.
  • Simple server-based repository management.
  • Features tools like an issue tracker, time tracking, and group milestones, among others. for efficient growth.
  • Authentication and user interface features that are more spontaneous.
  • Branch security and user permissions are improved.

GitHub: Collaboration and access control are two of the features of the repository hosting service tool GitHub. It’s a place where programmers can collaborate to fix bugs and host open-source projects. GitHub is made for developers so that they can use the repository to track their changes to a project.
Some of GitHub’s features are as follows:

  • Assigns labels and milestones to the projects.
  • It is permissible to compare branches’ views.
  • We are able to publish and host websites within GitHub thanks to GitHub Pages.
  • Highlighting of syntax.
  • Integrations of third-party APIs for cloud hosting and bug tracking are made possible by it.

Location: GitHub vs GitLab

  • The free plan of GitHub does not permit finding a repository within an organization.
  • With the free plan, GitLab lets users find a repository within an organization.

Issue Tracker: GitHub vs GitLab

  • GitHub: Pulling requests are supported by the issue tracker, so when raised issues are merged into another repository, they are closed immediately.
  • GitLab users of the issue tracker can link issues to PRs that will be automatically closed.

Workflow: GitHub vs GitLab

  • GitHub: GitLab and Git differ significantly in that GitHub offers a straightforward workflow with brand and feature branches. PRs, or pull requests, enable GitHub workflow. They are the same as MRs from GitLab. There is no way to avoid using GitHub and GitLab flow in tandem.
  • GitLab: GitHub is lacking in workflow models, but GitLab does. The feature, production, development, environment, and release branches of these workflows have been enhanced. Flow from GitLab is the norm. Moreover, GitLab workflow is supported by merge requests (MRs). A framework for code review prior to integration is provided by MRs.

Backup: GitHub vs GitLab

  • GitLab and Git differ significantly in that GitHub offers a straightforward workflow with brand and feature branches. PRs, or pull requests, enable GitHub workflow. They are the same as MRs from GitLab. There is no way to avoid using GitHub and GitLab flow in tandem.
  • GitHub is lacking in workflow models, but GitLab does. The feature, production, development, environment, and release branches of these workflows have been enhanced. Flow from GitLab is the norm. Moreover, GitLab workflow is supported by merge requests (MRs). A framework for code review prior to integration is provided by MRs.

Maintenance Mode: GitHub vs GitLab

  • The maintenance mode makes it simple to compare Git and GitLab. A maintenance mode that prevents users from accessing the GitHub Enterprise Server instance is supported by GitHub. The Management Console is used.
  • The maintenance mode of the Git lab prevents any external actions from affecting its internal state. API, web UI, and Rails console are the three methods for enabling maintenance mode.

Architecture and Scalability: GitHub vs GitLab

  • Since GHES is a monolith, it can’t be divided into several components. It can only be scaled by moving to a larger server (vertical scaling requiring downtime).
  • Gitlab is a modular application composed of various components like Nginx, GitLab Workhorse Redis, PostgreSQL, Gitaly, etc. In the basic configuration, all components can exist in a single node. But when scaling is required, they can be distributed to separate nodes. Single or multiple nodes can be allocated to the same component (for example two or more Gitaly storage servers).

Installation: GitHub vs GitLab

GitHub

  • GitHub offers its virtual machine image.
  • Through GCP, it offers a set of gcloud compute commands that fulfil all required resources and also installs GitHub.
  • The entire installation process completes in 2.5 hours.

GitLab

  • GitLab installs on most of the standard Linux distributions. GitLab supports multiple installation methods. The most famous installation methods are Helm charts for installation on K8S, “Omnibus” installation on Linux, and Docker installation.
  • The installation process of GitLab through the Docker installation, Gitlab installation, and server provisioning takes nearly 2.5 hours.

Disaster Recovery: GitHub vs GitLab

GitHub

  • Disaster recovery is supported differently by GitHub and GitLab. By replicating all major datastores, a secondary, redundant GitHub Enterprise Server appliance can be synchronized with the primary appliance in a configuration that is supported by GHES.
  • There are no other costs involved.
  • This configuration is called HA on GitHub. However, the failover is described as a DR here due to its manual nature.

GitLab

  • A GitLab instance can be replicated to other geographical sites with GitLab Geo (Premium). The duplication can be promoted in the event of a disaster as a read-only, fully operational instance.

CI/CD — Setup: GitHub vs GitLab

GitHub

  • The CI/CD setup is yet another significant difference between GitHub and Gitlab. You should be able to access external blob storage in order to enable GitHub Actions on GHES. That means that you can only use MinIO Gateway for NAS that is compatible with AWS S3 or Azure Blob storage. GCP storage is ineffective.
  • An AWS account must be created, an S3 bucket must be deployed, and so on.
  • Runner configuration is somewhat simpler than GitLab’s. The reason for this is that the page for an organization, instance, or project contains every setup command.

GitLab

  • A user must create an access token, provide a runner server, install runner software on it, and register it with GitLab using the token to use GitLab. In GitLab’s setup for CI/CD, various executors like Docker, shell, and Kubernetes are used.
  • Installing runners on K8S is supported by the web UI of GitLab.

Pricing

Plans for both services are free. There are a ton of public and private repositories included with these. If you’re a solo programmer or have a small team, that might be enough for you. However, if programming is your business’s livelihood, you will require more.

The pricing of GitHub and GitLab is difficult to compare. Oranges and apples. To get an idea of how your workflow looks on each platform, I recommend starting with their free plans and looking into subscribing to the one that works best for you.

The least of your concerns ought to be the costs of subscriptions. For my small-time programming needs, I’ve used both, and they’ve worked very well.

However, GitLab’s Premium plan costs $19 per user per month, while the Ultimate plan, which includes all of the features, costs $99 per month. The Team plan at GitHub costs $40 per user per year, while the Enterprise plan costs $200 per user per year. The devil, however, is in the details. No matter which service you choose to subscribe to, you might find that you need to pay for extras.

However, price should not serve as your guide. Which Git VCS will provide you with the services and tools you need to develop your software the best is really important.

GitHub versus GitLab: Which One Is the Best Choice?

Sadly, this isn’t the “best choice for everyone,” as with most things in life. It depends on the goals of your team, the larger organization, unique use cases, and others.

GitLab comes out on top when it comes to self-hosting and out-of-the-box functionality. However, GitHub’s position as market leader is unique. It has a significantly greater number of apps and integrations.

GitLab is a better option for private repositories hosted on your own server. There is no monthly subscription fee to pay to get started.
GitLab’s free premium features and GitHub’s access to a larger pool of active open source developers make both excellent choices for open source projects.
GitHub offers a significantly less expensive enterprise plan for commercial projects.
GitLab is the smarter and probably less expensive option if you want to get into DevOps. You don’t have to use any other paid services to get started.)
It also depends on which tools your teams are already proficient in using. If GitHub has an integration with a tool you frequently use, but GitLab does not, it will be your first choice.

This isn’t a far-fetched scenario either, given that GitHub has more than 300 integrations than GitLab.

--

--

Roman Ceresnak, PhD
CodeX
Writer for

AWS Cloud Architect. I write about education, fitness and programming. My website is pickupcloud.io