Forgejo v8.0 is available

Forgejo v8.0 was released 30 July 2024. You will find a short selection of the changes it introduces below and in a complete list in the release notes. It is released the same day as Forgejo v7.0.6 to address licensing issues impacting frontend features (APA citation format, mermaid ELK rendering and the display of contributor graphs). Read more in the dedicated blog post.

It comes with a number of new features, as usual. But the most impactful changes are of a different nature: increased stability, less random UI modifications and almost no breaking changes.

  • A newly created UI team engaged in a different approach and can be credited for a drastic reduction in random User Interface changes in this release.
  • A dependency dashboard is now used to carefully watch over each of them, with a direct impact on stability and security.
  • The breaking changes were reduced to a minimum because there is now an increased focus on backward compatibility.

If stability is more important than new features, consider using Forgejo v7.0 instead: it is a Long Term Support release that will receive bug fixes until 16 July 2025. Forgejo v8.0 will be supported until 16 October 2024, when Forgejo v9.0 is published.

A dedicated test instance is available to try it out. Before upgrading it is strongly recommended to make a full backup as explained in the upgrade guide and carefully read all breaking changes from the release notes. If in doubt, do not hesitate to ask for help on the Fediverse, or in the chat room.

New features

Read more in the Forgejo v8.0.0 release notes.

A new approach to UI and UX

The first user visible benefit of the new approach is a drastic reduction of the seemingly random User Interface changes that were frequently found in previous releases.

A gentle way of describing Forgejo User eXperience is that it is an acquired taste: it grew over the years, driven by the inspiration of the person with the keyboard in their hand. Once implemented it almost never changed. A user who started with Forgejo in 2022 can only see minor changes in 2024 and not all of them make intuitive sense. The solution to this problem is simple and was identified early on: User Research. But only in the making of Forgejo v8.0 did it get some momentum.

The time and energy of Forgejo contributors with the skills and desire to improve the User eXperience went in four equally important directions:

In a nutshell, Forgejo’s goal is now to design its User eXperience based on what user needs, as demonstrated by observations, rather than what they think that they want.

Removal of Microsoft SQL Server support

When Forgejo started almost two years ago, it focused on supporting and documenting a subset of the features present in the codebase. It made a implicit promise to its users to produce quality releases where new features could be added and bug fixed. It is a simple problem to solve as long as there are two necessary ingredients:

  • Contributors with the knowledge to diagnose a problem
  • Automated tests guarding the code against regressions when a new feature or a bug fix is merged in the codebase

Microsoft SQL Server never met these conditions and discussions began early 2024 to address the problem. The short version is that there is no reported use of a Forgejo instance running Microsoft SQL Server currently, and the decision was made to remove it from the codebase.

An alternative would have been to leave it, to give a chance to someone with the right skills to step up and contribute their knowledge to support Microsoft SQL Server. But that would not solve the other problem: because Microsoft SQL Server is not Free Software, it cannot be integrated in the automated tests. That would be adding a non Free Software dependency to Forgejo, which goes against its core values.

Because Forgejo is still young and none of its users rely on Microsoft SQL Server support, it can be dropped without inconveniencing anyone. As Forgejo’s popularity grows, keeping the feature in the codebase would increase the probability that users rely on Microsoft SQL Server. It would then be a difficult situation for Forgejo and it is best to avoid that trap.

See also the related section on standard formats and protocols in the June 2024 report.

Less breaking changes

A special effort was made to reduce the breaking changes of this release to a minimum. For instance it would have been easier to implement this improvement to the rootless OCI image as a breaking change. But significant time was spent to figure out a way to make it backward compatible. Another example is the new default for self-registration that only applies to new installations to not require a manual intervention to change the settings.

Improved stability

Forgejo directly depends on hundreds of software projects: OCI images are based on Alpine Linux, markdown rendering uses goldmark, TLS certificates are obtained using certmagic and the list goes on, ranging from CI tooling that only matter to Forgejo developers to user interface components such as the editor used to write issue comments.

Watching over those dependencies was an unsolved problem:

  • bugs (or even security) fixes were not applied because no contributor had the time or the inclination to watch over them manually
  • batch upgrades, dozens of direct dependencies at a time, occasionally happened without actually reading through the release notes of each of them, let alone evaluate the risk of regression or the new features they include

It was resolved in v8.0 with specific tooling and a dependency dashboard updated hourly by renovate and watched over daily by Forgejo contributors. When a new release of a dependency is published, it is immediately proposed for review and the decision to upgrade is made in accordance to the new dependency management process. The tooling made it possible and sustainable to observe the evolution of hundred of dependencies.

