Forgejo monthly update - May 2024

The monthly report is meant to provide a good overview of what has changed in Forgejo in the past month. If you would like to help, please get in touch in the chatroom or participate in the ongoing discussions.

A UI team was created by Forgejo contributors who have been at work for months on the necessary backports of bug fixes to the Forgejo v7.0 stable branch. More ambitious discussions started on the long term strategies to refactor the codebase and improve the User eXperience.

Call for help

Forgejo needs help to triage bug reports and feature requests. The growing backlog is not a new problem and is actively worked on. If you ever create a new issue, take a moment of your time to also look at a few others and help them get to the finish line.

  • For a bug fix, reading the description and trying to reproduce it manually to confirm it is still relevant will bring them closer to a resolution. Either because the developer knows it is worth their time or because it cannot be reproduced and is already fixed.

  • For a feature request, read the Needs and benefits section and maybe ask the author to clarify. If you are convinced, add a short comment in the first person to describe how it would help you.

UI team

The Forgejo UI discussions led to the creation of a UI team and four candidates (1, 2, 3, 4) are lined up to be the initial members to bootstrap it.

A dedicated Matrix channel was created and added to the Forgejo Matrix space.

In addition to discussions regarding future developments, the team took care of the UI related features and bug fixes, both for the development branch and for the stable branch.

Code

Features

Notable improvements and bug fixes:

Read more in the pull requests.

Improving tests

A discussion started to improve the tests in the Forgejo codebase. Initial ideas cover the following:

  • Allow integration tests outside of the tests/integration folder
  • Prevent having to store binary blobs within the codebase
  • Make the tests faster
  • Document the testing tweaks
  • Add test coverage
  • Add performance testing
  • Make the playwright tests easier to use

End to end tests

The end to end test suite race conditions (in the tests of push and scheduled actions) were fixed. It still suffers from transient environmental failures (it relies or a large number of external resources), but it happens less than once a week. In some cases it can be fixed by adding a retry.

A test for the pull request automerge features was added.

Deprecating go-git

Discussions to deprecate go-git received strong support. If Forgejo wants to support go-git, every git Feature also needs to be implemented in go-git. For example: setting git notes in the Web UI is currently not possible in go-git.

The benefits of go-git may not be worth the effort. Git is already preinstalled on many distributions. If Forgejo is installed using Docker or a package manager, Git will already be installed with it.

Infrastructure

A new machine was added to the Forgejo infrastructure. The capacity provisioned last year proved to be enough to sustain the increased activity since early 2024, with no slowdown or space restrictions. Even if the number of Forgejo contributors do not increase this year, testing federated features will require significantly more resources, for instance to launch a GitLab instance with ActivityPub extensions enabled.

The forgefriends hosting request is partially complete. The https://code.forgejo.org/forgefriends/ and https://code.forgejo.org/f3/ organizations were created and allocated Forgejo Actions runners. The F3 organization was migrated from the GitLab instance. The F3 forum was migrated to a dedicated LXC container.

A semi-manual static page hosting service dedicated to code.forgejo.org was created. It is deployed to host the F3 and forgefriends websites and could be used as an alternative to Uberspace for https://forgejo.org.

Releases

Forgejo v7.0.2 and Forgejo v7.0.3 (fixing vulnerabilities) were released.

They both rely on the release note files that are created at the same time as the pull requests.

After a commit made its way to the v7.0 branch and was reverted at the last minute to avoid regression, it was proposed to require testing for all non-trivial commits cherry-picked from Gitea into the stable branch.

Dependency Management

Tooling

The cherry-picking tool developed to keep track of commits cherry-picked from related repositories is used for:

OCI mirror

Forgejo maintains a set of OCI images mirrors for the benefit of the CI, so that it is not rate limited by docker.io. They were previously manually maintained and a weekly scheduled workflow was created to take care of it automatically.

It was initially held back because of a long standing bug preventing the use of docker buildx imagetools create to mirror multi-architecture OCI images. It was worked around using skopeo which provides the same feature but does not run into the Forgejo bug that would prevent it to work.

Helm chart

The Forgejo helm chart had one major update.

The Forgejo helm chart moved from forgejo-contrib to a dedicated organization.

A Forgejo helm team was proposed, with two potential members. A dedicated Matrix channel was created and added to the Forgejo Matrix space.

Localization

3 new team members were onboarded: [1], [2]. 5 batches of updates were merged containing total of 515 new translations and 1122 improvements. Traditional Chinese have seen a particularly high amount of fixes and improvements this month from a new team member. All translation changes got backported to according point releases of Forgejo v7.0, which is expected to continue receiving translation improvements.

There are still countless improvements to be made for many languages and you can help to improve the localization too. Learn how.

Federation

The pull request to implement federated repository stars was split into smaller ones, five of which were merged in the development branch.

Read more in the May 2024 reports (1, 2).

Governance

Sustainability

The discussion started on Forgejo durability in the next 10 years led to a grant proposal submitted 16 May for the Free and Open Source Software Sustainability Fund.

A reply was expected for the NLnet grant application submitted 1 April but was delayed because of the large number of applicants. The arrangements made to ensure the two grants do not overlap in time were changed. Because of this delay and on condition that an extension can be negotiated, avoidance of an overlap may no longer be necessary.

We Forge

Forgejo is a community of people who contribute in an inclusive environment. We forge on an equal footing, by reporting a bug, voicing an idea in the chatroom or implementing a new feature. The following list of contributors is meant to reflect this diversity and acknowledge all contributions since the last monthly report was published. If you are missing, please ask for an update.

A minority of Forgejo contributors earn a living by implementing the roadmap co-created by the Forgejo community, see the sustainability repository for the details.