GitLab vs. GitHub: What’s the right Hosting Platform for your Workflow?
[Edited and updated on May, 7, 2020]
Choosing tools when you’re working on your own is fairly simple, but if you’re collaborating with other team members or managing multiple development projects, it’s crucial to find tools that everyone can easily work with. In a group setting, a Version Control System, or VCS, isn’t a luxury, it’s a necessity. Knowing who is deploying code, exactly what changes they’re making - and having the ability to prevent a bug from being deployed to a live product can make or break a project. Git is by far the most popular Version Control System for coding - and in the post below we share Git basics, and take a close look and two of the most popular hosting options on the market today - GitLab and GitHub.
When it comes to Git hosting you’ve got choices. GitHub and Bitbucket are two popular solutions, but GitLab is another alternative worth exploring. Whatever you decide, rest assured that it’s easy to connect any Git repository to DeployBot once you’ve made your choice.
If you've read this far, Version Control is obviously an issue for you. However, if you need to update more than one server, automation makes sense. This is exactly what we offer with DeployBot. DeployBot integrates perfectly with the most popular tech. You can find an ever growing collection of beginners’ guides on our website.
What is Git?
Git is free and open source software. It’s a Version Control System (VCS) developed in 2005 by Linus Torvalds, creator of Linux. A VCS is vital to development projects requiring more than one developer as it simplifies keeping track of changes to code.
Designed to manage a set of files as they change over time, Git uses a data structure (called a repository) to store information. Unlike other version control systems which store the full version history of the code in one place, Git is a distributed VCS (DVCS). In this case, each developer’s copy of the code functions as a unique repository that contains the complete history of all changes.
What is GitLab?
GitLab is a web-based Git repository manager designed for team collaboration. The platform includes a Wiki and an issue tracker amongst other features. GitLab features shared runners so you can use the built-in Continuous Integration (CI) and Continuous Delivery (CD). Internal projects encourage inner-sourcing of internal repositories, increasing cooperation among team members. Commit graph and reporting tools provide additional information about the work of collaborators.
Milestones in GitLab offer a method of tracking issues and merge requests created to achieve a high-level goal. You can create and manage milestones across projects. These can be imported from Bitbucket, FogBugz, Google Code, Gitea, GitHub and any other git URL. On the other hand, if you wish to export your project to other platforms, GitLab offers complete access to your data.
When dealing with multiple issues, you can promptly set their status, assignee or milestone at the same time. Plus, you can define filters for any property to quickly find what you need.You can also move issues between projects while retaining all links, the history, and comments. If you’re creating new branches from specific issues, you’ll be able to retain the issue number and title, thus making your workflow more efficient (and making it easier to work with other collaborators).
GitLab streamlines community contributions by allowing patches from upstream maintainers in a branch. That reduces the back and forth that would happen otherwise.
You can either use the free or paid plans on GitLab.com, SaaS hosted by GitLab, or host your own instance. The free edition comes with unlimited private and public projects, unlimited contributors, plus 2,000 CI pipeline minutes monthly.
The Bronze plan (currently $4 per user monthly) is designed for personal projects and small teams. It also offers 2,000 CI pipeline minutes per group per month and some additional features on top, like multiple approvers in code review, merge approvals, and next business day support.
The Silver plan at $19 per user per month offers additional features not found in the Bronze plan (e.g. priority support, multi-project pipeline graphs, deploy boards, etc.) and increases the number of CI pipeline minutes per group per months to 10,000.
The Gold plan ($99 per user monthly) again adds some extras like roadmaps, portfolio management, application performance alerts, free guest users, container scanning, Kubernetes cluster monitoring, etc. The number of CI pipeline minutes per month is 50,000.
What is GitHub?
Like GitLab, GitHub is a web-based Git repository manager that helps facilitate team collaboration. As of 2018, GitHub is owned by Microsoft. Some time ago we published a blog post on GitHub vs Bitbucket, but here are some of the main features.
GitHub bills itself as “the world’s leading software development platform.” With about 37 million users and more than 100 million repositories (about 27 million public repositories), that popularity cannot be ignored. Their huge community is highly active and very supportive.
On the platform side, you can assign tasks, conduct reviews and discuss ideas in GitHub via pull requests. As changes happen to your repository, you can use diffs to compare different versions of source code.
As your team grows, it becomes even more important to exercise control over who has what level of access to your code. With GitHub, branch permissions limit who can push to a specific branch. Repositories can be set to require pull request reviews and status checks, further helping to decrease errors.
GitHub is designed for use by developer teams of all sizes. Not surprisingly, there’s a number of integrated project management features like assignees, cards, milestones, notes and tasks. In addition, GitHub offers a great desktop app for easily managing your repos on your local device, and pushing changes without needing to fire up your browser. If that’s not enough, you can choose from any number of 3rd party add-ons if you’re looking for even greater control and insight into existing projects.
Like in GitLab, there are free and paid plans on GitHub. GitHub’s free plan offers unlimited users, unlimited public and private repositories, and up to 500 MB of storage. Starting in May, 2020, private repositories are no longer limited to 3 collaborators – GitHub is now free for teams. Issue and bug trackers as well as project management tools are also available. Solo developers and smaller teams, especially those just getting started, will find this more than adequate.
Teams who need advanced features (like code owners), enterprise features (like SAML), or personalized support can upgrade to one of the paid plans:
- GitHub Team (currently $4 per user/month) offers unlimited private and public repositories as well as unlimited collaborators and 2 GB of storage. In addition to the features of the free plan, you get GitHub pages, Wikis, protected branches, and repository inside graphs (pulse, contributors, traffic, commits, code frequency, network, and forks).
- GitHub Enterprise ($21 per user/month) includes everything from GitHub Team and 50 GB of storage. On top of that, it offers SAML/single sign-on, advanced collaboration and management tools for teams, e.g. team access controls, user management and billing, issues and bug tracking, GitHub pages, Wikis, protected branches, code owners, and repository insights graphs.
Larger teams may contact the sales department to get an offer for GitHub One. It includes the same features as the GitHub Enterprise plan, actionable metrics, continuous learning and 24/7 support.
So what should you choose? GitLab or GitHub?
Well, the answer is: that depends. Both platforms offer issues and bug tracking capabilities, built-in Continuous Integration, Continuous Deployment, and Continuous Delivery toolsets, and an active support community. Solo developers or smaller teams who are looking for a free code-hosting platform can try out both and decide which one suits them best. The same goes for enterprise-level features: larger teams will find enterprise settings and plans on GitLab as well as GitHub.
Both platforms make it easy to automate your workflows: you can build, test, and deploy your code directly on the platform. Of course, you can also connect DeployBot to your favourite Git hosting platform. DeployBot integrates with GitLab and GitHub as well as other popular platforms like Laravel, Digital Ocean, Ruby on Rails, Docker, Craft CMS, Ghost CMS, Google Web Starter Kit, Grunt or Gulp, Slack, Python or Heroku for which we have an ever growing collection of beginners’ guides.