GitLab 377 has always been one application for planning, source control, CI/CD, registries and security scanning, where GitHub 29 grew those pieces around a code host, and it installs on your own servers from the same code base that runs GitLab.com. The code is open core: everything outside the ee/ directory is MIT-licensed and builds the free Community Edition; Premium and Ultimate features are proprietary. The newest release is 19.4.1.
| GitHub | GitLab | Difference in practice |
|---|---|---|
| Organization | Group (nestable subgroups) | GitLab groups nest to any depth |
| Pull request | Merge request | Same review model, different name |
| .github/workflows/*.yml | One .gitlab-ci.yml | GitLab defines stages and jobs in one file |
| Marketplace actions | CI/CD components and templates | GitHub's action ecosystem is far larger |
| Rulesets | Protected branches, push rules | Push rules need Premium |
GitLab Free allows only 5 users per top-level group, 400 compute minutes and 10 GiB of storage. Premium costs $29, billed annually, with 10,000 minutes; Ultimate, which adds the security scanners, is sold only through sales. GitHub Team costs $4 (advertised for the first 12 months) with 3,000 minutes. A self-managed GitLab needs a real server: 8 vCPUs and 16 GB of memory is the documented single-node baseline, 8 GB the tuned-down minimum.