A história do GitLab: o tanuki que saiu da Ucrânia

Tux de pé diante do torii vermelho com o tanuki geométrico oficial do GitLab

Em 8 de outubro de 2011 Dmitriy Zaporozhets fez o primeiro commit do GitLab. A casa na Ucrânia não tinha água encanada; o poço comunitário era o problema menor — faltava uma ferramenta de Git que ele pudesse mudar. Ruby on Rails, inspirado no GitWeb, feito com Valeriy Sizov. Quinze anos depois o GitLab 19.3.1 (26 de agosto de 2026) ainda sai no ritmo de sempre: uma versão por mês, 177 seguidas até junho de 2026. Do poço à Nasdaq. O tanuki laranja no meio.

Ucrânia, 2011: um Rails contra o GitHub fechado

Dmitriy (Dmytro) Zaporozhets queria colaborar com o time sem o GitHub como dono do fluxo. Self-hosted, código aberto, instalação que um humano aguenta. O nome veio do GitWeb e da família “git alguma coisa”. O commit inicial está no gitlab-foss: 9ba12248, 8 de outubro de 2011. Não era empresa. Era fim de semana e noite.

O Git já era o disco. Faltava a forge: issue, merge request, wiki, permissão, web. Gitorious existia. GitHub já era o default social. O GitLab nasceu do lado self-hosted — o servidor que a empresa instala e não manda o código para a Califórnia.

2012: panqueca, Hacker News e o CI

Sytse Sijbrandij — holandês, depois Sid para o investidor americano — viu o projeto, leu o Rails e gostou da qualidade depois de trezentos commits. Postou no Hacker News perguntando quem queria um GitLab.com. O post não subiu. Ele foi fazer panqueca. O telefone encheu. A mulher ficou com a frigideira; Sid passou o dia respondendo. Centenas na beta.

Em novembro de 2012 Dmitriy commitou a primeira versão do GitLab CI. O resto das forges tratava CI como plugin. O GitLab tratou como o mesmo produto. Essa decisão — um aplicativo, do issue ao deploy — é o “master plan” que só ganharia nome em 2016. Runner, .gitlab-ci.yml, pipeline no merge request: tudo desce daí.

2013–2014: EE, empresa, dia 22

Organização grande pediu feature que o CE não tinha. Dmitriy tuítou que queria viver de GitLab. Sid e ele fecharam o GitLab Enterprise Edition em 22 de julho de 2013 — open core: CE MIT, EE com o que telco e banco pagam. Sid fez o commit inicial do site. GitLab B.V. em Utrecht; depois GitLab Inc. nos EUA, sem sede. O primeiro funcionário era da Sérvia. Dmitriy, Ucrânia. Os holandeses que Sid contratou pararam de ir à mesa extra da casa no terceiro dia. Remote não foi ideologia. Foi o que sobrou quando ninguém aparecia e o Slack já resolvia.

Em 2014 a empresa virou LLC. GitLab Cloud passou a se chamar GitLab.com. Release no dia 22 de cada mês — 6.5 em janeiro, 7.6 em dezembro — e o calendário não quebrou desde então. No fim do ano mandaram a aplicação para o Y Combinator.

2015–2016: YC, handbook, master plan

O winter batch de 2015 levou quase o time inteiro para o Vale. Nove pessoas na formatura, março. O GitLab Handbook entrou no repositório do site: valores, hiring, onboarding, salário, tudo default público. CREDIT: Collaboration, Results, Efficiency, Diversity, Iteration, Transparency. A transparência era também defesa: comercializar open source costuma matar a comunidade; o handbook era o antídoto que Sid descreveu.

Compraram o Gitorious (2015) e migraram usuário. Khosla, seed. Em 2016 o master plan: não ser “mais um GitHub”, ser a plataforma DevOps inteira. Série B de US$ 20 milhões. Mais de mil contribuintes, cem mil organizações. O time passou de 140.

31 de janeiro de 2017: rm no banco errado

Spam de snippet derrubou o PostgreSQL do GitLab.com. No meio da recuperação de replicação, um sysadmin rodou rm -rf no diretório de dados achando que estava no secundário. Estava no primário. 300 GB viraram 4,5 GB. O backup para o S3 estava vazio: pg_dump 9.2 contra Postgres 9.6, o job falhava em silêncio. Snapshot de disco do banco não existia. Restauração de um staging de seis horas. Issues, MR e usuário da janela 17:20–00:00 UTC se foram; repositório Git e wiki, não — vivem noutro disco. Self-hosted ninguém tocou.

