Core Feature Matrix
| Feature | GitHub | GitLab | Forgejo | Sourcehut |
|---|---|---|---|---|
| Self-hostable | No (GHE $$) | Yes (CE free) | Yes (free) | Yes (free) |
| Built-in CI/CD | GitHub Actions | GitLab CI | Forgejo Actions | builds.sr.ht |
| Issue tracking | Yes (basic) | Yes (full) | Yes (basic) | Yes (minimal) |
| Container registry | Yes (GHCR) | Yes | Yes | No |
| Pages / docs hosting | Yes (GH Pages) | Yes | Yes | Yes (pages.sr.ht) |
| Code review UX | Excellent | Good | Good | Email-based |
| API quality | Excellent | Excellent | Good (Gitea compat) | Good (simple REST) |
| Free tier cloud | Yes (generous) | Yes (limited CI) | N/A (self-hosted) | Yes (alpha/beta) |
Resource Requirements (Self-Hosted)
| Platform | Min RAM | Stack | DB | Setup Complexity |
|---|---|---|---|---|
| Forgejo | 256MB | Go binary | SQLite / Postgres | Low |
| Sourcehut | 512MB | Python services | Postgres | Medium-High |
| GitLab CE | 4GB | Ruby/Rails + many services | Postgres + Redis | High |
| GitHub | N/A | Cloud only | N/A | N/A |
Notes on Each Platform
GitHub: Network effects are real. The developer ecosystem lives here. If discoverability or contributor acquisition matters for your project, GitHub's reach is significant. The CI/CD (Actions) is mature and the marketplace has everything. The trade-off is vendor lock-in and no self-hosting at any reasonable price point.
GitLab CE: The most feature-complete self-hosted option by a large margin. The setup complexity and resource requirements are the cost. If you're running a larger team and want the full DevSecOps feature set on your own infrastructure, GitLab is the only realistic choice in this comparison. The free tier CI is limited; this has been a recurring complaint.
Forgejo: The practical lightweight self-hosted option. A community fork of Gitea, actively maintained. The GitHub Actions-compatible runner (Forgejo Actions) means your CI workflows are portable. If you want a git forge that runs on a small VPS without drama, Forgejo is the answer. Missing some of GitLab's advanced features but covers the 80% case well.
Sourcehut: The minority choice, and deliberately so. Email-based patch workflow, Alpine Linux-based CI, minimal JavaScript, explicit design philosophy around simplicity. If you align with that philosophy it's a pleasure to use. If you don't, the UX friction is real. Not recommended for teams expecting a GitHub-like workflow.
Which to Choose
This is not a ranking. These are decision criteria:
If your priority is contributor reach and ecosystem access: GitHub. If your priority is full-featured self-hosted with everything included: GitLab. If your priority is lightweight self-hosting that works: Forgejo. If your priority is principled minimalism and you write email: Sourcehut.