The need for a "Git" has always itched in the back of every developer's mind. It predates the existence of both GitHub and Gitlab. Where two developers or more had to contribute code to a project, source code version control was too often a messy ritual.
As a developer, having some kind of portfolio to showcase your work, experience, and contribution in some form of a publicly hosted project(s) is quite essential.
Both GitHub and GitLab offer to host public repos (for free) - so keep reading to learn which one fits you.
This article explores and contrasts the features, functionalities, and overall working models of both Gitlab and Github.
Using both platforms would only be counterproductive, and so we'll shed enough light on their applicability to help you pick the best fit for your projects.
Let's take a holistic approach to the comparison, and let every reader know just what it is that both platforms peddle.
What is a Git?
Think of Git as the core system that manages revisions made to files and their contents. You can execute Git on your local network (offline) or in the cloud through hosting services providers. Yes, this is where Gitlab and Github come into the picture.
The brilliant idea of a Git was developed for the Linux kernel project by Linus Torvalds, back in 2005. Just as Linux is open source, the core technology around Git is free.
Service providers have been known to spice up Git with a host of other tools and features. Making it possible to sell the resulting platform. You'll learn more about this shortly. For now, let's turn our attention to Gitlab vs Github.
What is Github?
Github sprung into existence in 2008, just a few years after Git was first released. It had soon become a dominating code versioning and collaboration platform when it was bought by Microsoft a decade later.
Core features of Github include:
- Collaborative/Social coding - Include developer teams and code from other projects as you manage changes made by every contributor. Assign roles for senior team members to review and control the quality of resulting code efforts.
- Continuous Integration and Deployment Automation - Create (or use default) templates that make your software delivery process easier to manage. Create pipelines: tasks that run when scheduled from the coding, code testing, all the way to the deployment stage.
- Git Security - This starts with simple login verification (2FA) and automatic protection of main code branches from potential errors in new commits. And gets comprehensive with enterprise-grade security modules like LDAP and SAML, and IP access filtering.
- Github PM Tools - Github also provides an elaborate set of tools that mold every change specific to its project and team. You can trace issues, measure milestones, and a graphical dashboard to view activities around your repositories at a glance.
A unique selling point for Github is how by virtue of being Microsoft-owned, it comes as the default version control system (VCS) when you use development tools in the MS ecosystem. MS Visual Studios, with over 20% of the development tools market share is a prime reason why over 65 million developers use Github on a regular basis. MS Azure also adds to this end.
What is Gitlab?
Shortly after Github was created, Dimitry, a developer then based in Ukraine created Gitlab to solve a collaboration problem specific to his projects. Funny fact, the solution was created as a Github repo.
Core features of Gitlab include:
- Source code management - Gitlab provides working space for any code files your team needs to collaborate on. You can edit, moderate access, and iterate efforts on code by branching and merging with main files.
- Automatic DevOps - Gitlab provides a pipeline that removes quality reviews, testing, security scanning, and deployment out of your engineers' hands. Where several steps and team members would be handling these, the auto-DevOps feature kicks into action as soon as code is submitted to a repository.
- Gitlab DevSecOps - An approach to security that runs static tests (SAST) on every code block before it commits to main files. The same feature inflicts vulnerability management, android app testing, and container security.
- Infrastructure automation - By merging the core features of Gitlab and GitOps, users enjoy a seamless infrastructure automation experience.
A unique selling point for Gitlab is how it immediately assumes Agile methods and DevOps pipelines in every project. You can be sure that it fixes a problem that had not been touched by Github—given how it emerged from it.
Now that we know what both Github and Gitlab have to offer, let's take a closer look at the features that separate one from the other.
Gitlab vs Github: The Big Differences
Since all software development methods are quickly leaning toward CI/CD, expect both Gitlab and Github to support the DevOps philosophy. However, at the time of writing, the GitHub platform leaves development philosophy up to it's user's discretion.
To that end, while both platforms have free tiers, Github will allow 2000 free automation minutes on public repositories. Gitlab on the other hand squeezes that access to just 400 minutes.
Pricing model differences
If you decide to take your engagement with either platform a step further, Github will ask for $4.00 per team member. Gitlab costs $19.00 for the comparable tier, which can be justified with a jump in automation minutes to 10k in comparison to Github's 3k minutes. On the high end, Github costs $21.00 per user, while Gitlab asks for $99.00.
Perhaps they're actually providing something developers can't find in Github? A feature comparison is the best way to find out.
Github vs Gitlab: Feature Comparison.
Both Gitlab and Github offer several other features in addition to the core functionalities we've so far covered. To weigh the VCS systems against each other, let's categorize the rest of the features into 3 sections. Then we'll compare the depth of features that either option avails.
- Code creation and versioning
- Team and project management
- Security features
Code Creation and Versioning - Github vs. Gitlab
What you'll notice is that Gitlab comes with a WebIDE for developers to collaborate and create apps inside a (for lack of a better term) sandbox. If you want to make changes to code in Github, chances are you had to use an external IDE.
Having an editor means you can create apps from scratch in Gitlab, while Github focuses more on creating codespace creation. Moreso, Gitlab allows you to quickly preview apps next to the changes your developers are collaborating on.
Team and Project Management Capabilities
Both Github and Gitlab recognize the importance of strong project management frameworks around projects. However, Github integrates with Azure Active Directory to expose a wider array of the "Ops" side in DevOps to project updates where a company has adopted the Microsoft framework for business.
With DevOps pipelines as the backbone for its creation, Gitlab makes Agile project management a breeze with automation right off the bat.
In addition to protecting your repository from user-added loopholes through new code, both features have some impressive security features that enforce privacy. Github has Dependabot technology. An omniscient feature that evaluates threats status from any dependencies that you may have added to your repository. Gitlab, on the other hand, enforces security from the moment you start creating in its IDE. Effectively covering you with a DevSecOps approach to compliance and safety.
Here's a tabular comparison of the features you'll find in both Gitlab and Github.
The side-by-side comparison provided by the table neglects to expand on each of the features on the Gitlab side. In fact, the list of total services that Gitlab provides just about doubles that from Github. On the other hand, Github is (by far) more established when it comes to hosting public repos.
You'd think that having more features makes Gitlab the default preference for developers. But no. There's more that comes into consideration when choosing between the two.
How to Choose Gitlab vs. Github
For some developers, changing from the older Github means motion on their entire workflows. That inertia is a factor to consider when thinking of why there are still plenty of Github loyalists. Also, the fact that you don't have to be a DevOps outfit to use the platform counts, along with loyalty to MS products.
If you're looking to automate a large chunk of the work that happens after coding, Gitlab is a good option. From the table of features above, you could also take into consideration the CI/CD automation minutes cap into consideration. Most common is that companies using Gitlab will have at some point tinkered with Github and opted for the DevSecOps approach to enforcing security.
When both Gitlab and Github don't scratch your VCS itch, you can consider these options as well:
- CodeCommit by AWS
- Cloud Source Repositories by Google