TL; DR: Boasting a customer list with the likes of Red Hat, Alibaba, Sony, Uber, and StackExchange, GitLab helps more than 100,000 organizations rapidly build, test, and deploy code. Originally built as an open-source side project, the Co-Founders expanded GitLab to include repository management, issue tracking, code review, and tools for continuous integration and deployment. Teams large and small can collaborate with GitLab, an all-in-one platform that encompasses the entire development cycle. GitLab boasts more than 1,400 contributors to the open-source community edition and continually adds features to two commercial products.
As a PHP developer in the Ukraine, Dmitriy Zaporozhets wanted to switch from Apache Subversion to the increasingly popular git version control system. Existing products, however, were too expensive and couldn’t be run on-premises.
As any proper engineer would, he started building his own solution at home as a side project. However, there’s a twist to the classic tech founding story: Dmitriy didn’t have running water.
“He would take two buckets, walk to the well, get water, and then spend his nights doing more important things,” said Job van der Voort, a long-time employee.
Developers around the world now know Dmitriy’s work at GitLab, a comprehensive platform that enables teams to collaboratively write, test, and deploy code. The web-based application integrates all phases of the development cycle, including tools for code review, issue tracking, activity feeds, wikis, and continuous integration.
Used by the likes of SanDisk, Red Hat, NASA, Sony, VMware, and Citrix, GitLab balances the open-source needs of small organizations with the added control and user management requirements of large enterprises.
“Your time to shop software is shorter with GitLab,” Job said. “If your time is shorter, you’re able to catch bugs faster, constantly deploy to production, get feedback, and, of course, everything will cost less because time is money. We think it’s fundamental — if you improve dev cycle time, everything else will improve along with it.”
Building an Open-Source Platform to Capitalize on Git
From the first, rather unassuming commit, Dmitriy and Valery Sizov made GitLab an open-source program and released a new version every month on the 22nd. “We’ve stuck with that and still do that today,” said Job, now the Vice President of Product at GitLab.
GitLab, which Dmitriy and Valery wrote in Ruby, originally concentrated on git repository management. Shared and distributed under the MIT license, GitLab amassed more than 300 contributions in the system’s first year.
“Everything we do in GitLab is all open,” Job said. “We’re very driven by seeing how the industry is moving, how we can improve it, and how we can find benefits for everyone.”
One of GitLab’s early open-source users, Sid Sijbrandij, wanted to use the system to create a Software-as-a-Service product to compete with GitHub. Hundreds of people signed up for the 2012 beta versions, and larger companies began asking for new features.
Sid, who had notified Dmitriy about his SaaS aspirations for GitLab, contacted him again after seeing a tweet expressing Dmitriy’s desire to work on GitLab full time.
“Sid approached him and told him, ‘Work here, and I’ll pay you. You’ll be Co-Founder,'” Job said. “Shortly after they teamed up, we introduced GitLab Enterprise so that our customers could get a special version with the additional features.”
Continuous Integration and Streamlining the Entire Development Cycle
Job credits one of the early features for GitLab’s growth and popularity. Being the ever-resourceful engineer, Dmitriy had built a continuous integration, or CI, solution to help the company keep up with development and the release cycles.
“We used it here and there, not putting much time into it, and one day we decided why not make the continuous integration tools part of the GitLab product?” Job said. “That turned out to be huge. I always think about the original GitLab as, basically, Dmitriy being stubborn and wanting to build his own things.”
As git gained popularity, development teams used separate programs for hosting repositories, tracking issues, and deploying code changes.
“You’d spend a lot of time integrating all of those tools, and it was never perfect or very good,” Job said. “Elsewhere in the industry, we were seeing easier setups and much faster engineers. We didn’t see the same trend in the tools they used.”
Introducing CI practices and tools with the shared repositories in GitLab quickly demonstrated several advantages, mostly surrounding the speed at which teams can move throughout the development lifecycle. More rapid integrations enable developers to quickly identify bugs, gather feedback, make changes, and deploy to production.
“What we’re really doing is pushing the boundary of integrating across the whole development pipeline and software development lifecycle,” Job said. “As we always say, you want to be able to go from an idea all the way to production, get some feedback, go back, and do it all again. This should all happen in the same place and no longer be spread across different applications.”
How GitLab Products Help Organizations Collaborate on Code
As developers are expected to play increasingly large roles across an application’s lifecycle, the need for a consolidated platform becomes more and more important, according to Job.
“In GitLab, we have a single tool for everything you need to do,” he said. “You can do it all in the same place. This idea is gaining traction across the industry because it makes so much sense. As our tools become more integrated, we’re expecting more from our developers. Why would we make it harder by making them use separate programs?”
Community Edition: Best for Small Teams and Personal Projects
The open-source version of GitLab remains under the MIT license and is free for unlimited users to download and adapt. In addition to the built-in continuous integration tools, GitLab provides an analytics dashboard that enables small teams to measure how much time each phase of the development cycle takes.
Users can create websites for their GitLab projects, groups, or account, hosted for free on GitLab.com. Enterprise customers can host GitLab Pages on their self-hosted GitLab installation.
Enterprise Editions: Additional Security and Workflow Tools for Larger Groups
Commercial versions of GitLab are split into two versions: Enterprise Edition Starter and Enterprise Edition Premium. Both platforms, according to Job, are ideal for larger teams that need additional security and workflow controls.
The starter edition introduces user management and code approval tools, while the premium version also includes top-tier support, training, audit logs, disaster recovery services, high-availability support, and load balancing.
“The list of features is quite long, but I think it fundamentally comes down to giving you much more control over making sure the right code enters the project and only the right people see it,” Job said. “As your team grows, the enterprise editions grow with you.”
The Future: Automatic Deployment With Containers and Orchestration
As an engineer, Job still gets frustrated by how complicated the deployment process can be, especially with containers and orchestration systems. “There’s not a good solution, and it’s very hard to maintain and scale,” he said. “In GitLab, you literally press one button. It allows you to immediately deploy to your containers and your Kubernetes.”
The team introduced Auto Deploy at the end of 2016 to automate containers, orchestration, deployment, and review processes. The new tools enable developers to set up and deploy a Ruby application with review apps, multiple environments, and ChatOps to a Kubernetes cluster in about 12 minutes — a process that could take days or weeks without GitLab.
“We hope to and do our best to support legacy systems, but we are also consciously looking at the solutions coming up in the market,” Job said. “We want to know what problems people are facing, how they’re dealing with them, and how we can make sure GitLab helps them do it better.”