Development
A European alternative to GitHub: Forgejo, Gitea or GitLab?
Short answer
For most teams Forgejo is the most obvious European alternative to GitHub. It is entirely free software, sits under a German non-profit association, and can take over repositories, issues, pull requests and releases from GitHub. Gitea is similar, but is run by a commercial company. GitLab can do more, but is heavier to run and partly closed software.
Why do teams look for an alternative to GitHub?
Usually for one of three reasons. Code is the most important thing a software company has, and it sits with an American company. Clients ask where their source code is. Or the team simply wants to decide for itself which version runs, who has access and where the backups are.
GitHub is a good product. The point is not that it works badly, but that you have no say over it.
What are the three options?
| Forgejo | Gitea | GitLab | |
|---|---|---|---|
| Who sets the direction | Codeberg e.V., a German non-profit association | A commercial company | GitLab Inc., an American company |
| Licence | Only free software, GPL v3 or later since version 9 | Open core: an open version plus paid features | Open core: Community Edition plus closed paid features |
| CI/CD | Forgejo Actions | Gitea Actions | GitLab CI |
| Weight | One program or container with a database | Comparable to Forgejo | Larger: its own documentation assumes 8 vCPU and 16 GB of memory for a single server |
Forgejo or Gitea?
They share a history. In October 2022 Gitea’s domains and trademark were transferred to a commercial company. Part of the community did not agree and started Forgejo, under the wing of Codeberg e.V.
At first Forgejo was a soft fork that kept taking changes from Gitea. In early 2024 it became a hard fork with its own codebase. They still look alike, but they are drifting further apart.
The difference lies mainly in who sets the direction. Forgejo publishes only free software, under an association that holds the domains. Gitea works with an open core model, where some features are paid. For the day-to-day developer they feel comparable.
When do you choose GitLab?
When you want more than a Git server with CI. GitLab has built-in parts for project planning, security scans and registries, and large organisations like working with it. On the other hand it is much heavier to run, and some features are only in the paid, closed version. For a team of a few developers it is often more than needed.
Does CI/CD work like it does on GitHub?
Forgejo Actions looks like GitHub Actions: workflows in YAML, in a folder in your repository, run by a runner. The Forgejo project says plainly that it was designed to be familiar, but not to be compatible. In practice simple workflows often run after small changes. Workflows that rely on actions from the GitHub Marketplace or on features only GitHub has need going through.
What do you take with you when you switch?
More than just the code. When you move from GitHub, Forgejo’s migration feature also fetches the wiki, labels, milestones, issues, pull requests and releases. If you currently run Gitea up to and including version 1.22, you can upgrade the whole installation to Forgejo.
Plan the move per repository or per team, not all at once. That way one team can keep working while the next moves over, and the first repository already shows you what the rest will need.
What you arrange yourself: going through the CI workflows, setting up webhooks and integrations again, and giving everyone a new address for the remote. That is work, but it is work you do once.
How do we do it?
We host Forgejo per client at its own address, on hardware we own, with the runners for Forgejo Actions included. We move your repositories from GitHub, GitLab or Gitea, and go through the workflows with you. How such a move goes from there is described under switching.
Want to know first why the location of your data matters? Read where is your data.