When it comes to managing revision to source code, Git has quickly become the most prominent tool organizations are using. But the Git command line tool itself is only part of the picture.
How can you view changes and revisions visually? How can you integrate your repositories with other tools? While there are a number of competing software-as-a-service (SaaS) offerings in this space, many are themselves closed source, proprietary systems. GitLab is different. While they offer a SaaS version of their toolset, you can also download the source to GitLab Community Edition and host your own repositories, enabling much closer control of your code and the infrastructure which supports it.
Last week, GitLab announced they are acquiring Gitorious, a company offering a similar project, leaving GitLab as the main player if you're interested in pure open source collaboration tools. To learn more about GitLab, we caught up with co-founder and CEO Sytse Sijbrandij, who explained to us a little bit more about GitLab's open source tools for collaborative coding and the roadmap for what they're working on in the near future.
What led to the need for GitLab? Why open source it?
GitLab started because Dmitriy Zaporozhets needed a good version control and code review solution for work. He was working as a team lead for a large outsourcing company at the time. Customers didn't want their source code to leave the company but there wasn't a large budget for tools. So he thought: "How hard can it be?" Since all software we use every day is open source, opening up GitLab was the natural thing to do. And with more than 750 people contributing to it this choice has been a great success.
Why do you think it's important to be able to run a version control front-end on your own server? What's the main advantage for users?
There are several advantages. Running GitLab on your own server means that you can easily contain your entire environment behind a firewall or Virtual Private Network (VPN). A GitLab instance doesn't even need to be connected to the public internet.
On top of this, you have complete control over the software and the accessibility to it. This makes it much easier to manage maintenance windows, jurisdiction and ownership of repositories. You can interact with your own operations team in case of (integration) problems, rather than having to rely on outside support. Of course we do offer 24/7 support if your operations team needs help.
Besides control and containment, running on your own servers makes it easier to integrate with your own tools and authentication methods, such as LDAP / Active Directory, issue trackers, but also Continuous Integration (CI) tools and deployments. When using a service on the public internet it usually takes a lot of effort to punch all the holes in the firewall and configure all the VPNs to do this.
Performance is in your own hands if you run on your own servers. GitLab scales incredibly well on a single server, but can also easily be scaled over clusters. By running your own, you're not restricted to the infrastructure of someone else and can anticipate increasing usage. If something is hosted on your own network the latency and bandwidth are often 10 times better than over the public internet. In the same line of thought, you manage your own backups, giving you full control over your data and its safety.
Lastly, it's more affordable. You can run it on your own existing architecture. If you have a significant number of users and repositories this can make a big difference in your monthly costs. For larger users the SaaS costs are often very high.
Where does GitLab excel?
GitLab has found success in a number of areas where other tools have fallen short:
- Protected branches, which allow only senior developers to merge to the master branch and prevent accidental force pushes to master.
- Multiple authentication levels, which allow you to add people to the issue tracker without sharing the source code with them.
- Group level milestones, which let developers see all the issues for the milestone you're working on across different repositories.
- "Innersourcing", which allows you to share projects within a company or organization.
- A responsive UI, which offers a flexible width so you can see more on larger devices.
- A vote counter in issues and merge requests, letting you get a feel for the popularity of an item.
- High availability, through multiple active servers.
- Integration with identity services like Active Directory and LDAP.
I was interested to read a little bit from How to turn screw-ups to your advantage about how you were able to pivot from service outage to communications opportunity. This was a great example of being open and transparent not just in the source code, but in how your organization operates. Can you tell us a little bit about the decision to share and collaborate on your service outage publicly?
We run GitLab.com for a large community of developers. These people help build GitLab, spread the word and ultimately depend on us to host their code. If something breaks, people want to know what is happening to the server and their code on it and what is being done to correct this situation. It was clear to us that we had to open this up to the community and we only got positive responses.
We strongly believe in being open. Only by being able we can build a company next to an open source product that belongs to an international community. We have open sourced our website code, and try to open source anything we think can be of use to the community.
GitLab has a continuous integration tool built in. What are some advantages of this tight integration between version control and CI?
To set up a new project, you just need to click once. Authentication is handled by GitLab (OAuth), so you don't have to handle that separately. But above all, GitLab integrates with GitLab CI, meaning you can quickly see the status of a build in a merge request, which links directly to the build output of your CI. This makes code review with CI integration much faster and accessible. Apart from the integration advantages GitLab CI has a clean interface and it supports parallel builds so you get your tests results faster.
GitLab hosts private repositories for free, something you don't frequently see in online code hosting sites. What led the decision to do this?
We want everyone to be able to enjoy GitLab, even beginning programmers that might not want their mistakes shared with the whole world. Making it free seemed like the natural thing to do. For now we can easily afford this because the organizations that run GitLab on-premises bring in the revenue. In the long term we think code hosting will be free for most people, just like email is now. It used to be that Hotmail restricted you to 2MB, but after Gmail came out this restriction now is unthinkable. We want to be the Gmail for repository hosting. But instead of showing advertisements we think the place you store your code can benefit from a marketplace. Similar to Heroku offers third party add-ons in their interface we can do the same to generate revenue in the long term.
It looks like at the moment, public repositories don't set up a license file by default. Any plans to have a default license?
We would love to have this in GitLab and we hope someone will contribute it. We are accepting merge requests for it.
What's in the roadmap? Where do you expect to see GitLab going in coming months and years?
GitLab is becoming more and more popular. Every month we build a lot of features based on feedback, request and what we think is smart. We like to keep that trend going.
We're working hard to improve GitLab CI and expect more and more people to start using this. Continuous integration is very powerful and we want everyone to be able to use this easily.
In the coming years we'll start to see more people building products on top of GitLab. There are already several examples of this for authoring books such as O'Reilly Media's backend, Leanpub's backend and Penflip, which are all built on top of GitLab.
We'd like to thank the GitLab community that helps us stay sharp, that builds this awesome product with us and that spreads the love.
Our next release, GitLab 7.8 Enterprise Edition, will include GitLab Annex, which is based on git-annex. GitLab Annex allows anyone to have very large files in a Git repository without performance issues, but with the full GitLab authentication and authorization. This makes Git much more attractive for people working with large binaries, artwork, game assets and more.
For anyone that would like to start using a powerful CI tool, we offer GitLab CI. It is easy to install and integrate with GitLab. And if you want to use it online you can use it for free on ci.gitlab.com as long as you bring your own runners to execute the tests.