Leaving GitHub: Why Developers Are Migrating to Forgejo and Codeberg
For more than a decade, GitHub has been the default home of open-source software. If you wrote code, you pushed it there. If you wanted to contribute to a project, you opened a pull request there. The platform's network effects became so strong that "GitHub" and "open source" were almost synonymous in the public imagination.
That consensus is now visibly cracking. The Gentoo Linux project recently announced plans to migrate its development infrastructure away from GitHub and toward Codeberg, a non-profit platform built on the open-source Forgejo software. The Dutch government has quietly built its own GitHub replacement for public-sector code. And a growing chorus of maintainers — many of them long-time GitHub power users — are talking publicly about the risks of hosting the world's open-source commons on a single, Microsoft-owned, US-based platform.
This isn't a fad. It's a slow but accelerating structural shift, and it's worth understanding what's driving it.
The trigger: control, not features
The pitch for moving off GitHub is rarely "the features are better elsewhere." GitHub's UI, CI pipelines, code search and Copilot integration are genuinely excellent. The pitch is about control — over data, governance, dependencies and long-term destiny.
That language shows up almost word-for-word in the public statements driving the migration wave. As one of the source pieces frames it bluntly: "That is why it is important to have full control." The argument is that hosting your project on a platform you don't own means accepting that someone else gets to decide the terms — what gets indexed for AI training, who can be deplatformed, how outages are handled, and whether your project's history remains accessible at all.
Three concerns keep recurring in maintainer discussions:
- Single point of failure. GitHub has had multi-hour outages that have effectively frozen huge portions of global software development.
- Geopolitical exposure. GitHub is subject to US export controls and sanctions. Developers in sanctioned countries have, at various points, been locked out of their own repositories.
- AI training. Public repositories have been ingested wholesale into commercial code-generation models. For many copyleft maintainers, that crossed a line.
None of these are hypothetical. They are the lived experience of the people now packing their bags.
What Forgejo and Codeberg actually are
The most popular destination in the current migration is Codeberg, a non-profit forge run by a German association. Codeberg itself runs on Forgejo, a community-led fork of the Gitea project. The naming is confusing for newcomers, so it's worth separating cleanly:
- Forgejo is the software — a self-hostable, fully free-software Git forge. Think of it as the open-source equivalent of GitHub Enterprise. You can install it on a $5 VPS or a corporate datacentre.
- Codeberg is one specific public instance of Forgejo, run as a non-profit, free for open-source projects.
The relationship is roughly analogous to Mastodon and a particular Mastodon server, or to WordPress the software versus WordPress.com the hosting service. Crucially, Forgejo instances can federate plans are in motion to let issues and pull requests cross between independent forges, the way email crosses between mail servers.
That federation roadmap is the part that really matters in the long term. It means a future where leaving your current forge doesn't mean leaving the conversation.
Gentoo's move and what it signals
Gentoo, one of the oldest and most technically respected Linux distributions, announced it is shifting its primary development workflow toward Codeberg. As Linux Journal reports, the project explicitly framed the move as a values alignment — Gentoo's identity has always been about transparency, source-level control and minimal black boxes. Continuing to host its main development on a proprietary platform owned by Microsoft sat uncomfortably with that ethos.
Gentoo matters here for two reasons. First, it's not a fringe project — it has been around since 1999 and underpins ChromeOS development. Second, it's a project of full-time engineers who could absolutely have stayed on GitHub for convenience. They chose not to. When mature, well-resourced projects start moving, it stops being a hobbyist gesture and becomes a signal to the wider ecosystem.
Other notable open-source projects — including the F-Droid Android app repository — have made similar moves over the past year. The pattern is consistent: deeply ideologically committed projects first, then larger pragmatic ones once the tooling matures.
The Dutch government angle
The most interesting development isn't from the open-source world at all. It's from a national government.
The Netherlands has quietly built its own GitHub-equivalent platform for public-sector code, as reported by both It's FOSS and Cybernews. The reasoning is straightforward: code written by and for the Dutch government — particularly code that handles citizen data, tax systems, identity and critical infrastructure — should not be hosted on a US commercial platform subject to foreign law and commercial pressures.
This is the same logic that has driven European digital sovereignty initiatives in cloud computing, office software and identity systems. Code hosting was simply the next domino. And once one government does it credibly, others tend to follow — France, Germany and the EU institutions are all running their own GitLab instances for similar reasons.
For Australian readers, this raises an obvious question: where does Commonwealth and state government code currently live? The answer, in many cases, is GitHub. The Dutch precedent suggests that calculus may not hold forever, particularly for agencies handling sensitive workloads.
What developers actually lose by moving
None of this is friction-free, and pretending otherwise does a disservice to the engineers weighing the decision.
Moving off GitHub means losing some real things: the discoverability of being on the largest code platform; the GitHub Actions ecosystem; tight integration with VS Code; the social graph of stars and followers; and, for some, Copilot. Forgejo has its own CI system (Forgejo Actions, broadly compatible with GitHub Actions workflows), but the wider plugin ecosystem is smaller.
There's also the contributor friction problem. A drive-by contributor who already has a GitHub account will happily file a PR there; asking them to sign up for Codeberg is a real ask. Federation will eventually solve this, but "eventually" is doing some work in that sentence.
The pragmatic pattern emerging among projects is a mirror-and-migrate approach: make Codeberg or a self-hosted Forgejo the canonical home, but maintain a read-only or contribution-accepting mirror on GitHub for discoverability. This hedges against both lock-in and obscurity.
The bigger picture: re-decentralising the commons
The migration off GitHub fits into a broader pattern. Mastodon and the fediverse pulled some of the conversation away from Twitter/X. Matrix is doing the same for chat. PeerTube exists as a counterweight to YouTube. None of these have toppled their incumbents, and probably never will. But they don't need to. They just need to exist, work, and be ready when people decide centralisation has gone too far.
Forgejo and Codeberg occupy the same role for source code. They aren't trying to be GitHub-killers. They are trying to ensure that if GitHub turns into something the community no longer trusts, there is somewhere credible to go. That insurance policy has value even for developers who never plan to use it.
For Australian developers and the organisations that employ them, the practical takeaway is modest but real: it's worth knowing what your fallback looks like. Try Codeberg with a side project. Stand up a Forgejo instance for an internal team. Keep a mirror. Treat your choice of forge as an architectural decision, not a default.
Because the lesson of the last decade of platform consolidation is simple: defaults change, and the projects that thought about portability before they needed it are the ones that survive when they do.