GitLab vs. GitHub — The Ultimate Git Champion

varanasiroshan
7 min readFeb 11, 2021

GitLab is currently rewarding the DevOps and open-source community for giving feedback and comparing the two platforms side-by-side. How could I turn down this offer — especially with merchandise to be won? GitLab has rallied the community with their #GitChallenge and wants to know how GitLab vs. GitHub fairs in open battle.

I never enjoyed comparing products, since any different company has its goals and focuses which are really different, so, long story short, it depends mostly by what are you looking for and what you need exactly. This can be understood only trying both the platforms so that you can feel what’s the most comfortable platform and the features you need absolutely.

For this task you won’t need to pay anything since GitHub has its free version that can be accessed during the registration phase, while GitLab is a free alternative which offers also a 30 day trial, without having to insert your CC information.

On the other hand, GitHub and GitLab present key differences and similarities which can make this choice really difficult, especially for new entries in the Open Source World.

Key Differences and Comparison

Github is more known around the globe and this is the key of the massive statistics that made the platform one of the most used tool in the Developer Community.

  • Better user/team management options, which allow to add/edit permissions for specific users in order to collaborate actively on a project
  • Code analysis highlights function/method/classes references and declaration for an easier code review process
  • Better plans for teams and enterprise users

GitLab instead was popular because allowed free private repositories creation, but nowadays also GitHub includes them in the “Free” plan. That said, it’s plenty of many other features which aren’t available on GitHub.

  • Deploy process is integrated in GitLab through the usage of Kubernetes, while GitHub needs a external service/server to deploy your code
  • Automatic charts creation to track release of new versions (especially useful for developer teams)
  • CI/CD integrated without need to install anything locally

For comparison regarding the different plans, I suggest looking at the following pages:

GitLab — User Experience

For any fresh-faced readers, GitLab is:

“a web-based DevOps lifecycle tool that provides a Git-repository manager providing wiki, issue-tracking and continuous integration/continuous deployment pipeline features, using an open-source license, developed by GitLab Inc.” — Wikipedia

In a nutshell, GitLab helps software development and DevOps teams do what they do best — build software and deliver it.

I first used GitLab when I started as a cybersecurity software engineer at a major telecommunications company in the UK. It was also the first code management system we used at 418sec before moving onto GitHub. Prior to this, I had experienced git fundamentals at university, where I collaborated with other students on coursework. From this, I had built up a working proficiency in the git eco-system including the various CLI tools and workflows that help build an efficient software development team. As it happens, I started off with Bitbucket, but we won’t let the Atlassian stack wade into this battle today.

At first glances, GitLab was proving itself to be a respectable code management and version control system. It had all of the attractive features you would expect from a platform that helps engineering teams develop and collaborate together. GitLab continued on nicely with the fundamentals of version control that I was familiar with and synergised this with their various services, including the CI/CD pipeline, that became of significant value to me and my team. But before I let myself drag on with an odyssey of likes and dislikes, I will try to keep my opinions terse.

You may have realised in the title of this section that I mentioned “user experience”.

User experience is:

“a person’s emotions and attitudes about using a particular product, system or service.” — Wikipedia

For me, GitLab is the most positive user experience I have had in developer communication. From project segregation to Kanban boards, all the way to automatic merge requests, the user interface felt like the Nirvana of what git, when visualised, would look like. The Kanban board serves as a central overview of the development team, like many other code management services, but GitLab goes above and beyond in the ways it integrates with pull requests, issues and other functionalities like CI/CD. Furthermore, the multi-faceted referencing system makes linking up merge requests and issues extremely easy — a simple yet valuable function. These features when combined, make tricky and abstract conversations around software development more measurable and trackable. It feels like a solid starter for managing a software development project with clear and granular permission controls as well as the obvious free access to private repositories.

