Why I use GitLab
Source control is something you absolutely should be doing as a developer. It doesn't matter if you are working by yourself of hobby projects, or with a team of hundreds on a commercial product. Source control is a must!
When I first started my career, I worked for a company who used SVN. There's nothing wrong with that, and I don't know if they still use that now. As recently as 2015, I used SVN. Okay, I used SVN in a commercial setting, but used Git (via GitHub) for personal projects.
Back then, GitHub was something you had to pay for if you wanted to have private repositories. Pubic ones were free. So I paid a measly $7 per month to have up-to 5 repositories for free. I wanted more than that at one point, but didn't want to jump up the pricing scale for hobby projects I was testing things with. Enter my search for alternatives.
I looked at a few, but settled on GitLab because it was free for unlimited private repositories. Great, I need never delete another project again! So I signed up. The rest is, essentially, history. I've never found the need to look for another product in any serious capacity for the following reasons:
It's still free!
That's right - I don't pay for the hosting of my personal projects - all of which are private at the moment. Whilst the cost of different tiers aren't a lot (until you get up to Gold), I haven't found a need for an increased level over basic because...
There's so many features
Just look at the feature comparison page to see what I mean. It comes with issue boards, customisable Kanban boards, release history pages, project wikis, and...
Built-in CI/CD functionality
I can build and deploy projects all as part of my basic level subscription. So this might only have 2000 minutes a month by default, but if your pipeline takes an hour to complete end-to-end, you can still run this once a day, every day. Also, if your pipeline takes that much time every time, you might want to try to refine it!
Where I use GitLab
I've already mentioned that I use GitLab for all my personal projects. But I've also introduced it to a couple of places of employment in the past. One no longer uses it - they had a preference for another product, but GitLab got trialled. My current employer uses it following an evaluation.
We started off using only the free tier, but as the development team grew we needed more features. At the moment we only pay for the Bronze tier, but that's given us issue weights, related issues, and burndown charts - amongst other things. All for $4 per user per month.
I specifically mentioned 3 features there, as those are what I use every day to see how things are going. There's a few features I'd love to use which are in the Silver level (Scoped Labels, Roadmaps, and Operations Dashboard, please), and at some point in the future I will be aiming to upgrade the subscription to that level; but I can get by without them for now.
We still get only 2000 pipeline minutes per month, but I don't think we've ever hit even 50% of that yet, so I have no concerns there.
The only drawback I have is that the cloud version is hosted in Google Cloud, and that doesn't have an easily determinable set of IP addresses, so any actual deployment requires the SSH port on the servers to be open to the world, rather than firewalled off to specific IP addresses. I don't like the security risk that brings, but it's one I accept and manage for now. In time, I'll be moving my team over to self-hosted GitLab (yet another option!) and have that closely firewalled for security. You don't get that option with GitHub.
Better than GitHub?
I'd say so, but let's look at what is offered between the two products. Information has been pulled from the GitHub Pricing page, and the GitLab pricing page. Where a price point is listed, it is always a price per user per month. No points are given for a draw. This section forms part of the #GitChallenge set by GitLab (so yes, I did it to try and get free swag to go with my paid-for t-shirt)
Both products offer unlimited public and private repositories, with unlimited collaborators.
Both products offer 2000 CI/CD minutes (GitHub actions) at the free tier. When you start paying, GitHub offers 3000 minutes at the $4 price point.
Result: GitHub 1, GitLab 0
Documentation for a project is essential. Even if it's as simple as how to get up and running with it for new starters. This is available on all projects at the free tier with GitLab, but only on public repositories in GitHub. Private wikis are only available at the $4 price point.
Result: GitHub 1, GitLab 1
Issue weights are great for knowing how difficult, and therefore how long a task might take. It's the basis of burndown charts and general project management in an agile environment. This is available for $4 on GitLab, but isn't available on GitHub
Result: GitHub 1, GitLab 3 (1 each for issue weights, and burndown charts)
You might want to run certain rules or perform certain actions on a commit or activity. Webhooks for commits (and other events) are available on GitLab for $4; on GitHub (though their pricing page mentions it) it requires Enterprise Server, for which you need to contact their sales team. This means it needs to be a fully dedicated instance for you, either in the cloud or self hosted.
Result: GitHub 1, GitLab 4
There's likely to be a time when things don't work the way you expect, or things go generally wrong. This is where support comes into the mix. GitHub has community support available for all, and support available via email for all paid tiers. Premium support is "available" at the $21 price point, but that indicates it's an additional charge. GitHub does, however, offer telephone support if Premium or Premium Plus Support is taken out.
GitLab offers priority support by email from the $19 price point, with clearly defined SLAs in the documentation. It doesn't cost any extra, but there is no telephone support available at all.
Result: Draw. No additional monthly cost for support redeems the lack of telephone support for GitLab. The lack of transparency on cost for support for GitHub means I won't give it an edge here for phone support availability.
Most organisations use Active Directory on their networks, or some other form of user directory which implements LDAP. Using this as a method of logging in to applications is great, as disabling a user when they leave means they can't access private code or obtain other secrets from source control. Now that Microsoft own GitHub, this would be trivial for them to have available all over. It is, however, only available at the $21 price point, compared to the $4 price point for GitLab.
Result: GitHub 1, GitLab 5
I mentioned above that my biggest gripe with GitLab is the lack of defined IP ranges to allow through a firewall for deployment. This is easy enough to get around by hosting it yourself. This is available for nothing with GitLab, you just get the basic subscription, and can upgrade to the level you need. GitHub forces you to be at the $21 price point before they let you host the product.
Result: GitHub 1, GitLab 6
If you want a full-featured system to use for either personal or commercial projects, you can opt for the well known industry name, GitHub, and pay a small fortune for a product missing fundamental agile project management features, and then pay for another solution to do that project management. Or you can go for GitLab, pay a lot less, and get a lot more.
I'm sure that, in time, this feature gap will close. But until then, the early lead on CI minutes GitHub had is nowhere near enough of a benefit for me to move my projects back there; nor is it enough for me to give it further consideration to move my development team at work over.