Forgejo 9.0 shifts the self-hosted Git landscape
Forgejo 9.0 adopts the GNU GPL v3+ license to prevent proprietary software risks and simplifies its codebase by removing the go-git backend. Managed by Codeberg e.V., the project focuses on ActivityPub federation to enable interoperability across different Git installations.
Copyleft licensing ends proprietary threats
Forgejo 9.0 introduces a copyleft license that changes the project’s legal structure. This version marks the first release under the GNU General Public License version 3 or later after a year of discussions. The decision to adopt a copyleft license follows a year of discussions regarding the risk that developers might choose financial gain over the interest of the general public by turning the software proprietary, a pattern seen with Redis and Terraform. Most of the codebase remains under the MIT license, but an increasing number of files will switch to GNU GPL v3+ over time. The API swagger file stays MIT to permit interoperability without restriction. Codeberg e.V. manages the domain names and trademarks for the project. This democratic non-profit organization provides an inclusive community that oversees the development. This governance model emerged after the project forked from Gitea in December 2022. The hard fork in February 2024 followed the decision by Gitea’s lead maintainer, Lunny Xiao, to transfer trademarks and operations to a for-profit company and establish an open-core model. In response, Gitea contributors signed an open letter asking for community management of the project’s trademarks and domains. After the request for community management was rejected, the project forked. Codeberg has become the de jure lead maintainers of the project. Users can upgrade from Gitea v1.21 to Forgejo 7.0 or 8.0, while instances running Gitea v1.22 can upgrade to Forgejo 8.0 or 9.0. You should evaluate how these licensing changes impact your organization’s internal software policies.
Maintenance and backend removals
The removal of the go-git backend simplifies the codebase and reduces the footprint of the software to approximately 100MB. Developers found that go-git lacked certain features and caused repository corruption. The release also removes Couchbase support because the software does not meet free software standards. This change triggers a transparent fallback to the file provider. The multi-architecture OCI leak fix addresses a long-standing bug where dangling blobs remained in the registry after image deletions. In testing, the cleanup of several thousand blobs at Codeberg took less than 15 seconds. The software also includes a soft-quota implementation to protect servers from high disk usage. This feature checks usage before an action, though it allows a started operation to complete. The soft-quota system remains in development. New features in the 9.0 release include the ability to use an SSH key for push mirror authentication and the option to use a URL for release assets. The update also adds accessibility keyboard support for test actions and an "Assign to me" button for Pull Requests and Issues. Further improvements include support for grouping by any path for arch packages, signature support for the RPM module, and the ability to use a dropdown printed list for issue templates. The default retention for actions logs is 365 days.
| Technical Specification | Detail |
|---|---|
| Primary License | GNU GPL v3+ |
| Legacy License | MIT |
| Binary Size | ~100MB |
| Gitea Compatibility | Up to v1.22 |
| Supported Platforms | Linux, macOS |
ActivityPub and interoperability
Forgejo focuses on federation through the ActivityPub protocol. This project, known as ForgeFed, receives funding from NLnet to enable user collaboration across different installations. GitLab also works on implementing support for the ActivityPub protocol. For users migrating from Gitea, Forgejo 9.0 provides automated upgrade paths for instances running Gitea versions up to v1.22. The Fedora Linux project is replacing its Pagure forge with Forgejo. Some users moved to Codeberg or self-hosted Forgejo following the use of Copilot by GitHub. Codeberg currently hosts more than 300,000 repositories as of November 2025. The project follows a time-based release schedule that publishes a new release every three months. Developers build releases daily from the v9.0/forgejo development branch. These daily builds are deployed to a specific instance for manual verification before a patch release. Patch releases are published more frequently depending on the severity of bugs or security fixes. This schedule ensures that the software stays updated without waiting for major versions. Will the momentum of the ForgeFed implementation drive more teams away from centralized platforms?