Managing your repositories is more important than ever before. And there are also more choices than ever before. Collaborative software development has seen the rise of three very popular and widely adopted tools for managing repositories. These tools allow for developers to collaboratively edit files and create and maintain various versions of a software project in one place. Modern software development has become increasingly reliant on these tools, and thus they have become essential for almost every software development teams workflow.
Often when selecting these tools, developers tend to either use what they know or adopt the tools that their team is using into their workflow. That might be effective most of the time, but what about when it comes to selecting your tools?
In this blog post, we’ll go over the three most popular repository management choices, Github, Bitbucket, and Gitlab, and discuss some of the pros and cons of each as they relate to each other. Hopefully to give you some insight into what tool might be best for your upcoming project.
We’ll start out by going over a brief overview of each of these three services and then the advantages of each platform, discussing what they do right.
GitHub Inc. is a web-based hosting service for version control using Git. Founded in 2008, Github is widely used as version control for open source projects. It’s the most popular choice for developers, with over 28 million users on the platform and over 57 million code repositories. When people publish open source code, they are most likely making that code available via Github. If you are familiar with Git, you are in most cases also going to be familiar with Github. It has taken the space by storm and recently was acquired by Microsoft. This acquisition was met with some controversy, and some users expressing a desire to change platforms, not respecting Microsoft’s history with open source. In summation, Github could be assumed to be the dominant incumbent in this space. When it comes to hosting code, they are most widely known and host the most.
Github has a great UI, which makes it easy to navigate the site and use the somewhat complicated tools without much hand-wringing. This UI also makes it less cumbersome to learn for new users, making it easy to onboard your team if you choose Github.
Ease of use is something that Github gets right. It works seamlessly with Git version control and can take some of the headaches out of managing repos and figure out what is going on behind the scenes with branches and pull requests.
Github has the advantage of already having a large user base. This means that if you start a project there, you don’t need to invite developers. Almost all of the time, they will already have an account!
The collaboration features work seamlessly on Github, which makes it easy to not only work on complex projects with more than one person but also to work on them remotely. As remote work grows in popularity, this kind of functionality is only going to become more desirable.
Github’s traditional commitment to open source projects makes it the perfect place to find great open source projects, and also host your own! This commitment and history have made it the place to work with and on open source.
Github being owned by Microsoft also means that this service will most likely grow and continue to thrive, making it a safe choice for the future.
Bitbucket is a web-based version control code repository hosting service owned by Atlassian. It works with either Mercurial or Git revision control systems. Bitbucket has been a popular choice for developers alongside the other tools in this space for some time, also having launched in 2008.
Bitbucket offers unlimited free private repos which will come in handy to teams working on more than just open source projects. Being able to conveniently host code that shouldn’t be made available publically for free is a significant advantage that Bitbucket offers via its free tier.
Superior JIRA integration and seamless integration with other tools from Atlassian make Bitbucket an obvious choice for teams who have adopted these software tools into their workflow already.
Offering more than just the use of Git, Bitbucket also might appeal to teams who have traditionally used Mercurial in their development flows. Although becoming less popular, Bitbucket would allow organisations to transition by allowing the use of both more easily.
Founded in 2011, Gitlab is the newest player of the big three. Like the others it’s a web-based git repository manager, but with a twist. Gitlab was created using an open-source license, developed by GitLab Inc. With some big clients already under its belt like NASA, SpaceX, and IBM. Gitlab appears here to stay, and they might also be in a position to start chipping away at the client bases of the other services as well.
Gitlab offers a self-hosted version. Both community and enterprise. Thus offering organisations the ability to manage their repos on premise with a modern tool similar to Github and Bitbucket.
Gitlab offers a very similar UI to Github, which makes the tool not only easy to use but also familiar to those who might be looking to make a switch from one tool to the other.
Gitlab offers a superior CI/CD experience that is integrated into its core services, making this an obvious choice for those looking at CI/CD as core features.
Now we’ll cover some of the drawbacks of each service and try to outline what caveats they each come with.
No free private repos make it expensive for smaller teams and developers who might need to use such a service. If you’re a small team working on anything but open source, Github might not be the best tool for you.
File size restrictions might also affect what files you can upload to the service (up to 100mb) and how large your code repos can get (up to 1Gb). If you work on large projects, this could be a deal breaker.
Microsoft now owns Github. This was also a pro because the support they receive might help them grow, but it could also mean a deviation from what made them so great in the past. Depending on your perspective this could be a reason to give them a pass.
Bitbucket does not have the same level of community that Github does, making this a more unfortunate choice when it comes to open source and community involvement. If you’re looking to host an open source project, Bitbucket might not be the best choice.
Bitbucket tends to have a confusing UI, which can make it difficult to find common features, manage PRs, or even export your code. If you or you’re team are new to git, Bitbucket might add unnecessary complexity to your project.
Bitbucket is owned and managed by a large software company, which means that the direction and updates for this project are going to be somewhat slow and in line with other objectives.
Gitlab has some issues with slow UI performance. There are also some issues with regards to the process of installation for the self-hosted version.
Which should I choose?
You should take into account the features and priorities your team has and needs with regards to your development projects. If you’re working on open source projects, your best choice is most likely going to be Github, if you need private repos, Bitbucket is a great option, and if you need on-premise or self-hosted solutions, Gitlab is the most viable option in this case.
Just choose which tool best represents your needs. And if all else fails, go with what you know.
We can’t tell you which tool is the best, but we have hopefully given you a head start with regards to choosing based on the pros and cons of each tool. What we can say is that each of these three tools performs very close to each other in most of the capacities of a code repository hosting tool, so there is no clear and obvious best choice. Just different strengths and advantages are inherent to each based on their history and how they have been used in the past.
No matter what kind of project you are working on, one of these tools is bound to be the right tool for you!