GitHub vs. Bitbucket vs. GitLab: een epische strijd om mindshare voor ontwikkelaars

Het is het soort meta-idee waardoor niet-gegradueerde filosofen zeggen: "Ho!" Software is tegenwoordig zo ingewikkeld dat we software moeten schrijven om ons te helpen de software die we moeten schrijven te begrijpen en te construeren. Code genereert code genereert meer code ...

De coderepository met de naam Git is ieders favoriete tool voor het beheren van software, maar zelfs deze nette open source software is niet genoeg. De meeste programmeurs en de teams waartoe ze behoren, zijn nu getrouwd met online versies van Git die veel extra lagen van analyse en presentatie toevoegen om het mogelijk te maken door het enorme moeras dat onze code is, te doorwaden. 

Er zijn nu drie grote kanshebbers voor de beste plek om uw reguliere expressies, anonieme functies en intense recursieve boomverloopflitsen van genialiteit op te bergen: GitHub, Bitbucket en GitLab. Ze concurreren allemaal om de beste plek voor jou om je bron op te slaan.

Is de een beter dan de ander? Is een van de beste plekken voor je team om geweldige snelheid te maken? Laten we ze tegen elkaar opnemen en kijken welke er heerst.

GitHub is de grootste

Misschien komt het doordat het de eerste grote website was die zich specialiseerde in het hosten van Git-repositories. Misschien is het vanwege zijn goede werken in de open source-gemeenschap. In ieder geval is GitHub leidend als je de statistiek van het pure gerapporteerde volume aan code gebruikt. GitHub claimt 28 miljoen gebruikers en 85 miljoen repositories. Bitbucket meldt zes miljoen gebruikers en GitLab is een mysterie dat niet op de vraag reageerde.

Sommigen denken dat dit ertoe doet. Open source-ontwikkelaars die graag tussen projecten schakelen, kunnen één login gebruiken en al hun werk linken. Iedereen kan populaire ontwikkelaars volgen op GitHub zoals kattenliefhebbers de makers van de beste kattenvideo's op YouTube volgen. De netwerkeffecten die het internet lijken te domineren, duwen GitHub ver naar de leiding.

Anderen zijn er niet zo zeker van. Ja, ze vinden het leuk om hun openbare code te koppelen, maar veel mensen willen het werk dat ze voor klanten doen niet koppelen. Dat moet apart en niet-openbaar zijn. In die context zijn de netwerkeffecten niet veel waard.

Bitbucket en GitLab zijn goedkoper

Alle drie de services bieden veel gratis opties, maar verdienen allemaal hun geld door ontwikkelaars, meestal professionals, te laten betalen voor het hosten van privéprojecten. GitHub begint bij $ 7 per maand per ontwikkelaar. Bitbucket begint bij $ 2 per maand en GitLab begint bij $ 4 per maand.

Maar deze cijfers zijn slechts ruwe richtlijnen, omdat de kans groot is dat u wilt upgraden. Een beter niveau bij Bitbucket kost $ 5 per maand. GitLab heeft een premium-versie die $ 19 per maand kost - en je moet jaarlijks betalen om die prijs te krijgen.

Er zijn vrijwel zeker verborgen kortingen voor bedrijven met grotere teams en deze maken het moeilijk om te vergelijken. Je zou kunnen denken dat Git-hosting een commodity is, maar deze bedrijven hebben manieren gevonden om zoveel extra functies toe te voegen dat je hoofd begint te tollen als je begint te vergelijken wat je krijgt voor je geld.

Bitbucket en GitLab staan ​​onbeperkte privérepository's toe

Wat je gratis krijgt, is totaal anders. Met zowel Bitbucket als GitLab kunt u uw eigen privérepository's gratis opslaan. Je begint pas te betalen als je team groeit en professioneler wordt. GitHub slaat je projecten alleen gratis op als je een student bent of als je de projecten openbaar maakt. Dat is geweldig voor open source, maar niet voor al uw privé-zijprojecten.

Deze gratis niveaus kunnen vrij genereus zijn. Met Bitbucket kunnen kleine teams van maximaal vijf medewerkers worden gebruikt. GitLab staat een onbeperkt aantal medewerkers toe.

Het is vermeldenswaard dat deze prijzen en niveaus gelden voor de in de cloud gehoste versie. Als u zelf wilt hosten, kan dit goedkoper zijn. Er zijn ook academische plannen en open source communityversies die erg genereus zijn.

Bitbucket en GitLab zijn continu geïntegreerd

Deze bedrijven breiden uit door de code niet alleen op te slaan, maar ook door deze te bouwen en te implementeren. GitLab is in op Jenkins gebaseerde continue integratie gerold en vervolgens toegevoegd in implementatieondersteuning en monitoring in een deugdzame lus. U kunt uw code vastleggen, implementeren, bewaken en dan beginnen met het plannen van de volgende reeks wijzigingen zonder GitLab te verlaten.

Evenzo biedt Bitbucket Pipelines, een vergelijkbare tool voor het bouwen en implementeren van vrijwel hetzelfde met een paar klikken. Het biedt misschien niet zoveel monitoring, maar het is nauw geïntegreerd met de cloud van Amazon.

Met GitHub kunt u uw eigen continue integratieserver gebruiken

Maken GitHub-gebruikers ooit hun code? Natuurlijk. Velen gebruiken tools van derden, zoals CircleCI of Travis CI, die worden geactiveerd door commits aan GitHub. Sommige hosten zelfs hun eigen versie van Jenkins, die beschikbaar is via een open source-repository die wordt gehost op GitHub.

De tools van derden vallen natuurlijk niet onder dezelfde zakelijke paraplu, maar ze bereiken vrijwel hetzelfde. En dan kan de scheiding soms een voordeel zijn als je de dingen net even anders wilt doen.

