When it comes to version control systems (VCS) at Sparkbox, Git reigns supreme. Version control helps us iterate on our builds and engagements confidently, quickly resolve our missteps, and work with our clients in a way in which all parties are happy with the results.
Version control in isolation is hardly effective, however, which is why we utilize full-featured online storage tools, such as GitHub, GitLab, and Bitbucket. These services often include much more than just a place to save projects: code difference and issue-logging tools, code coverage and CI integrations, Slack notifications, and even project management tools. The numerous choices and services available really come down to a choice between “the big three” VCS storage options.
So, in the world of GitHub vs. GitLab vs. Bitbucket, which service is best for your team? Let’s take a look.
By now you’ve probably heard about Microsoft’s acquisition of GitHub. GitHub has long been the “popular kid,” the frontrunner, the breadwinner, and I truly believe it will keep being that way for the foreseeable future. Keep an eye on those GitHub competitors—market parity is quickly approaching.
What Does GitHub Do Best?
GitHub’s overwhelming popularity is not to be taken for granted. GitHub entered the market early and soon became the de facto option for cloud storage. Many developers are experienced contributing to projects via GitHub; it is not a service that requires a ton of onboarding for many mid-to-senior level devs.
Open-source projects thrive on GitHub, with efforts like DigitalOcean’s Hacktoberfest constantly improving discoverability. Many tools and resources find their way to a community via GitHub. This is not to say that enterprise projects aren’t welcome, as GitHub Enterprise provides solutions for even the largest of teams. Either way, the pull request process is enjoyable and pain-free, with numerous GUI-only options for those less comfortable with command line git.
How Could GitHub Improve?
Being the first big VCS storage service does have its drawbacks. New GitHub features require iteration and testing before making it to production, meaning release timelines are often “laggy” in comparison to the competition. For example, GitHub Projects, GitHub’s built-in project board, is still figuring itself out, and oftentimes our team will choose external options, such as Jira or ZenHub. Documentation is sometimes lacking, largely relying on a series of blog posts about each topic. Additionally, GitHub requires the integration and maintenance of numerous external tools like CircleCI and Heroku for an optimal development experience.
GitHub Is a Good Option for Teams That…
If your team works on projects that thrive via the open source community or are looking for discoverability, GitHub is a good fit. GitHub is great for teams that have numerous repositories of open-source work, or have the funds to purchase private repos. It is also great for agency teams like Sparkbox—we use GitHub for most of our mid-range engagements and internal projects. And, of course, it’s great for teams that just like Octocat, GitHub’s adorable mascot.
Spend a few hours navigating GitLab.com and it is easy to see why GitHub isn’t the only option for storing VCS. GitLab’s easy-to-use, full-featured service proves itself worthy of being competition. Plus, GitLab itself is totally open source—it costs you nothing to spin up a local version whenever you like.
What Does GitLab Do Best?
GitLab’s UI is beautiful and the navigation is fairly intuitive. Merge request templates are a breeze to set up compared to other services, and you can have multiple types of templates in a single repo. In fact, numerous tools are built directly into GitLab, including project boards and an incredibly integrated CI. Private repositories are completely free, making GitLab the service of choice for freelancers or low-budget teams that can’t afford to share client data with the entire web.
As a company, GitLab seems to truly value its employees and users. Transparency is key, including open salary sharing, publicly known benefits, and a fully documented interview process. Plus, the company is 100 percent remote.
GitLab is constantly improving, with regular releases every month. If that is not enough to convince you to use it, as I said above, GitLab is entirely open source. If there is something you want, submit a merge request and GitLab might just include it in its next release.
How Could GitLab Improve?
Not everything about GitLab is perfect. Discoverability is lacking, as GitLab is not the service of choice for most high-profile projects and thus has less draw for developers. There’s also a credibility problem, as, in comparison to the other two tools explored in this post, GitLab is fairly new.
“It’s like saying ‘Kleenex’ when you know there are other brands of tissues out there. It’s the Puffs Plus of the repo world.”
– Patrick Fulton, Sparkbox Developer
Despite having a really lovely UI, it took me a few days (to my embarrassment) to find the “diffs” view on a merge request. Besides these few small points, there was not much else the team could think of to say negatively about GitLab. We’re big fans.
GitLab Is a Good Option for Teams That…
Well, are not exactly a team. GitLab is without a doubt the best resource for your freelance or personal (secret) project hub. It’s also a great choice for teams that want to control their own instance on private servers, such as university or other government institutions. My own alma mater, Miami University, does exactly that.
The third competitor, Bitbucket, is truly the powerhouse of the enterprise world. Atlassian is known for creating tons of useful software for development teams—everything from project management tools, like Trello, to Stride, a group messaging service. We know Atlassian can make a killer design system, but how does Bitbucket rank as a VCS?
What Does Bitbucket Do Best?
Integration, by far, is the highlight of Bitbucket. The full suite of Atlassian apps, like Bitbucket, were built to be a cohesive experience. Jira or Trello offer excellent project board experiences, Bamboo is a continuous integration solution, and Confluence keeps all your documentation neat and tidy. If a desktop interface for interacting with Git is your jam, Sourcetree is worth checking out. If you’re looking for something different, the Atlassian marketplace holds a plethora of third-party tools and integrations.
While the GitHub landing page offers links to all the repositories in which you have participated, Bitbucket’s homepage view is a pull request activity hub. Bitbucket shows all the PRs currently assigned to you and all of the ones you’ve opened, along with some recently closed/merged PRs across your projects. At the same time, the hub view prompts you to open a pull request for any newly pushed branches.
Bitbucket also offers free services for teams of five or less, including private repositories.
How Could Bitbucket Improve?
The Bitbucket UI isn’t always intuitive. The Atlassian toolbar mostly consists of icons, many of which might not mean much to Git beginners. It’s easy to get lost and not know which repository you are in. There isn’t a great location to store release notes, as documentation changes are usually kept on Confluence.
Bitbucket will keep a copy of every commit you’ve amended, which is great for teams who want to monitor every change. At Sparkbox, we tend to amend our commits for a curated commit history, so this experience can get messy pretty quickly.
Bitbucket Is a Good Option for Teams That…
Bitbucket is absolutely ideal if your team runs on Atlassian products. Enterprise and single-project teams thrive in this secluded, high-feature ecosystem. Even if your team doesn’t use all the Atlassian tools, each tool is designed to work well on an individual basis as well.
Sparkbox currently uses Bitbucket with one of our large enterprise clients, and the experience is top notch.
The Best Choice Is the Best Fit
Choosing a favorite Git storage solution is a bit like choosing a favorite child—we just won’t do it. Whether GitHub, GitLab, Bitbucket, or beyond, the “best” choice is the one that is the best fit for your team and project structure. Each service provides a rich, highly positive, polished experience, and you really can’t go wrong.