In this age of open source and collaborative software development within large teams, certain tools stand out remarkably among others in enabling developers build excellent software.
Version Control Hosting Services have undeniably been one of such tools. GitHub and GitLab are two popularly recognized platforms of this kind which enable developers take full advantage of the distributed version control and source code management functionality that comes with using Git along with some features that are unique to each platform. Should you use GitHub or GitLab? Lets find out!
GitHub is a git-based repository management platform which was launched in 2008 and was founded by Tom Preston-Werner, Chris Wanstrath, and PJ Hyett. As at 2017, GitHub reported having 24 million total users, 1.5 million total organizations and 67 million total repositories.
In the month of June 2018, It was acquired by Microsoft for a whooping $7.5 billion. This led to quite some ruckus within the developer community mostly stemming from skepticism towards the ability of Microsoft to uphold GitHub’s “developer-first” values.
All projects hosted on GitHub are usually publicly available and accessible by the public except a user pays to own private repositories which go for $7 per month for developers and $9 per month for teams.
GitLab on the other hand is a web-based git-repository manager with wiki, issue-tracking and CI/CD pipeline features, using an open-source license, developed by GitLab Inc. This in some respect says that feature-wise, GitLab is GitHub and more . GitLab is being used by enterprises such as IBM, Sony and NASA.
PS: On acquisition of GitHub by Microsoft, a considerably significant number of developers moved their projects from GitHub to GitLab.
GitLab offers free private repositories for open source projects. However, for more functionalities, the pricing ranges from $4-$99.
Comparing both platforms feels somewhat like comparing twins as they possess several similarities. Overall GitLab has way more functionalities than GitHub. It goes beyond code management, to deployment and monitoring. This is what they consider to be “Complete Dev-Ops” . Thus targeting the entire software development, deployment and Dev-Ops market.
It’d be a narrow comparison to examine both platforms in the context of repository hosting and management which is mostly what they have in common, hence we’d take a more elaborate approach.
GitHub and GitLab can be found to be similar in the following aspects:
- Pull request
- 3rd party integrations
- Fork/clone repositories
- Code review
- Code snippets
- Issue tracking
- Markdown support
Let us examine some key ways in which both platforms vary and how this could affect your choice of which fits your project’s needs.
GitHub allows you to grant access to various users. However, there is a limit to how much you can control what level of access a user is allowed to have once added as a collaborator.
GitLab on the other hand introduces role-based contributors which allows you set and modify access levels and permissions according to the roles assigned to each user. Thus giving repository owners more control.
This swings mostly in favor of GitHub as GitHub is immensely popular within the developer community and is persistently growing through its community.
GitLab has also done considerably well in connecting open source contributors and hosting community events as a way to grow their community.
Moreover, if what you need is a pool of developers like you, GitHub is your best bet.
Built-in Continuous Integration(CI)/Continuous Delivery(CD) & More
“CI is the process of automating the build and testing of code every time a team member commits changes to version control”. It saves time and protects the application or software being developed from being broken by a pull request .
CD on the other hand “ is a Dev-Ops software development practice where code changes are automatically built, tested, and prepared for a release to production”. It is indeed a time saver as well.
Herein lies a major difference between both platforms. GitLab provides their own CI service for free without the use of external services like Travis CI, Codeship, Circle CI etc. It also offers an operations dashboard that lets you easily monitor project dependencies and Dev-Ops.
“But, really, every project should be running some kind of CI. So, why don’t we just detect when you’ve pushed up a project; we’ll just build it, and we’ll go and test it, because we know how to do testing.”
– Mark Pundsack, source: gitlab.com
With GitHub on the other hand, there is no built-in provision for this feature. Hence, to achieve the same thing, one would need external CI services like Travis CI, Codeship, Circle CI etc.
3rd Party Integrations
Often times, in order to enhance your development workflow and increase productivity, you might need to integrate other applications with your Version Control System(VCS). Both GitHub and GitLab allow access to a wide range of 3rd-party integrations for various purposes.
Details of what services could be integrated can easily be found via their respective documentation.
GitHub has a marketplace that is dedicated to providing you with selected tools and applications.
Import and Export
This is a feature that most people will easily overlook. However, the ease of moving a repository into a platform and moving a repository away from it does count for something.
GitLab offers a on how to import your data from other platforms to GitLab(GitHub inclusive).
On the other hand, GitHub doesn’t pay as much attention to this detail as GitLab. However, it does have an importer that permits importing repositories from various Version Control Systems.
For exporting repositories, GitLab provides a very supportive architecture that allows you export wikis, code repositories, configurations, merge requests, comments, labels etc.
GitHub however isn’t exactly supportive of your leaving their platform, hence is quite restrictive with what can be exported in existing repositories.
On the issue of pricing, GitHub is obviously the more expensive choice. Although its is arguably worth it.
GitLab is a cheaper option if you are a developer or development team on a low budget. They also throw in lots of amazing perks including private repositories without you incurring any expenses yet.
It is evident that GitHub has the widest adoption within the developer community and is the go-to if this is a priority for you and your project.
GitLab is however a cheaper platform to work with while offering extra functionality beyond development to assist with deployment and Dev-Ops.
Both platforms have very striking similarities and are intrinsically good for what they do. Hence the choice of which to go with is strictly based on a developer’s or development team’s unique circumstances and goals.
Find more information in the topic in the following articles: