Als je moet kiezen tussen GitLab en GitHub, wat is dan het beste developmentplatform voor je team in 2024? Welke is de beste oplossing voor jouw specifieke geval?

Dit zijn de belangrijkste vragen die we in het artikel van vandaag proberen te beantwoorden.

Zowel GitHub als GitLab zijn developmentplatforms met een sterke focus op het open source systeem Git voor gedistribueerd versiebeheer. Een indrukwekkende 87,2% van de ondervraagde developers gebruiken Git voor versiebeheer, samenwerking, en soepelere deployment.

Git is daarmee echt een basistool voor developers geworden, van startups tot grote bedrijven en zelfs binnen overheden. Je kan Git ook bij Kinsta gebruiken.

Om die reden is het kiezen van de optimale tool voor je team ook zo belangrijk.

Daarom gaan we vandaag eens goed kijken naar de verschillen tussen GitLab en GitHub, de bijbehorende voordelen en nadelen, en welke de beste keuze is voor jou.

De basis van Git en cloud-based Git repository’s

Als je een absolute beginner bent en nog niet eerder met Git gewerkt hebt, is het handig om wat basiskennis te hebben voordat je een keuze maakt. Ben je echter een ervaren gebruiker van Git, voel je dan vooral vrij om dit deel over te slaan.

Git is een open source versiebeheersysteem, of in het Engels een Version Control System (VCS), waarmee je “snapshots” van een softwareproject kan bewaren. Hierdoor kan je in feite alle veranderingen bijhouden die je in een programma maakt.

Het grote verschil met traditionele versiebeheersystemen is dat je aan verschillende aftakkingen in verschillende versies kan werken, en ze allemaal op één plek kan beheren.

Je kan ze dan testen door ze samen te voegen (mergen) met een staging-aftakking (‘branch’) en als alles klopt, met de live versie.

Git branches
Git branches (Bron)

Alleen bij Git krijg je deze vrijheid om aan allerlei versies tegelijkertijd te werken. Het is absoluut noodzakelijk voor elk team dat bezig wil met feature-based development.

Met Git kan je dit allemaal lokaal op je computer laten gebeuren. Maar je kan ook handmatig toegang vragen en geven van en aan andere developers, bijvoorbeeld via een LAN.

Git shared repository
Git shared repository (Bron)

Wanneer je met grotere remote of distributed teams gaat werken, kiezen de meeste bedrijven voor cloud-based oplossingen. En daar komen GitLab en GitHub om de hoek kijken.

Ze bieden onbeperkte cloud-based opslag voor repository’s. Developers overal ter wereld kunnen daarmee eenvoudig samenwerken aan code. En dat kunnen ze doen zonder een virtuele LAN op te zetten of handmatig repository’s te moeten delen.

Maar cloud-based Git repository’s zoals GitHub en GitLab gaan verder dan alleen de basisfuncties van Git. Ze bevatten ook tools voor projectmanagement, samenwerking en deployment om de hele development workflow te verbeteren.

Ons Git vs GitHub artikel legt deze aspecten nog gedetailleerder uit. Of je kunt de video hieronder bekijken:

Tijd om te gaan kijken hoe GitLab en GitHub zich tot elkaar verhouden.

GitLab of GitHub: De basis

Laten we eerst de basis bekijken door beide platforms kort te bekijken en te zien wat ze te bieden hebben.

Wat is GitLab?

GitLab startpagina screenshot.
GitLab startpagina

GitLab is een cloud-based Git en DevOps platform waarmee developers hun code kunnen monitoren, testen en deployen.

Het voornaamste verkooppunt van GitLab was altijd een Git repository in de cloud. Maar het platform heeft zich inmiddels verder ontwikkeld. Vandaag de dag biedt GitLab allerlei DevOps features, zoals doorlopende integratie, beveiliging en zelfs tools voor app-deployment.