GitLab also provides a bigger bite of deployment features and analytics tools that you can use right off the bat without purchasing a subscription. This is certainly helpful when you are upskilling in code collaboration and Agile development — although not too much of a technical deep dive that it is overwhelming. Moreover, it is the well equipped and expert DevOps teams’ swiss-army knife. The ability of GitLab to tailor to various audiences in a seamless way is impressive.

For me, the missing tool in the box is the active community on the platform. It certainly does feel like a siloed environment with a minimal open source community defending it — yet I don’t believe this is what GitLab is focusing on necessarily. Just a thought.

GitHub — Community

If you aren’t familiar with GitHub, you might have heard about their popular acquisition by Microsoft, or perhaps some of their annual conferences including GitHub Universe and GitHub Satellite. GitHub, whilst similar to GitLab, is a:

“…distributed version control and source code management (SCM) functionality of Git, plus its own features. It provides access control and several collaboration features such as bug tracking, feature requests, task management, and wikis for every project.” — Wikipedia

At face value — very similar, right? Read on and find out…

Photo by Richy Great on Unsplash

I first encountered GitHub at university during my second year. We had a Community Evangelist come into our operating systems lecture, locked and loaded with merchandise including the famous Octocat stickers and GitHub themed comics. It is a well known fact, that to grab the attention of any Computer Science lecture hall, freebies and merchandise have to be involved; unless the lecture is on automata or logic (written with slight sarcasm).

I am not usually the type of person to buy into a brand or company, but when it came to GitHub, I knew I liked what I saw — even though I hadn’t actually used the platform. Rest assured, I will strive to prevent my love of the brand from having too much sway in this battle.

Like my previous section, I have identified the most important pillar of my appreciation for GitHub — community.

Community is:

“…the condition of sharing or having certain attitudes and interests in common.” — Oxford Languages

GitHub now has 40M+ users on their platform — as announced at GitHub Universe by company CEO, Nat Friedman, last year. This is a staggering number of users and it doesn’t take a long thought to understand why GitHub is considered as the home of open-source software.

GitHub like the other Git-management systems provides the fundamental and expected toolkit for code storage, version control and software development. This is the platform we use at 418sec as our mission is to help secure open-source packages suffering from security vulnerabilities. So, what better place to do it than where most of the open-source code sits, with a behemoth community behind it from various security and engineering fields. Yet, on a more personal level, I feel proud and achieved when I contribute to a public repository on GitHub or show off my own repositories. GitHub feels more like a forum for development whereas other providers feel more siloed and contained within an internal team. It succeeds in being somewhat of a social network for software engineers and like-minded technical creators. You can meet, collaborate and learn from a plethora of developers and easily reuse functionality that will help you in your journey in becoming a Git expert.

Beyond the community, I am impressed by the level of documentation around the GitHub Octokit, REST API and GraphQL API. This has helped me extend my creations on the platform to other services. However, the quality of the documentation is expected to be this refined with such a significant number of users reading and suggesting improvements every day. Prior to GitHub’s recent announcement, which made private repositories free for all users, GitHub was missing some key fundamentals in the subscription tiers — yet they have now made the cut and pulled themselves up to an expected position against competitors.

One point of concern I had when joining GitHub was that the user interface and experience were not as intuitive and usable as other providers. It took lots of time and some clunky learning to get used to interacting with issues, pull requests and project boards — especially the lack of integration between the three in contrast to competitor offerings. Furthermore, GitHub certainly does not have as many of the refined bells and whistles as GitLab in CI/CD and DevOps experience, nor the maturity for it yet. But, I believe the product roadmap and experience that they are focusing on is different from the all encapsulating tool for DevOps and engineering teams, like GitLab.

Nonetheless, GitHub — in the words of Helen Keller, American author and political activist:

“Alone, we can do so little; together, we can do so much.” — Helen Keller

Conclusion

As I stated at the begin of this article, it’s all up to you choosing the best platform and the one you’re more comfortable with!

Give a try to each one and check the trials as well as the integration enabled for GitHub/GitLab.

Stay safe and happy developing 😃

--

--