GitChallenge - Github vs Gitlab comparison
I review the two most popular version control systems for software developers
Recenty, Github announced that they were slashing prices for their premium plans and making a number of other features free due to the current Coronavirus pandemic. Gitlab have also made a similar announcement and, as I’ve used both Github & Gitlab in the past, I’d like to talk about the differences between the two powerhouses when it comes to version control.
What I currently use
Right now, I have accounts (as well as organisations for AC0/RD Software) with both Github & Gitlab, however I primarily use Github today.
(My Github dashboard)
I use Github, because while Gitlab has more features, right now I don’t currently need to use CI/CD pipelines, and I get by fine with Github. Also, while Gitlab has made some great leaps and bounds with its UI over the past few years, for me Github is still better looking and that is the main reason that I use Github right now.
I only started using Github properly in 2019, but one of the old arguments against Gitlab was that no-one used it. After Microsoft shelled out $7.5 BILLION in 2018 for Github, developers jumped ship to Gitlab amid fears that Microsoft would “kill” the open-source community - however, both Github & Gitlab are thriving today.
(My Gitlab dashboard)
Right now, I use Github for
Hosting my personal website through Github pages
Hosting the AC0/RD Software network
Learning & logging my progress with coding languages like C++, Java, and Lua
Sharing my simple Python & Unity projects
Occasionally using pipelines for my projects
I almost never need to use pipelines (Gitlab) or packages (Github), and while I’d like to in the future (in fact, once AC0/RD launches my usage of Git services will definitely be shifting to more “dev-oriented” usage), right now I have no need to. I still use Gitlab to host some repositories, but sparingly - usually for either a backup, or when I do need to use CI/CD tools.
Some simple differences
Now that we’ve got my reasons for using Github out of the way, let’s look at the differences between Gitlab & Github. There’s a few simple ones that confused me at first when I started using Gitlab after a few months on Github, but after a few days they confused me no more.
Repositories (on Github) are called Projects on Gitlab
Organisations are called Groups on Gitlab (and you can have subgroups, something I’ll talk about later)
Pull requests are called Merge requests on Gitlab
Comments on issues are counted as commits on Gitlab, but not on Github
Early history of the Fox & the Cat
Gitlab was founded 3 years after Github, in 2011, however the domain name had first been registered in 2004, and in 2010 the domain name was registered again and parked by GoDaddy. Unlike Github, from the start Gitlab understood the importance of CI/CD tools, and from the start it had a CI/CD applet - Github wouldn’t get one until 2019.
300 people signed up for the first beta of Gitlab, in 2012, and by 2016 it had over 100,000 organisations, or groups, and many millions of users - the fox was starting to gain on the cat’s momentum.
It wasn’t until April 14 this year that Github allowed teams, or organisations, to create unlimited private repostories. Gitlab had offered this to organisations from the start. While users on Github could host private repositories for free, Gitlab’s more versatile starter plan paved the way for less restrictions when it came to privacy.
The repository for AC0/RD’s website
The layout across the Github website is horizontal, while Gitlab moved from that traditional layout (which I preferred) to a vertical sidebar:
This was one of the main reasons that developers jumped ship from Github to Gitlab, even before Microsoft’s big (and controversial) purchase of the Cat. Companies like CircleCI, Shippable & Jenkins are all examples of companies that grew big by accomodating the users who still used Github who required continuous integration. While last year Github introduced CI/CD for the first time, many people still use those services, for the main reason that since the Github team dragged their feet for so long, companies like Gitlab & CircleCI had made their platforms really, really good - so even a behemoth like Microsoft couldn’t recuperate all those customers from the start (give it time, however, and I believe that Github users will start to trust in the platform more, which in turn will give Github - and Microsoft - an incentive to improve the system).
Development & DevOps
One of the key problems with Github is that there is no webIDE - unlike on Gitlab (however, Gitlab does have its own problems with online usage - like only being able to upload a single file on the website at a time, but if you use a git client like GitKraken there’s no problem).
Here’s a comparison of DevOps between Github and Gitlab, from Gitlab’s website:
However, while Gitlab does release frequent updates each month, it’s not uncommon for users to complain about the new features that are added being rushed and only half-completed. Similarly, the common consensus around the UI/UX of the two platforms is that Github “features a super-simple interface and infrastructure.”
Community & Education
It’s a common argument amongst Github fans (and I’m one of them) that Github is a better platform because of its larger userbase, and that is true. Github has over 40 million users, making it the world’s largest website for open-source developers. While Gitlab certainly has a large number of developers & enthusiasts, too, it lacks the sheer number of well-built, official integrations that Github posesses - Trello, Slack & Monday.com are good examples of this.
But this is not to say that there are no external tools/integrations that work with Gitlab. Integromat & Zapier both support Gitlab, and there are slack & trello apps both available as well. If there’s an app that isn’t available on Gitlab, you can either build it yourself or get someone else to build it for you - chances are, there’s more people that feel the same way.
Or you can do what I did, and use both Github & Gitlab, but use something called “repository mirroring”. What this does is it allows you to connect a Github & Gitlab repository together, so if you need a specific feature from Github tbut your main repo is on Gitlab, it’s all good. The commits, pull/merge requests & issues can all be synced as well, either through the official interface of through third-party tools like Integromat.
The biggest downside for me with Gitlab is the lack of an education plan. While Gitlab does offer free premium plans to students, a school itself has to apply for one, and where I live - Australia - very few governments or schools see the importance or value in teaching coding or computer science, and they’re unlikely to put much time into investing in improving the experience of the few students who take computer science (which is still not yet a compulsory course!).
On the other hand, with Github I just input my education email addres and not only did I get access to Github premium, I also got access to premium plans for dozens of other websites and apps, like Canva & Name.com.
Choose what works best for you. Both solutions are great.