GitLab begon als self-hosted open source alternatief voor GitHub. Tegenwoordig biedt het ook gratis en betaalde cloud-based SaaS pakketten aan.

Daarnaast krijg je er de belangrijkste tools voor projectmanagement bij om je teamleden te kunnen monitoren en aansturen. Het is dus niet alleen maar een versiebeheersysteem voor je software.

Wat is GitHub?

GitHub startpagina.
GitHub startpagina

GitHub is één van de originele cloud-based Git platforms waarmee developers hun code kunnen hosten en monitoren. Inmiddels is het ook doorontwikkeld tot volledig developmentplatform.

Het is wel wat minder “kant-en-klaar” dan GitLab, maar geeft developers wel de optie om apps en integraties naar wens te implementeren via de GitHub Marketplace.

De focus ligt op de inzet van de actieve GitHub community, die zelf de functies kunnen bijdragen die ze missen.

Zijn GitLab en GitHub van hetzelfde bedrijf?

Nee, de twee online diensten worden aangeboden door compleet andere bedrijven. GitLab Inc. is een volledig op afstand werkend privaat bedrijf met 1303 medewerkers.

GitHub is een dochterbedrijf van Microsoft, met een hoofdkantoor in San Francisco in de VS, en met ruim 1600 medewerkers wereldwijd.

Het is een veel gestelde vraag en gebruikelijk misverstand, maar de bedrijven hebben dus helemaal niks met elkaar te maken, behalve dat het concurrenten van elkaar zijn. Je kan het vergelijken met denken dat Coca-Cola en Pepsi hetzelfde bedrijf zijn.

Is Microsoft ook de eigenaar van GitLab?

Nee, Microsoft is niet de eigenaar van GitLab, alleen van GitHub.

GitLab is een privaat bedrijf waarvan de aandelen (allemaal minderheidsbelangen) in handen zijn van diverse Venture Capital investeerders en investeringsfondsen. Zo zijn bijvoorbeeld Goldman Sachs en Iconiq Capital belangrijke investeerders van GitLab.

GitLab hostte hun diensten vroeger op Microsoft Azure, maar is verhuisd naar het Google Cloud Platform toen Microsoft GitHub overnam.

GitLab of GitHub: Overeenkomsten

We weten inmiddels dus dat alhoewel de diensten op het eerste gezicht op elkaar lijken, de bedrijven compleet anders zijn.

Maar er zijn toch meer overeenkomsten, naast de gelijksoortige naam en startpagina. Tijd om de features dus eens goed onder de loep te nemen.

GitLab en GitHub: De features

Als het gaat om de features, zijn er op hoog niveau weinig verschillen tussen de twee aanbieders. Het meeste van wat GitLab te bieden heeft, biedt GitHub ook aan, en andersom.

Feature GitLab GitHub
Git
Self-hosted Versie ✓ (bij het Enterprise pakket)
Doorlopende integratie en aflevering ✓ (via externe app)
Wiki-gebaseerde documentatie
Preview veranderingen in de code
Probleem tracker
Code Review
Meerdere aangewezenen voor problemen ✓ (Betaald pakket) ✓ (alleen public repository bij gratis pakket)
Projectmanagement Boards
Teamdiscussies
Tijdsregistratie ✓ (met app)
Tools voor beveiliging en compliance
Load Performance Testing ✓ (Betaald pakket) ✓ (met app)
Browser Performance Testing ✓ (Betaald pakket) ✓ (met app)
Herhalingen en sprint planning (inclusief burndown grafiek) ✓ (Betaald pakket) ✓ (met app)
Probleem dependency’s ✓ (Betaald pakket)

Er zijn geen belangrijke onderwerpen waar de ene provider wel een oplossing biedt en de ander niet. Het verschil zit er vooral in wie er toegang heeft tot de functies.

