GitHub vs GitLab: A Look at Git Remote Repository Managers
Today Git dominates the version control market with GitHub being the prominent remote repository of choice. Some people are also using BitBucket and GitLab to manage repositories. In this article, we compare GitHub and GitLab.
Origins of Git, GitHub, and GitLab
Initially, the Linux kernel was using BitKeeper, a distributed version control system. However, in 2005, the Linux community and BitKeeper parted ways due to disagreements. So the Linux Kernel needed a new solution. This led to the birth of Git, the open source distributed version control system.
In 2007, Tom Preston-Werner, Chris Wanstrath, and PJ Hyett started developing GitHub. At the time, Git still wasn’t the powerhouse it is today. But the GitHub team was confident and they released GitHub in 2008. Today GitHub supports code repositories for 80 million projects and 27 million developers.
GitLab started much later in 2011. From the beginning, GitLab was conceived as a collaboration tool with aspirations to help developers implement DevOps principles. The company was incorporated in 2014. Today GitLab is being used by more than 100,000 organizations.
Both GitHub and GitLab are used for maintaining Git repositories. Naturally, there are overlaps in their functionalities. But there are some consequential differences too. If you’re trying to choose between GitHub and GitLab, here are some key areas to consider:
User Access Control
GitHub gives you the ability to control your users’ access to a certain repository. But GitLab has more granular control. In GitHub, you can only control the read and write access. GitLab lets you give access to various components like the bug tracker or build system individually. It has a more robust setup for larger organizations and teams.
Continuous Integration and Continuous Delivery (CI/CD)
GitHub’s concentration is on maintaining repositories. GitLab has a loftier goal. It is trying to address DevOps issues. It comes with a build system that can be used for CI/CD practices. Even though you can use third party tool to create your own CI/CD pipeline with GitHub, GitLab provides a more integrated solution.
Both GitHub and GitLab provides bug tracking capabilities. You can easily use these tools to organize your quality assurance tasks.
If you want to transfer your current repositories to GitHub, it provides import tools to make the task easier. Using the tools, you can transfer code and assets from Subversion, Mercurial, TFS, CVS and other version control systems. However, the GitHub documentation isn’t comprehensive. GitLab also has repository import tools. And the documentation is better.
Both tools have rich ecosystems that support third-party integration and marketplaces that allow you to buy and sell premium applications and tools.
GitLab has better support for Docker. The GitLab Container Registry gives you the ability to maintain your Docker images easily.
Due to the longevity and popularity of GitHub, it has a stronger community. GitLab is trying to make headway by organizing more community events.
Both companies have enterprise level packages and a tiered approach to pricing. GitHub free tier only allows public repositories. For private repositories, GitHub charges $7-$21/user/month. GitLab allows you private repositories for free which is a great selling point for smaller development teams. For more premium features, GitLab charges $4-$19/user/month. It has also introduced a new tier that will have more enterprise-level DevOps tools. The new tier will be $99/user/month.
GitHub is the current dominant force in the Git market, while GitLab is the challenger. You can expect these two technologies to continue competing against each other.