Product Growth at Codegiant
Interested in understanding the debate of Gitlab vs Github? Which one is better in 2020? Which one should you pick?
That’s the never-ending question, right?
In order to give you an accurate answer, I’m going to dive deep into what both platforms offer and what makes them stand out.
NOTE: This article is written based on heavy data. I personally reached out to close to a hundred software experts to gather their unique perspectives on the subject. I’ve also crawled the most popular forums (like Reddit, Quora, Stackoverflow, DreamInCode, Hashnode, Hacker News, and more) on the web for the topic — “Gitlab vs Github in 2020.”
So, rest assured that you are getting only fresh and up-to-date content here.
Let’s dive right in:
GitLab and Github are both version-control distributed git platforms used for storing your code inside git repositories.
There is a short introduction to Git below for those who are unfamiliar with it. Feel free to skip this section if you consider yourself an experienced developer:
A git repository is a place where you store, share, test, and collaborate with your teammates on your code.
What’s unique about Git is that it’s distributed. It allows you to have your own local repositories. Thus, you can work on your code even without having access to the internet.
Once you’ve done some changes to the code in your local repository, you can then push these changes to the master repository and wait for the approval.
Anyway, if you want to learn more about Git, you can refer to this article.
OK, let’s start with Github…
Github is a git repository platform that keeps your code safe and secure.
Github can also be named as a collaboration platform as it helps developers to communicate effectively on their code.
It boasts great features such as issue tracker, bug tracking system, source code management, and its own built-in CI/CD tool that came to the world in November of 2019 (it’s explained further below). And Github also offers wikis as well as Markdown-based readmes, and other documentation.
In its second year, Github reached 100,000 users along with 135,000 public repositories.
In 2012, Github raised $100 million and was evaluated at $750 million. Not bad for a 4-year old company.
In 2015, Github raised a second round of $250 million. At that time, the company was evaluated at $2 billion.
And as you probably know, in 2018, Microsoft acquired Github for $7.5 billion. However, it was then when Github noticed a significant decrease in their number of active users. And that was the time when GitLab became quite popular and turned into a strong competitor of Github.
Regardless, Github is still the most popular git repository platform in the world. As of January 2020, Github boasts more than 40 million users, along with 100 million repositories.
OK, so let’s see what Gitlab brings to the table…
GitLab was founded in 2011 by Dmitriy Zaporozhets and Valery Sizov in Dmitriy’s house in Ukraine. Dmitriy said that he needed an efficient collaboration tool. He knew that communication is essential for completing projects successfully.
Similar to Github, GitLab also comes with pretty much all the features Github offers. However, GitLab was initially designed with a built-in CI/CD tool, which makes it one of the most popular CI/CD frameworks today.
GitLab also allows you to fully track and monitor your code so that you can see if there’s anything that can be improved. So, in terms of features, it turns out that GitLab ranks above Github.
In 2012, Sid Sijbrandij, the current CEO of GitLab, created a post in Hacker News — it turned out to be viral. They say that more than 300 people signed up for the beta version of GitLab. And that’s when GitLab started gaining strong momentum.
In 2016, GitLab grew significantly, and more than 100,000 organizations, along with millions of users, used GitLab at the time.
In 2018, when Microsoft acquired Github, a lot of people transitioned to GitLab. That was also another case in which GitLab experienced a spike in the numbers of new users.
OK, great, now you know what’s the story behind each platform.
So let’s dive right in and see what the differences between GitLab and Github are.
There are a couple of significant differences that may cause you to prefer GitLab over Github and the other way around. Let’s check them out:
In the past, GitLab had a significant advantage over Github by providing an unlimited number of private repositories for free.
However, as of January 2019, Github delivers free private repositories for teams of 3 users or less. Yet, GitLab still has an advantage over Github. That’s due to its robust free plan that allows you to have unlimited repositories as well as an unlimited number of team members on board.
NOTE: As of the 14th April 2020, Github allows you to bring unlimited collaborators on board along with an unlimited number of repositories.
Also, Github limits the repository storage to 500 MB per repository while GitLab caps the storage out at 10GB per repository.
Overall, GitLab still wins the game when it comes to free private repositories.
What’s unique about GitLab is that it comes with a built-in CI/CD framework.
It enables you to run automated tests quickly. And what’s more, it’s free.
One of the main reasons why developers used to switch over to GitLab was the great built-in CI/CD tool that comes with it.
But not anymore.
With Github’s newly released built-in CI/CD framework, Github is back in the game.
You no longer need to integrate a 3rd party CI/CD tool to Github in order to automate tests and speed up the development process. Though you still can do it if you prefer Jenkins or CircleCI over Github.
Github definitely made an excellent move by releasing its own built-in CI/CD framework. Yet, because GitLab has been offering its own CI/CD tool for so many years, we can confidently say that GitLab CI/CD is way ahead of Github. As a matter of fact, the Continuous Integration framework inside GitLab is ranked as one of the best tools out there, if not the best.
Also, GitLab comes as well with integrations to various tools. That’s in case you prefer another CI/CD framework.
Overall, the built-in CI/CD tool is one of the main advantages that used to put GitLab ahead of the curve. But now, with the release of Github Actions, things are no longer exactly the same as before.
Just a year ago, GitLab was the leading force when it came to Continuous Integration and deployment.
However, with the release of Github Actions in November of 2019, Github now features its own built-in CI/CD framework as already mentioned. This puts Github high in the rankings, among other CI/CD tools.
Github Actions enable you to quickly automate tests and deploy code so that you can meet all your deadlines. It’s actually pretty similar to GitLab’s CI/CD.
Also, it looks like Github’s CI/CD tool managed to attract a lot of developers — as of January 2020, more than 40 million developers use Github.
What’s cool about Github’s new CI/CD tool is that it features “matrix builds.” It allows you to run multiple versions of your applications in parallel. In other words, you can test two versions of your code on macOS and Windows. Pretty cool, eh?
And because it’s a relatively new tool, Github Actions is going through a lot of optimization.
So if you happen to encounter some problems with it, take it with a grain of salt because these issues will probably be fixed shortly.
But all in all, both GitLab and Github are competing quite equally now.
GitLab definitely stands in front of Github when it comes to handling your entire DevOps lifecycle.
Give the image below a glance to see how GitLab compares to Github:
Even though Github offers quite a large number of features, GitLab simply handles your entire software development lifecycle (SDLC). From the idea in your head to the code in the cloud.
However, keep this mind:
GitLab indeed offers tons of features. And it’s really great. Yet, the interface isn’t quite friendly. It might leave you mind-boggled if you are just starting with GitLab.
There’s actually a tradition for GitLab to release a new feature every month on the 22nd. And that’s great because GitLab is the most feature-rich git platform currently available.
However, we’ve met a lot of GitLab users on forums complaining about GitLab’s features being “halfway-done.” Not all features are fine-tuned, which leaves some customers unsatisfied.
And the thing with Github is that it features a super-simple interface and infrastructure.
Although Github doesn’t provide you with all the features for a full SDLC, Github won’t overwhelm you with “halfway-done” features.
So, basically, you’ll have to make a choice. Would you prefer to work in a pleasant-to-the-eye and intuitive environment? Or you’d rather risk GitLab’s un-intuitive interface in order to have everything you need for your SDLC in one place.
If it’s the latter, your pick would be GitLab. If not, go for Github.
When it comes to importing and exporting files, GitLab delivers step-by-step documentation. It makes the entire process effortless and smooth.
Github, however, doesn’t come with thoroughly-explained documents on importing and exporting. Which might be considered as a disadvantage.
On the other hand, Github comes with a tool called — Github importer. What’s cool about it is that it automates the whole importing process for you. And this actually makes it pretty easy to get onboard with Github.
So if you are planning to switch to Github, the Github importer tool will definitely help you a ton. Though, there’s not much documentation delivered regarding the exporting part.
All in all, GitLab brings quite an extensive documentation on import/export. Yet, Github makes it super easy with its Github importer tool.
Where Github really excels at is the community it brings to the table.
Once you sign up for Github, you become a part of a strong open-source community of 40 million developers. Everybody contributes to others’ code, makes suggestions and optimizations, in order to help each other.
Honestly, Github’s community is strongly bonded. People are friendly and will give you helpful and honest feedback.
GitLab also features quite an exciting community. They are hosting community events and connecting open source contributors to ensure everybody has a great experience.
However, if you are looking for the most popular platform and community among developers, Github is the place to be in.
When it comes to the Enterprise editions of both platforms, there are some significant differences we will have to mention here.
Based on most people’s opinion, GitLab delivers better Enterprise experience than Github.
GitLab enterprise edition is significantly cheaper compared to Github. Therefore, GitLab instantly becomes a preferred option by teams and companies that have a tighter budget.
On the whole, GitLab is pretty strong in features when it comes to enterprise companies. It definitely delivers a feature-rich experience.
Yet, Github is still highly popular among larger development teams and organizations as it has established quite a strong position on the market — been here since 2008.
Both Github and GitLab have quite different pricing plans.
Take a quick glance at the pricing structure:
If you are looking for the cheaper option, GitLab would be the pick for you.
However, Github provides you with various pricing options. And it’s also quite flexible in features.
Github’s Pro plan is quite attractive as it allows you to have an unlimited number of collaborators on board and gives you an extra 1GB of Github Package storage. It’s their most popular pick (excluding the free plan).
GitLab, on the other hand, provides you with an unlimited number of users even when you are on a free plan, which makes it perfect for teams on a budget.
GitLab’s Bronze option brings a total of 4,000 CI pipeline minutes a month, while Github’s Pro plan delivers 5,000 CI pipeline minutes a month.
So, it’s pretty much a personal preference here. If you have the budget and you’d like to get higher amounts of CI pipeline minutes, then go for Github. Otherwise, GitLab would be great for smaller teams or personal use.
GitLab enables you to modify people’s access to repositories based on their role in the company.
With Github, you can basically decide who gets read or write access to your repositories.
Personally, I prefer Github’s way of providing you with access. However, you’ll have to test it out and see what works best for you and your team.
GitLab is designed with a Web IDE, and Github is not. A Web IDE inside GitLab enables you to write code faster by avoiding the switching to a local development environment. What’s cool, GitLab’s Web IDE is integrated with merge requests and the built-in CI/CD framework. Thus, you’ll be able to speed up your workflow.
Cycle analytics are available in GitLab. Cycle analytics are basically reports that tell you how your existing workflow is performing based on time and planning.
Monitoring — similar to the Cycle Analytics, GitLab collects a vast amount of data in order to provide you with actionable insights and metrics to determine your team performance. For Github, you’ll have to use integrations to monitor your team performance.
Open Source — GitLab is an open source platform whereas Github is based on closed source. They both now offer free private repositories for open source projects. However, Github has limited that to only three users. While GitLab allows you to have unlimited free private repositories as well as an unlimited number of users on board. It’s vital to say that you can install GitLab on your own servers while with Github, you can’t do that.
NOTE: As of the 14th April 2020, Github allows you to bring unlimited collaborators on board along with an unlimited number of repositories.
Issue Tracker — both GitLab and Github have their own issue trackers. Github’s issue tracker is super simple and easy to use. While GitLab’s issue tracker might be a bit complex at a glance, switching and moving issues between projects can be done easily as GitLab’s issue tracker is very flexible in features.
Burndown charts can be found inside GitLab while with Github, you’ll have to use a 3rd party tool like ZenHub. Burndown charts are super useful when developers have to track their progress during sprints or when testing new software features.
Issue weights — these can be beneficial when it comes to prioritizing your tasks using Agile methodologies. GitLab allows you to assign a weight to your issues so that you can easily manage your issues through Agile methods. While with Github, you can’t do that.
CSV file export — GitLab, as already mentioned, has a pretty nice documentation about exporting files. Once you go through it, you’ll be able to export file issues to email addresses as attachments easily. With Github, you might have a hard time exporting files as there is a lack of documentation.
So that’s pretty much it.
If you have a hard time deciding which one is the right pick for you, let me give you my point of view… and tell you in which cases you should go with Github and when you should stick to GitLab.
So first, why use GitLab?
If you are looking for something flexible, that can handle your entire SDLC, and also cheap… GitLab will be the perfect option for you.
The uniqueness of GitLab stems from its amazing features — issue tracker, built-in CI/CD, deployment, monitoring — that enable you to go from development to cloud without having to use other 3rd party tools. You have it all in one place. Therefore, GitLab is great for personal use.
However, keep in mind that due to the excessive amount of features, the interface might be a bit overwhelming. So you’ll have to give it some time if you are just starting in order to get used to it.
NOTE: Here’s an interesting fact about GitLab — it has a Global Volunteer Month: each December, GitLab supports all volunteers in the development of a software solution that will help the local community or in any other social responsibility endeavor
OK, and now, why use Github?
On the other hand, if you prefer a simpler alternative that is trusted by 40+ million developers worldwide, Github will be the pick for you.
What’s more, Github is also highly preferred by larger teams that depend on crystal clear team communication. That’s because Github delivers fantastic collaboration tools in order to make your team communication efficient so that you guys can develop faster and produce quality code.
Github also provides you with a larger number of integrations compared to GitLab. This allows you to connect Github with all of your favorite tools.
And as of November 2019, Github can also help you go from development to deployment stage without any 3rd party integrations. With Github’s built-in CI/CD tool — Github Actions, development becomes faster and easier.
Yet, when it comes down to a full DevOps lifecycle, GitLab still tops the rankings with its top-notch built-in CI/CD framework and monitoring features.
I personally reached out to some experts in the field to ask them what they think about “GitLab vs Github in 2020”- of course, not all responded, but we got a nice amount of good answers.
“GitLab is much more than Github, and when it comes to DevOps full lifecycle, GitLab is way ahead, but it’s not free.” — Javin Paul, @javarevisited
“Both are web-based Git repositories offering everything that Developers or DevOps need. Both are driven by a highly active community of millions of developers. The most important difference is that you can install GitLab on your own servers for free while GitHub only provides free web accounts to anyone. At enterprise level it is a matter of taste if you choose GitHub or GitLab, feature wise they are pretty much the same.” — Sebastian, CTO, Website: https://pixolution.org/
“GitHub is a git-based repository platform for managing your code and backup in an online repository. GitLab is a repository manager that lets the project management teams collaborate on the development of code and test the code. GitLab has the CI/CD for the project management, if you need this you need to go for GitLab because GitHub only manages your code.” — Kenny Trinh, CEO of Netbooknews, Website: https://www.netbooknews.com
“I’ve used Github, GitLab, and even BitBucket. I prefer Github for its simple UI and pull request commenting. Before, you would have to pay for private repos on Github, but now they’re free — albeit with limited contributors. GitLab is great for integrating your own server with continuous integration (CI). Bitbucket is useful if you use other Atlassian products like JIRA or Confluence. It’s easy to integrate Github with third-party CI/CD, code quality checks, but others might prefer having it all under one platform (GitLab).” — Anthony De Guzman, Co-Founder of Breezeful (YC W20), Website: https://breezeful.com
“If you want to compare GitHub with GitLab, there’s one major difference. GitHub is a social platform. With that in mind, it makes the VS question rather moot. It’s like comparing your photo album to Instagram. Both allow you to store your photos, but the interaction or lack thereof is fundamentally changed. I use both for different purposes, there is a small overlap, but nowhere near enough to force someone to choose one over the other. I love GitLab because it offers unlimited private repos. I usually use GitHub for open-source stuff as it’s free, and it is the go-to spot to find open-source projects.” — Scott Krieger, Creative Director & Web Developer, Website: https://studiofifty-four.com/
“After the purchase by Microsoft, GitHub positions itself more as a kind of social media channel: For example, the “explore” option has been largely revised, and so has the related email. GitLab has kept to its stable path as the open-source alternative to the more-commercial GitHub. This ‘pattern’ has been seen before, and again it’s up to each one to decide on which side you feel more comfortable: the commercially-driven side or the more idealist side.” — Peter Thaleikis, software blogger — https://peterthaleikis.com/
“GitHub is a good-old, well-known, and popular software development platform — everyone knows it, and everyone uses it. GitLab is a less popular platform, at least yet, but it is already more functional and more convenient. Moreover, I admire GitLab as a company — they have a sound corporate culture; for instance, all their minutes last no longer than 7 minutes.” — Alex Pletnov, CTO, Website: https://keenethics.com/
P.S. If you still have doubts about GitLab vs Github, you might consider heading to Codegiant, where I work.
Codegiant is also a git repository platform that offers a simple issue tracker, built-in CI/CD framework, bug tracking system, source code management, and more importantly, it has quite an intuitive interface. So if you are looking for a lot of features combined with a pleasant-to-the-eye interface, hop on to Codegiant.
That’s pretty much it to this article. Hope it helped you out! Feel free to share it if you think some of your colleagues or friends can benefit from it. Leave a comment below if you’d like to add something to the overall assessment.
Previously published at https://blog.codegiant.io/gitlab-vs-github-which-one-is-better-2020-d8ec7fb9542c