In de meeste gevallen heb je een app of externe integratie nodig bij GitHub. Je krijgt uiteindelijk hetzelfde resultaat (namelijk de gewenste feature), maar je moet er mogelijk wat extra moeite voor doen. We zullen zometeen wat dieper ingaan op dit proces, wanneer we kijken naar de verschillen.

Laten we verder kijken dan de lijst, en eens zien hoe de twee diensten zich verhouden tot Git.

Versiebeheer en Git functionaliteit

De Git functionaliteit en belangrijkste opdrachten zijn nagenoeg hetzelfde op de twee platforms:

  • Branch: Hiermee maak je een onafhankelijk development lijn aan, oftewel een aftakking, via de ‘branch’ opdracht. Dit kan van alles zijn, van een heel kleine functie, tot een hele development functie, of de belangrijkste main branch.
  • Fork: Een fork is een persoonlijke kopie van een bepaald code-repository, die elke developer kan gebruiken en mee kan experimenteren, zelfs als ze niet intern bij het project zitten. Je kan vervolgens een verzoek tot samenvoeging (request to merge) sturen om de veranderingen in de fork te combineren met een andere branch.
  • Pull: Een pull request (of merge request in GitLab) is een inzending van voorgestelde wijzigingen in de code van de bewerkte branch. Nadat dit verzoek wordt geaccepteerd, worden de veranderingen automatisch geïntegreerd in de relevante branch. Een senior developer of QA team zal de veranderingen dan meestal testen voordat ze in de master branch ingevoegd worden.
  • Merge: GitLab’s naam voor pull requests.

Behalve dat pull requests de naam merge requests krijgen, wat iets intuïtiever aanvoelt, is er weinig verschil in de daadwerkelijke Git functie.

Maar als het gaat om de ideale workflow bij deze features, zijn de verschillen aanzienlijk groter. GitLab en GitHub hebben allebei een heel andere kijken op hoe de ideale workflow voor programmeren eruitziet, en we zullen deze verschillen goed bekijken in het volgende deel.

Het versiebeheersysteem en Git zijn natuurlijk de kern van wat beide tools te bieden hebben, maar dat is tegenwoordig slechts de basis van een complete dienstverlening.

Beide platforms bieden allerlei tools voor samenwerking, beoordelen van code en projectmanagement.

Samenwerking, codebeheer en projectmanagement

Beide platforms bieden ingebouwde tools voor samenwerking en code review. Dat is onderdeel van de basisuitrusting die je bij beide gratis versies krijgt.

Zo kan je bijvoorbeeld pull (of merge) verzoeken in realtime bekijken en bespreken, veranderingen maken, en een compleet visueel overzicht krijgen van de verschillen in de code.

GitHub code review tools
GitHub code review tools

Deze tools markeren alle veranderingen en maken het zo eenvoudiger voor degene die de code moet beoordelen. Hierdoor kan je foutjes makkelijk opsporen, waardoor je de kans op grote fouten of zwakheden minimaliseert.

Alhoewel de screenshot hierboven GitHub benadrukt, biedt GitLab even krachtige tools voor het samenwerken aan en beoordelen van code.

Beide platforms bieden de belangrijkste tools voor projectmanagement.

Zo kan je in GitLab bijvoorbeeld een logische hiërarchie aanmaken voor problemen, takenlijsten toevoegen met omschrijvingen, en verschillende developers toewijzen aan verschillende branches.

GitLab projectmanagement tools
GitLab projectmanagement tools

Ook krijgen je managers toegang tot voortgangsgrafieken, bijvoorbeeld burndown grafieken, en andere visualisatie tools.

In GitHub kan je ook problemen, pull requests maken en notities categoriseren in projecten. Daarnaast kan je mijlpalen instellen en bijhouden en productiviteit meten met verschillende grafieken en rapportages.

Er zijn meer dan 500 apps en integraties voor projectmanagement te vinden op de GitHub Marketplace.

GitHub Pages en GitLab Pages

GitHub en GitLab bieden allebei gratis statische webpagina’s aan met informatie over je softwareproject en bijbehorende repository.

