On-Premise Source Code Management - 7 Git Hosting Platforms Compared
Today, every company is a software company. In any industry, code has become one of the most business-critical assets. As a result, storing, securing and collaborating around code has become an important challenge for enterprises large and small.
Choosing the right source code management solution is not an easy task. Even more so when you think about hosting your code in-house, behind your own firewall. This post walks you through this decision - starting with some general questions.
1. Is On-Premise Hosting the Right Choice for You?
One of the first questions you have to answer yourself is this: do you have the resources and expertise to professionally manage on-premise hosting of your code?
Any IT department must fulfill strict security policies. If the policies in your organization require to keep your code in-house, you of course have to deal with hosting your code behind your own firewall.
Self-hosting your code, however, is not a decision you should rush. There are quite a few things to keep in mind.
Let's reconsider security: in an on-premise scenario, your IT department is responsible for a establishing a secure environment and for constantly installing relevant updates. Keeping servers secure and properly maintained is nothing to take ligthly. Chances are that a professional code hosting service's staff might have more experience in these topics, thereby providing a safer environment - even if this means your code is stored in the cloud.
Availability / Backups
Related to the above topic are things like availability and backups. Today, code is critical for many areas within a company. That's why its permanent availability is often crucial. You must ensure that your servers have little to no downtimes.
Also keep in mind that losing code can be a life-threatening event for many enterprises. You need to provide an absolutely fail-safe and complete backup strategy to make data loss impossible.
Also think about other systems that need to interact with your code repositories. Things like continuous integration servers or issue tracking systems can be other crucial parts of your software cycle.
Make sure that they can be integrated with your code hosting platform - be it behind the firewall or in the cloud.
Depending on your requirements, your team size, and the number of repositories, different solutions come at wildly different prices. This is true for both self-hosted installations and online services.
Two things, however, are certain:
- In addition to the license fees for your code hosting software, you'll have to keep in mind that you need people and hardware to manage your installation and servers. Don't forget these costs when comparing solutions.
- One way to significantly cut down on costs might be to go with an Open Source installation (see below). However, this comes with all the challenges that such a model brings with it (considering support, security updates, etc.).
In the end, the hard part about hosting code on your own servers is not the management of the Git repositories itself. It’s the management and maintenance of the servers. You need to be sure that your own IT department can handle core topics like security and maintenance flawlessly. If you have both the resources and the expertise, hosting code on your own servers is a valid option.
2. Commercial or OpenSource?
As of today, almost all source code hosting options are commercial systems. A main argument to actually pay a sometimes very steep price is the professional support that it includes. In case of problems / questions and for updates, you can count on professionals that help you out.
If you should not need these services (which you should be careful to decide), you can consider an open source solution. After acquiring their competitor Gitorious in early 2015, GitLab (see below) remains the only well-established open source code hosting platform.
3. Complementing Tools
With most solutions, the actual task of "source code management" is just one part of their offering. This makes sense if you consider that today, software development includes a myriad of different tools and workflows - that work best if they are tightly integrated with one another. Think of issue tracking, code review, continuous integration systems, etc.
Therefore, it's a valid approach to choose your code hosting platform depending on the "complementing" tools that it offers. On the other hand, any modern source code management system allows integrations with other tools (that you might already have in use).
On-Premise Code Hosting Solutions Compared
Today - unlike a few years ago - you have many different code hosting platforms to choose from. Below, to help you make your decision, we'll present seven of the most well-established and modern solutions.
It's fair to say that GitHub invented large parts of what we now call "collaborative coding". And although other hosting platforms have made up ground, GitHub remains one of the most innovative providers.
A huge advantage of GitHub Enterprise is that many developers will already be familiar with the platform's features and interface - because it is very similar to their cloud offering on github.com, which is extremely popular among coders around the world.
GitHub Enterprise includes a lean bug tracking system, plainly named "Issues". It offers much less functionality than heavyweights like Atlassian's JIRA - but on purpose. With only the most important features included, it makes simplicity its biggest advantage.
Well thought out interfaces for Pull Requests and Code Review are other distinguishing factors of GitHub Enterprise.
Integrations are another strength of the platform: almost all modern coding tools allow to integrate with this most popular of developer platforms. Our Git client Tower, for example, allows to connect your GitHub Enterprise account - and makes cloning and creating repositories, from then on, just a matter of a single click.
"Integration" is also the answer to a seemingly missing feature of GitHub Enterprise: a continuous integration tool is not included with the service; popular tools like Jenkins, TravisCI, or TeamCity, however, can be easily connected.
Bitbucket Server (formerly 'Atlassian Stash')
Software giant Atlassian acquired the "Bitbucket" online platform a couple of years ago. Since 2012, it offers its own on-premise solution (then called "Atlassian Stash" and renamed to "Bitbucket Server").
Bitbucket Server's biggest advantage is definitely that it comes from Atlassian - the company that develops enormously popular products like JIRA and Confluence. That's why integration with these tools (especially JIRA) is seamless in Bitbucket Server.
The same goes for continuous integration: offering a separate solution in Bitbucket Server for this topic would not make much sense, as Atlassian already has a well-established CI platform named "Bamboo". Integration with Bamboo is, of course, tight and seamless within Bitbucket Server.
Bitbucket Server is an obvious choice if your development toolchain already heavily depends on other Atlassian products like JIRA and Bamboo.
Until early 2015, two major projects were striving to create the best open source Git code hosting platform. After GitLab acquired its competitor Gitorious, however, it has become the single go-to system.
GitLab is available in three different editions:
- Community Edition is free to download and install on your own servers.
- Enterprise Edition is a paid version and can also be installed behind the firewall. It comes with enterprise-grade support and a large set of additional features.
- On Gitlab.com, the company offers hosted repositories, too.
At its core being an open source project, GitLab moves fast - with over 700 people contributing through their developer community.
Besides Git repository management, GitLab's feature set includes code reviews, issue tracking, activity feeds, and wikis. Regarding continuous integration, the platform comes with its very own "GitLab CI" tool. However, it also offers many integration options with popular tools like Jenkins - and products like JIRA, Slack, or Hipchat for other topics.
Perforce has the longest history in source code management of all the companies in this overview. It is mostly known for an impressive tradition in enterprise code hosting through its own Perforce version control system. Recently, however, the company extended their offering with their new GitSwarm platform.
Based on the GitLab project, GitSwarm comes with a similar feature set. Its distinguishing characteristics, though, are related to security and scalability; by mirroring work into Perforce's own Helix platform, many enterprise-relevant features enrich the system:
- Access control is more fine-grained
- Specific branches and files can be locked
- Developers can "slice" big repositories and pull only what they need...
Especially bigger companies will appreciate Perforce's long-standing experience as a source code management provider; enterprises can be sure that their needs and requirements are well understood.
Microsoft Team Foundation Server
Since long, software giant Microsoft has its own, well-established code management platform: already in 2006, Team Foundation Server started helping teams ship better software. While it didn't support Git in the past, it now strongly embraces the new decentralized version control system.
The platform doesn't require developers to use Microsoft technologies; it's in fact a very open system that promotes other technology stacks like Xcode and Eclipse even right on its front page.
Apart from version control, Team Foundation Server offers agile boards (for Kanban and Scrum), its own CI infrastructure, and an integration-friendly API.
While most code management providers target multiple audiences, RhodeCode resembles Perforce's strong focus on the enterprise. RhodeCode neither offers a "Community Edition" nor does it provide cloud-hosting of repositories. The team concentrates fully on developing their "behind-the-firewall" installation.
RhodeCode allows developers to use not only Git, but also Mercurial and Subversion for revision control. Feature-wise, the platform offers the most important collaboration features like code reviews and pull requests - but banks on flexible integrations with external tools for both issue tracking (e.g. with JIRA, MantisBT, Bugzilla) and continuous integration (e.g. with Jenkins or Bamboo).
Focused on enterprise customers, the platform offers many features related to security (compliance, auditing, permissions, break through prevention) and scalability (multiple nodes, performance tuning, etc.).
For years, Assembla is best known for being a popular Subversion and Perforce hosting platform. Some time ago, however, the company added support for Git. And with its Portfolio Private Install product, customers can use the platform on their own servers.
On the one hand, Assembla offers many coding-specific features like task & issue tracking, merge request workflows, code review, and deployment tools. Even code snippet management is included.
In contrast to pure source code management solutions, however, Assembla's Portfolio platform aims to be a complete project management suite: features like file sharing, a simple messaging interface, and a wiki make it interesting for non-development team members, too.
Only since a couple of years can we choose from this great variety of code hosting platforms. However, this should not be seen as an agony of choice: beyond the basic features, every platform lays its very own focus. There's a good chance that one of these solutions is the perfect choice for your requirements.