Het is vermeldenswaard dat niets u ervan weerhoudt om uw eigen continue integratieoplossing uit te rollen met Bitbucket of GitLab. Ze checken gewoon de code zoals elke andere Git-client.

Met GitLab kun je online ontwikkelen

Wat begon als een hulpmiddel om je door statische code te laten bladeren, verandert langzaam in een volwaardig platform voor ontwikkeling. De interface van GitLab wordt steeds complexer en begint te benaderen wat het bedrijf een geïntegreerde ontwikkelomgeving of IDE noemt. Het is niet zo geavanceerd als sommige van de desktop-gecentreerde monolieten zoals Eclipse of Xcode die geïntegreerde foutopsporing bieden, maar dat betekent niet dat je het niet kunt gebruiken om steeds geavanceerdere ontwikkeling te doen met schone commits met meerdere bestanden.

Zowel GitHub als Bitbucket hebben eenvoudigere versies waarmee u uw bestanden online kunt bewerken en vervolgens het resultaat kunt vastleggen. Ze zijn beter voor snelle retouches en reparaties.

Bitbucket heeft codebewuste zoekopdrachten

Het lijkt misschien een kleinigheid, maar het zoekalgoritme van Bitbucket begrijpt veel van de belangrijkste talen, waardoor het mogelijk is om de resultaten te rangschikken. De definitie van een functie of een variabele verschijnt bovenaan en het gebruik volgt. Als u probeert te achterhalen wat een zoekwoord doet, hoeft u niet door pagina's met resultaten te bladeren om het antwoord te vinden.

Bitbucket is afkomstig van hetzelfde bedrijf dat Jira maakt

Jira is een van de toonaangevende tools voor het organiseren van het ontwikkelingsproces door tickets bij te houden en teams op de hoogte te houden van wie wat doet naar welke repository en wanneer ze klaar zijn. Jira kan met iedereen worden geïntegreerd, maar is eigendom van Atlassian, wat ervoor zorgt dat Jira goed werkt met Bitbucket.

Zowel GitHub als GitLab hebben hun eigen tools voor het bijhouden van problemen die in de workflow zijn ingebouwd en die vrijwel hetzelfde doen. Voor meer toeters en bellen kunnen GitHub- en GitLab-gebruikers terecht bij Jira of een aantal vergelijkbare tools.

GitLab is open source

Als je een bepaald onderdeel van GitLab niet leuk vindt, kun je gewoon de Ruby-broncode downloaden, aanpassen en zelf hosten. Het is open source en wacht op jou om het te splitsen. GitHub biedt enkele nuttige puzzelstukjes in zijn repositories, en Atlassian biedt genereuze ondersteuning voor alle open source-projecten met goedgekeurde licenties. Maar GitLab geeft je de ruwe code voor het hele platform in een community-editie.

Er zijn ook verschillende andere open source Git-serverprojecten, zoals Gitblit, geschreven in Java, Allura, geschreven in Python, en Gogs, geschreven in Go. Maar je zult ze allemaal moeten hosten.

GitLab is nauw geïntegreerd met Google Cloud

U hoeft Google Cloud niet te gebruiken met GitLab. GitLab maakt het gewoon een beetje eenvoudiger door te integreren met de Google Kubernetes Engine. Met slechts een paar klikken wordt uw code verplaatst naar een actief containercluster. Zelfs als u Google Kubernetes Engine niet gebruikt, werkt GitHub nog steeds graag met Kubernetes. Als u implementeert in een Kubernetes-cluster, kunt u alles - CI-omgevingen, implementaties, pods en Kubernetes-statistieken - rechtstreeks vanuit GitLab volgen.

Bitbucket kan worden geïntegreerd met AWS

Nogmaals, u kunt uw code altijd implementeren waar u maar wilt, maar een Bitbucket-add-on in de Atlassian Marketplace zal uw code naar een Amazon S3-bucket pushen en AWS CodeDeploy gebruiken om deze op EC2 uit te voeren. Het enige dat u hoeft te doen, is het een keer configureren en het is klaar voor gebruik.

Bitbucket heeft veel extensies

De AWS CodeDeploy-app is niet de enige optie op de Atlassian-markt. Op het moment van schrijven zijn er 304 apps geschreven door derden om Bitbucket uit te breiden. Sommige voegen functies toe zoals meldingen of grafieken van commits en andere helpen bij het beheer van projecten door de workflow te volgen. Als je je bazig voelt, kun je de invoegtoepassing Commit Policy installeren die de vastleggingsberichten nauwkeurig onderzoekt om er zeker van te zijn dat ze probleemnummers en andere details vermelden. Als u niet ziet wat u zoekt in de Marktplaats, kunt u uw eigen schrijven.

Git (plain) is gratis en privé

Sommigen zullen geen van deze luxe opties willen gebruiken. Git is een vrij eenvoudig opdrachtregelprogramma met veel opdrachten om in de repositories zelf te graven. U kunt de code zelf pushen, ophalen en volgen met behulp van de opdrachtregel. Als je goed bent in het onthouden van opdrachtregelinstructies en je wilt geen van de leuke, webgebaseerde weergaven van code, diffs en meer, dan zal de gewone oude Git je goed van pas komen.

Gebruik twee of alle drie!

Het lijkt misschien overdreven, maar er is geen reden waarom u er maar één moet kiezen. Git maakt het eenvoudig om commits upstream te pushen, en er is geen reden waarom je niet meerdere upstreams kunt toevoegen. Als u functies van twee of alle drie deze platforms nodig heeft, kunt u uw opslagplaatsen configureren om naar alle platforms te pushen. Als je geluk hebt, kun je binnen de gratis niveaus blijven. En als je dat niet bent, zijn ze niet te duur.