Developers kunnen op beide platforms eenvoudig het project ‘forken’ en er zelf mee aan de slag.

GitHub Pages.
GitHub Pages

GitHub biedt een eenvoudige tutorial, inclusief enkele eenvoudige thema’s om je website snel mee op poten te zetten.

Helaas bieden GitHub en GitLab allebei geen dynamische server-side processing, wat je nodig zou hebben voor PHP of ASP bestanden. Je kan alleen statische website content publiceren, dus bijvoorbeeld HTML of CSS.

Alhoewel dit betekent dat je niet meteen je WordPress website naar GitHub of GitLab over kan zetten, is het wel mogelijk om versiebeheer binnen WordPress te gebruiken, als je alles goed instelt. Met Kinsta kan je direct bestanden uit je Git repository halen via SSH.

Gratis pakket met onbeperkt aantal repository’s

Beide diensten bieden gratis pakketten met een onbeperkt aantal repository’s (publiek en privé). In de gratis opties zijn bij beiden ook de toegang tot geavanceerde features voor management, beveiliging en compliance beperkt.

Die functies staan hoog op het wensenlijstje van grote bedrijven, maar kleinere teams en freelancers zullen ze niet zo snel missen.

Alles bij elkaar zijn beide opties dus goed vergelijkbaar. Dat helpt natuurlijk niet echt bij het maken van een keuze.

Tijd dus om wat dieper te graven en enkele van de verschillen tussen beide Git platformen bloot te leggen.

GitLab of GitHub: Belangrijkste verschillen

Zoals je alleen op basis van de namen al kan vermoeden, hebben GitLab en GitHub een heleboel overeenkomsten.

Maar toch zijn er ook verschillen. In dit deel zullen we de belangrijkste verschillen tussen de twee platforms bekijken.

Doorlopende integratie

Wellicht het belangrijkste verschil qua user experience is dat GitLab Continuous Integration (CI, oftewel doorlopende integratie) en een DevOps workflow erg hoog in het vaandel heeft.

Met de CI tools van GitLab kan je code automatisch bouwen, testen en ontplooien zonder dat je afhankelijk bent van handmatige updates of lelijke zelfgeknutselde integraties.

GitLab for CI.
GitLab for CI

Als je eerder al een PaaS oplossing gebruikte, zoals gehoste Kubernetes, dan kan je met de GitLab integratie automatisch je apps testen, opschalen en implementeren.

Door alles via GitLab te regelen kan je developmentteam zich richten op het regelmatig live zetten van kleinere updates, in plaats van ze allemaal samen te voegen in één grote release.

Eén van de cruciale tools die dit mogelijk maakt is de automatische testtool die code automatisch scant op eventuele beveiligingsrisico’s.

Alhoewel je ook zeker een CI/CD workflow met GitHub kan opzetten, zul je daarvoor met een externe CI tool moeten werken, zoals TravisCI of CircleCI. Je hebt dan dus niet het platform met integrale CI features die direct samenwerken met je GitHub repository.

GitHub Flow en GitLab Flow

Alhoewel de onderliggende Git technologie en features nagenoeg hetzelfde zijn, is de aanbevolen workflow wel anders. En niet zo’n beetje ook.

GitHub legt de nadruk op snelheid, terwijl GitLab juist op betrouwbaarheid focust. Dat is het belangrijkste verschil in smaak in het algemeen tussen de twee cloud repositoryplatforms.

GitHub flow vs GitLab flow.
GitHub flow vs GitLab flow (Bron)

GitHub staat voor snel, feature-focused development met het mergen (opnemen) van nieuwe branches met de master branch. Zo’n workflow is ideaal voor kleinere agile teams en projecten.

De master branch is altijd klaar voor implementatie, waardoor je snel terug kan naar je stabiele uitgangssituatie als er iets misgaat. Binnen een paar seconden zit je weer in de vorige versie.

