GitHub is Git based repository hosting platform which was originally launched in 2008 by Tom Preston-Werner, Chris Wanstrath, and PJ Hyatt. This is the largest repository host with more than 38+ million projects.
Bitbucket was also launched in 2008 by an Australian startup, originally only supporting Mercurial projects. In 2010 Bitbucket was acquired by Atlassian and from 2011 it also started to support Git hosting, which is now its main focus. It integrates smoothly with other services from Atlassian and their main market is large enterprises.
GitLab started as a project by Dmitriy Zaporozhets and Valery Sizov providing an alternative to the available repository management solutions in 2011. In 2012 the site GitLab.com was launched, but the company was only incorporated in 2014.
Each of the four platforms is one big universe on its own when it comes down to features and capabilities. Making a detailed feature comparison is beyond the scope of this post. But if we are only looking at basic features they show a lot of similarities:
Two factor authentications
Advanced permission management
Hosted static web pages
Feature rich API
Fork / Clone Repositories
3rd party integrations
Which one is open source?
From the four repository management services, only GitLab has an open source version. The source code of GitLab Community Edition is available on their website, the Enterprise edition is proprietary.
GitHub, who is famous for open source friendliness and hosts the largest amount (19.4M+) of open source projects is not open source.
Bitbucket is not open source but upon buying the self-hosted version the full source code is provided with product customization options.
Coding is also entirely proprietary and the source code is not available in any form.
What is the best place to discover public projects and connect with other developers?
GitHub, GitLab, Bitbucket, and Coding both have public repository discovery functions and apart from GitLab each offers the ability to easily follow other users. Coding even lets you add customized tags to personal profiles, which helps to find and to connect with other users with a particular interest.
Even though GitHub is not open source, it is still the hotbed of open source collaboration. It has by far the largest amount of public and open source projects and also hosts many of the most significant ones.(Docker, npm) With the early adoption of social features and with the free hosting of public projects, it is clearly a social hub for professional developers and everyone else who is interested in software development. What’s more, an exciting active GitHub profile could help you landing a great job. In more and more cases recruiters favor candidates with an active GitHub profile.
When you are trying to decide which system to use, the ability to import and use your previous projects is critical. Bitbucket is in this sense stands out from the other three because this is the only one that supports Mercurial repositories.
Coding, GitHub, and Bitbucket supports importing repos based on multiple different VCSs, GitLab on the other hand only supports Git. Git is the most popular VCS, but moving to GitLab could be complicated if you are using Mercurial or SVN repositories at the moment. GitLab’s repository importing feature explicitly geared to help users migrate from other more popular platforms.
GitHub supports: - The import of Git, SVN, HG, TFS.
GitLab supports: -The import of Git. -Easy import from other services GitHub, Bitbucket, Google Code, Fogbugz.
Coding supports: - The import of Git, SVN, HG.
Bitbucket supports: - The import of Git, CodePlex, Google Code, HG, SourceForge, SVN.
All the 4 providers offer a free plan, but when we are looking at the details they have some significant differences.