The immediate benefits are:

  • more stability as batch upgrades no longer happen with the associated risk of regression
  • bugs and security fixes found in dependencies are applied without undue delay, and backported to stable releases

Gitea compatibility

Forgejo v8.0 was manually tested to be compatible with Gitea v1.22. Users reported successful upgrades of an instance of Gitea v1.22 to the development version of Forgejo v8.0. In addition, automated upgrade tests from Gitea v1.22 to Forgejo v8.0 were implemented and are run prior to each Forgejo release.

  • An instance running Gitea versions up to v1.21 can be upgraded to Forgejo v7.0 or v8.0
  • An instance running Gitea v1.22 can be upgraded to Forgejo v8.0

Read more about Gitea compatibility in the blog post explaining the hard fork that happened in February 2024.

Release schedule and Long Term Support

The time based release schedule was established to publish a release every three months. Patch releases will be published more frequently, depending on the severity of the bug or security fixes they contain.

DateVersionRelease dateEnd Of Life
2023 Q41.21.1-026 November 202317 July 2024
2024 Q17.0.023 April 202416 July 2025
2024 Q28.0.030 July 202416 October 2024
2024 Q39.0.016 October 202415 January 2025

8.0-test daily releases

Releases are built daily from the latest changes found in the v8.0/forgejo development branch. They are deployed to the https://v8.next.forgejo.org instance for manual verification in case a bug fix is of particular interest ahead of the next patch release. It can also be installed locally with:

Their name stays the same but they are replaced by a new build every day.

Localization

The localization team brought a batch of translations weekly, from the Weblate project. A particular effort was made to backport all of them to Forgejo v7.0.

The work on refactoring base localization to improve User eXperience and translatability was also ported to v7.0, when there was no risk of regressions.

Anyone is welcome to participate in improving translation for their language as well as the English base.

Federation

Does Forgejo support federation? Not yet. Was there progress? Yes.

Building blocks for both ActivityPub federation and data portability improvements were merged into the codebase. They are not yet used for any user visible feature but they are a stepping stone. Their implementation was made significantly easier by the hard fork because they can rely on a codebase that is better tested.

The ActivityPub based communication between two Forgejo instances is used by a new internal test scenario where adding a star to a repository on one instance also adds a star on a federated repository on the other instance.

Read more about federation and data portability in the June 2024 Forgejo monthly update.

Get Forgejo v8.0

See the download page for instructions on how to install Forgejo, and read the release notes for more information.

Upgrading

Carefully read the breaking changes section of the release notes.

The actual upgrade process is as simple as replacing the binary or container image with the corresponding Forgejo binary or container image. If you’re using the container images, you can use the 8.0 tag to stay up to date with the latest 8.0.Y patch release automatically.

Make sure to check the Forgejo upgrade documentation for recommendations on how to properly backup your instance before the upgrade.

Contribute to Forgejo

If you have any feedback or suggestions for Forgejo do not hold back, it is also your project. Open an issue in the issue tracker for feature requests or bug reports, reach out on the Fediverse, or drop into the Matrix space (main chat room) and say hi!

Forgejo is proud to be funded transparently. Since a few days, we additionally accept donations from our users through our Forgejo Liberapay team. If you appreciate Forgejo, consider setting up a donation to help going forward. Liberapay is a French non-profit dedicated to crowdfunding with predictable income, allowing transfers via multiple payment options and providers with a comparably low fee. It was already possible to donate to Codeberg e.V. (you can still do in case the Liberapay option does not work out for you), and part of the funding was used to compensate for work on Forgejo. However, the Liberapay team now allows for money to go directly to developers without a round-trip to Codeberg.

Additionally, Liberapay allows for a steady and reliable funding stream next to other options, a crucial aspect for our project. The distribution of funds through Liberapay is transparently controlled using our decision-making process, and Forgejo contributors are encouraged to consider applying to benefit from this funding opportunity. Thank you for using Forgejo and considering a donation, in case your financial situation allows you to.

Forgejo Upgrade Party and Get-Together

Let’s upgrade together!

The Forgejo v8 release is available. We are looking forward to meeting with you via OpenTalk, providing a space for admins and developers to assist each other. We are excited to learn from your setups and the challenges you encounter to further improve Forgejo in the future.

Read the full invite on the Codeberg Event Calendar!