Binnen de GitLab workflow maak je meerdere stabiele branches binnen de master branch, dus meestal in ieder geval een production en een pre-production branch. Dit zorgt voor een testproces met meerdere stappen, waar dus een enkele review van de code bij een merge request niet genoeg is.

Voor kleinere teams betekent dit dat het langer duurt voordat een nieuwe feature live in productie is. Maar als je een speciaal QA team hebt, is het een goede manier om je R&D team aan features te laten werken, zonder dat ze zich druk hoeven te maken om elke letter code.

Er zijn mensen die op basis hiervan concluderen dat GitLab het Git platform met een focus op veiligheid is, maar GitHub ondersteunt dezelfde workflow. Bij hen is dat alleen niet de officiële aanbeveling.

Compleet platform of Marketplace

GitLab kiest de weg van een compleet platform in één pakket, in plaats van iedereen een keuze te geven om hun platform op te bouwen met allerlei apps.

Dat betekent overigens niet dat er geen integraties te vinden zijn. GitLab biedt integraties met Asana, Jira, Microsoft Teams, Slack, Gmail en nog meer dan 30 andere apps en platforms.

Maar ondanks deze opties, heb je wel aanzienlijk minder te kiezen dan bij GitHub. GitHub biedt momenteel namelijk 374 gratis apps aan via hun Marketplace, met daarbovenop nog eens een groot aantal betaalde keuzes.

GitHub marketplace.
GitHub marketplace

Maar daarbij moet je wel onthouden dat het via dergelijke externe integraties is dat GitHub enkele opties biedt die bij GitLab gewoon ingebouwd zitten.

Zo biedt GitLab bijvoorbeeld standaard functies zoals doorlopende integratie, tijdsregistratie en back-ups. Maar met GitHub heb je daar een app voor nodig, zoals de gratis CI app Jenkins.

GitHub Actions automatiseringen maken CI/CD mogelijk via externe tools, maar je hebt dan niet hetzelfde overzicht.

Opmerking: Alhoewel de GitHub app zelf gratis is, kunnen externe diensten alsnog geld kosten.

Self-hosted installatie voor privé server

GitLab begon ooit als self-hosted open source platform. Desalniettemin heb je ook de mogelijkheid om een privé versie van GitLab op je virtuele machines te hosten.

En dit kan je doen met het gratis GitLab pakket, terwijl dit bij GitHub alleen beschikbaar is met de betaalde GitHub Enterprise pakketten.

Open Source

GitLab biedt gratis features van het Enterprise pakket en tot wel 50.000 CI minuten voor organisaties of kleinere teams die aan open source software werken.

GitLab for Open Source
GitLab for Open Source

GitLab is zelf ook open source software en de self-hosted versie is dan ook gratis te gebruiken voor iedereen.

Dat wil nog niet zeggen dat GitHub per definitie een slechte keuze is voor open source code, aangezien het wel directe toegang biedt tot veel van de developers. GitHub moedigt die developers ook aan om elke vrijdag mee te werken aan open source projecten, waarbij regelmatig het aantal publieke resources uitgebreid wordt.

De developer teams van GitHub dragen ook bij aan open source project, met name aan Git LFS en andere GIT-gerelateerde projecten.

Betaalde pakketten en kosten: GitHub Enterprise of GitLab Ultimate

Alhoewel beide gratis pakketten een onbeperkt aantal publieke en private repository’s aanbieden, is er een duidelijk verschil in de prijskaartjes van de betaalde pakketten.

Het Premium pakket van GitLab begint bij $19 per gebruiker per maand. Hiermee krijgen managers toegang tot projectmanagement en controles voor integriteit van de code.

GitLab prijzen, table.
GitLab prijzen

Betaalde pakketten voor Github focussen ook op geavanceerde tools voor samenwerking (bij private repository’s), naast features voor beveiliging en compliance.

