Why I switched from GitHub to GitLab

Reviews

Since switching to GitLab, a few people have asked me why. There are several draws towards GitLab, and several pushes from GitHub.

1. Pipelines

1.a. Superior Continuous Integration (CI) / Delivery (CD)

I don’t usually like it when services are bloated by having a large amount of functionality that would be better as separate programs. But I am a pragmatist, and the ease of use of GitLab more than makes it up for me. The ability to use Docker images in CI is so much better than what I was doing before.

I’ve experimented with a few different CI/CD and GitLab Pipelines are by far the easiest I’ve found to set up and get working. It is also a lot faster than Travis, and allows you to host your own private Runners for projects, which is super nice.

1.b. Better Static Pages

GitLab Pages are published using their Pipelines system. This means that you have a complete Linux container available to generate your static website, allowing custom plugins and code far beyond what GitHub Pages allows you. I have a dedicated server, which means that I don’t need GitLab/GitHub pages as a host, instead, I use them as a nice way to generate and make updating my static sites easy.

2. Free and Open Source

GitLab is free and open source; GitHub is not. I prefer to use free software where possible, which is reason enough. With GitLab, I can export my information in full from GitLab and move it to my own instance. Whilst GitHub does allow this using its API, it would not be able to migrate to a self-hosted instance of the same software.

3. I’ll be getting used to GitLab, anyway

A common argument against migrating is centered around GitHub being perceived as easier to use. Whilst the GitLab interface is slightly more cluttered, I think that the perceived difference in use is much more due to users being used to the GitHub interface. This is no longer an issue for me as I will be getting used to it at my job.

4. No Microsoft

My main website and blog are in private repositories, and I wanted to keep it that way. This would require paying for the GitHub Pro plan, but I do not want to directly contribute to Microsoft’s wealth. This was the final push towards GitLab.