O postmortem saiu público, com Google Doc ao vivo. A lição colou na cultura: backup que não restaura não é backup; console de produção precisa de guardrail; a transparência do handbook também vale quando o tanuki apanha. No mesmo ano compraram o Gitter.

O que o tanuki é, por baixo

Não é um Git daemon com pele. É um stack:

  • Rails + Puma — a app. Issue, MR, CI, registry, package, wiki.
  • Gitaly — RPC na frente do repositório Git. Sem isso o NFS antigo não escala.
  • Workhorse — o proxy Go que segura upload, git-http e o que o Rails não deve ver.
  • PostgreSQL + Redis (Valkey entra como opção no 18.9, porque o Redis mudou de licença) + Sidekiq.
  • Omnibus — um pacote, um gitlab.rb, gitlab-ctl reconfigure. Helm para Kubernetes.
  • Runner — o agente que pega job do CI. Shell, Docker, Kubernetes executor.

CE MIT (e outras peças). EE source-available, pago. GNOME foi para o GitLab em maio de 2018; KDE, 2020. O self-hosted que o GitHub Enterprise cobrava caro o GitLab deu de graça no CE — e vendeu o resto no EE. O atalho de pipeline Terraform neste blog está em Pipelines Terraform no GitLab. Quem quer forge menor, em Go, olha o Gitea.

All-remote, IPO, o CEO que saiu

Antes da pandemia o GitLab já se vendia como a maior empresa all-remote do mundo: 1.200 pessoas, 65 países, zero escritório da companhia. O de San Francisco, 15 lugares, repetiu o padrão da mesa de Sid: o vendedor parou de ir. Híbrido, diz o handbook, é o pior dos dois mundos — dois jeitos de falar. WordPress e InVision eram os únicos pares que o investidor citava. Depois o investidor virou advogado do modelo: hiring mais rápido, custo menor.

Em 14 de outubro de 2021 o GitLab Inc. abriu na Nasdaq, ticker GTLB. Dez anos do primeiro commit. Preço US$ 77; abriu a 94, fechou a 103. Mais de um milhão de seats licenciados, 30 milhões de registrados na época. Em 2023 a Gartner criou o quadrante de DevOps Platforms e pôs o GitLab como Leader. No FY2024 veio o primeiro trimestre de lucro operacional non-GAAP.

Em dezembro de 2024 Sid deixou o CEO por saúde. Bill Staples assumiu. Sid foi fazer o Kilo Code, agente de IA open source. O handbook continua o mesmo documento. O release do dia 22 (hoje numa quinta variável, mas o mês não falha) também.

2026: 19.3, Duo, Valkey

O ano fiscal que fechou em 31 de janeiro de 2026: receita US$ 955,2 milhões, +26% sobre o FY2025. 172 releases mensais seguidas naquela data; em junho o site da empresa já contava 177, 50 milhões de usuários registrados, 2.500 no time, 5.500 contribuintes. GitLab 18 foi o ano do Duo Agent Platform (GA no 18.8). O 19.0 saiu em 21 de maio de 2026. O 19.3 em 20 de agosto; patch 19.3.1 em 26 de agosto. Redis AGPLv3 empurrou o Valkey (BSD) para o Omnibus, opt-in desde o 18.9.

O posicionamento mudou o nome — DevOps, DevSecOps, “intelligent orchestration” — mas o disco é o mesmo: um YAML, um runner, um MR. Self-hosted no Ubuntu ainda é Omnibus ou Helm em cima de Kubernetes e Docker. O Git embaixo não mudou: Git simples e rápido.

O que ficou

Um Rails na Ucrânia, um holandês com panqueca e um mascote japonês (o tanuki, cão-guaxinim, não é raposa). Open core, handbook aberto, um mês sem furar o calendário. O GitHub ficou com a rede social do código; o GitLab ficou com o servidor que a empresa instala e com a pipeline que o GitHub foi copiar. 19.3.1, Gitaly, runner, CE MIT. O poço secou. O tanuki não.

A história do disco: A história do Git. A forge irmã, mais magra: Gitea.