Forgejo makes a full break from Gitea
The world of open-source "forges" is becoming a little more fragmented. The Forgejo project is a software-development platform that started as a "soft
" fork of Gitea in late 2022. On February 16, Forgejo announced its intent to become a "hard fork
" of Gitea to continue its stated objectives of community-controlled development and to "liberate software development from the shackles of proprietary tools
". In a world where proprietary tools cast a long shadow over open-source development those are welcome words—if the project can deliver.
Gitea was (and is) a popular open-source Git hosting and collaboration platform. Gitea itself is a fork of Gogs that started in December 2016 due to frustration with the "single-maintainer management model of Gogs
" and opted for a "more open and faster development model
". Originally the project's governance, spelled out in an earlier version of its CONTRIBUTING.md file, specified the project would have three "owners" responsible for keeping development "healthy
". The actual responsibilities and rights of the owners were vague, but they were to be elected yearly by Gitea's maintainers "who decide with a simple voting model which contributions get accepted and who will play the owner role
".
That community of maintainers did not get a vote when Gitea's domain and trademarks were quietly transferred by two of Gitea's "owners" (Lunny Xiao and Matti Ranta) to a for-profit business called Gitea Ltd. The announcement said this was to meet the goal of "ensuring the long term success of the project
" by allowing companies "unable to contribute back to open source via sponsorship or code contribution
" to support Gitea in the form of paying Gitea Ltd directly. In addition, the company would "act as a steward
" of the project, which would "of course remain open source, and a community project
". To date, the company seems to have remained good to its word about Gitea itself remaining open source. It has launched a hosted cloud offering with features not available in the self-hosted version, but the self-hosted version of Gitea otherwise remains open-source. The "enhanced
" enterprise version hinted at in the announcement, which one would expect to be open-core, has yet to appear.
Unsurprisingly, members of the Gitea community objected. They published an open letter on October 25, 2022 (with running updates afterward above the letter) and asked Gitea owners to, instead, form a non-profit that would hold the domain and trademarks. Once it was made clear that would not happen, the community announced it would create a soft fork of Gitea to "keep the Gitea community united
". The Forgejo project was announced on December 15, 2022 under the auspices of Codeberg e.V., a non-profit based in Berlin, Germany that provides the Codeberg collaboration platform.
The name Forgejo, for those who wonder, is taken from the Esperanto word for forge, forĝejo. Having learned from earlier mistakes, the community arranged for the Forgejo domains to be held by Codeberg e.V., and the project has a detailed set of documents about various aspects of project governance, such as decision-making, branding, merging pull requests, its mission, teams, and how money is handled. While Gitea still uses GitHub for development, Forgejo has been developed on the Codeberg platform and is now the underlying software for Codeberg.
Why now?
Since its launch in December 2022, Forgejo has followed Gitea development as a set of commits on top of the Gitea development branch—doing work in feature branches and rebasing on top of Gitea periodically. In early January, Forgejo contributor Earl Warren started a discussion to change Forgejo's development workflow and "become independent and cherry-pick from the Gitea codebase until the divergences are too great and that becomes impossible
". Warren argued that the existing workflow no longer made sense because Gitea "merges very large untested code (feature or refactor) that have been the cause of major regressions with high impact on users
". He also argued that a simpler workflow would improve stability and make it easier for contributors with a single development branch versus multiple feature branches. Warren also claimed that Gitea had "turned Open Core
" and took issue with its "security behavior
" without elaborating.
Following the discussion, Warren put forward a proposal on January 14 to change Forgejo's workflow after its next major release or March 1, "whichever comes first
". In that proposal he also argued that Forgejo has the funding, resources, and governance to operate independently, and that the change "would not hinder a cooperation that does not exist
". While Forgejo had consumed Gitea's work, Warren wrote that Gitea contributors "never cherry-picked a commit from Forgejo
". Warren, at least, has submitted a number of contributions to Gitea based on work from Forgejo.
What does it mean, exactly, to be a hard fork rather than a soft fork? In its February 16 announcement, the Forgejo project explained that being a soft fork meant Forgejo contains "all of Gitea, both good and bad
", so users could move from Gitea to Forgejo as a drop-in replacement. Those days are not over, yet, but the end is in sight. Users planning to move from Gitea to Forgejo should do so "sooner rather than later
" because "eventually, Forgejo will stop being a drop-in replacement
". Forgejo does intend to remain compatible with the Gitea API, at least as it exists today. The announcement says that any changes to the API will be evaluated carefully, and that Forgejo will try to remain compatible with Gitea—though contributors may use their own judgment whether or not to implement new APIs. The announcement noted that parts of Forgejo have already diverged, such as documentation, localization, and the Forgejo Actions continuous-integration system.
What now?
Gitea Ltd hasn't addressed Forgejo's announcement directly. It did, however, put out a blog post (just ahead of the Forgejo "hard fork" announcement that was planned in the open) on February 14 for the Free Software Foundation Europe (FSFE)'s "I Love Free Software Day". That post noted several organizations "using Gitea to build Free or otherwise Open Source software
", including FSFE, the Blender Foundation, openSUSE, and others.
Both projects seem to have enough momentum to carry forward, though it's fair to speculate whether there's enough interest by users, contributors, and customers to sustain both indefinitely. Gogs, for example, doesn't appear to have thrived since the Gitea fork. The Gogs repository on GitHub shows recent activity, but Gogs's last release was on February 25, 2023—almost a year ago as of this writing. The demo linked from its homepage errors out, and the newsletter link on the homepage leads to a 404 instead of current news about the project.
Given Forgejo's backing (and use) by Codeberg e.V., it seems likely to remain viable over the long haul. Codeberg, as a platform, has attracted a respectable following with more than 117,000 projects and 95,000 users. Respectable, but a tiny sample compared to GitHub's millions of projects and users. Unless there's a mass exodus from Gitea to Forgejo, it also seems that Gitea will continue at about the same pace. Gitea boasted that it had hit 40,000 stars on GitHub in January of this year, a metric that it claimed is demonstrative of Gitea's "significance in empowering developers worldwide
" as well as "the trust and confidence the global developer community places in Gitea
". There's more than a touch of irony in citing success on a platform you ostensibly seek to replace.
In theory, sites using the ForgeFed protocol could help displace proprietary alternatives by making it easier to collaborate between software forges. If it's ever actually implemented, that is. The ForgeFed protocol is an ActivityPub extension for allowing software forges to interact without users needing to create accounts on every forge. In a post about federation from early 2023, the Forgejo project paints a lovely picture of an open ecosystem that challenges GitHub:
[GitHub is] a textbook example of a walled garden. We want to create something similar [to GitHub], but in an open ecosystem where everything speaks the ForgeFed protocol, so you're never locked-in by which forge or code collaboration software that you use.
In practice, federation is probably years away from implementation or adoption. The post suggested that federation was likely to be included in the 1.19 release, and claimed that Forgejo intended to contribute federation upstream to Gitea. However, federation did not appear in 1.19 and the issue tracking federation implementation in Forgejo indicates much left to be done. The ForgeFed site lists only one project, called Vervis, with a working implementation, but that project does not seem ready for real-world usage just yet.
Gitea and Forgejo are trying to solve the same problem—providing a self-hosted open-source software development platform that can provide all the features developers need and want. Gitea has opted to abandon real community governance to try to sustain development by offering commercial support, with a willingness to work on top of proprietary platforms and entertain non-open offerings. Forgejo has opted for the other road, rejecting proprietary tools and trying to establish a community-led, non-profit approach to sustaining itself.
Both paths have many challenges and obstacles. Gitea and Forgejo are likely to be competing for the same users, contributors, and mind share. It will be interesting to look back in a year or three and see how successful they've been, and how much impact they've had in moving open-source developers away from proprietary platforms.