Maar er is een aanzienlijk verschil tussen de twee platforms qua prijs.

Het GitHub Team pakket begint bij $4 per gebruiker per maand.

GitHub prijzen, table.
GitHub prijzen

GitLab Ultimate kost je $99 per gebruiker per maand, tegenover slechts $21 per gebruiker per maand voor GitHub Enterprise.

GitLab zet hun gratis pakket neer als concurrent voor het Team pakket van GitHub, en het Premium pakket als de tegenhanger van het Enterprise pakket van GitHub.

Zowel qua beveiliging als compliance tools zul je het meest dure GitLab pakket moeten nemen om dezelfde features als GitHub te krijgen.

GitLab of GitHub: Wat is de beste optie?

Zoals bij de meeste dingen in het leven is er helaas geen “beste keus voor iedereen” als het gaat om GitLab of GitHub. Het hangt af van je team, grootte van de organisatie, doelen en precieze use case.

Qua standaard functionaliteit en self-hosting is GitLab de beste optie. Maar GitHub heeft dan weer een unieke positie als marktleider. Het biedt veel meer integraties en apps.

  • Voor self-hosted private repository’s is GitLab de beste keuze. Je kan meteen beginnen, zonder dat je een maandelijks abonnement hoeft te betalen.
  • Beide opties zijn ideaal voor open source projecten, aangezien GitLab gratis premium features aanbiedt, en GitHub weer eenvoudig toegang biedt tot een grotere groep actieve open source developers.
  • Voor commerciële projecten biedt GitHub een significant goedkoper Enterprise pakket.
  • Ben je van plan met DevOps bezig te gaan, dan is GitLab een logischere en meestal goedkopere optie. Je kan hierbij ook gratis beginnen zonder afhankelijk te zijn van betaalde diensten.

Het hangt er natuurlijk ook vanaf welke tools je teams nu al gebruiken en waar ze goed in zijn. Wanneer GitLab een bepaalde integratie met een tool die je veel gebruikt niet beschikbaar heeft, maar GitHub wel, dan is de keuze natuurlijk een stuk eenvoudiger.

En aangezien GitHub ruim 300 integraties meer biedt dan GitLab, is de kans vrij aanzienlijk.

Waarom is GitHub populairder dan GitLab?

Eén van de belangrijkste redenen dat GitHub populairder is omdat GitHub simpelweg eerder begonnen is. GitHub werd in 2008 gelanceerd, terwijl GitLab als open source project in 2011 begon.

Maar dankzij de ingebouwde features voor Continuous Integration en een gratis optie voor privé self-hosted server, haalt GitLab de achterstand snel in. Volgens een onderzoek heeft GitLab 4,6% marktaandeel ingelopen sinds 2018-2019, terwijl GitHub juist 0,4% verloor.

Maar dan nog gaf in het meest recente onderzoek van Stack Overflow onder developers 82,8% van de ondervraagden aan dat ze GitHub gebruiken, tegenover slechts 37% voor GitLab.

Gebruik van tools voor samenwerken aan code
Gebruik van tools voor samenwerken aan code (Bron)

Alhoewel GitHub nog altijd de standaardkeuze is voor nieuwe developers, is dat beeld wel aan het verschuiven nu GitLab zich als gespecialiseerd platform ontwikkeld met unieke features en voordelen.

Samenvatting

Als developer in 2024 kan je tools zoals Git of grote cloud repository’s zoals GitHub en GitLab niet negeren.

De grote meerderheid van de developers, teams en bedrijven gebruiken deze tools om ervoor te zorgen dat elke regel code goed onderzocht is voordat alles live gaat, en dat er geen bijdragen van medewerkers verdwijnen.

Alhoewel de verschillen tussen de tools op het eerste oog minimaal lijken, is dit het grootste verschil: GitLab biedt een volledig DevOps platform. GitHub daarentegen biedt brede uitbreidbaarheid via de app Marketplace.

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.