F3 Monthly update - June 2024


The reference implementation v3.4.0 was published and all future versions will now comply with semantic versioning. It supports the v2 major release of the F3 specifications.


Stable version of the reference implementation

The first stable release of the F3 reference implementation was published. It supports the v2 major release of the F3 schemas which is in feature freeze. It provides the following:

The Go package is published at code.forgejo.org/f3.

And example of how this package can be used is found in the Forgejo internal driver for F3.

Mocking compliance checks

Maintaining tests for a growing matrix of forges and versions requires some kind of optimization otherwise it becomes prohibitively expensive over time.

A package was implemented to integrate the tests with Hoverfly. Ideally it could run at the beginning of the tests, capture all HTTP transactions while interacting with live instances and store them. And when running again it could use those recorded transactions.

In practice there are a few roadblocks:

  • Forge REST API are not always synchronous.
  • The stateful mode of Hoverfly is limited.
  • Git transactions over HTTP are not easily reproducible.

Until they are resolved, the tests need to rely on live instances for compliance. It is not a blocker but it is using significantly more resources.

Wikidata updates

The script to build the Forge matrix out of https://wikidata.org needed attention because of an incident of the indexing backend.

The F3 wikidata bot test suite caught the problem and it has since been resolved.


The hardware supporting https://code.forgejo.org/f3/ is shared with the Forgejo project and was upgraded and can cope with the need of the CI. Running multiple versions of Heptapod, GitLab, Forgejo or Gitea would have not been possible on the old hardware. Specially because GitLab requires 8MB of RAM and takes almost 3 minutes to boot.

The deployment was delayed for a few days because of a defective line of product. The Forgejo devops team discovered the issue that was later confirmed by Hetzner and found a workaround.

Scripts to setup end-to-end tests were contributed to the Forgejo test suite. It shares the maintenance burden and was added as a dependency of the reference implementation test suite.

Plans for the next month

  • Publish the first release of the specifications
  • Improve the coverage Heptapod driver
  • Use the F3 CLI, as a standalone tool or embedded in Forgejo, to continue the debug loop that integrates user feedback
  • Auditing the features published by the two dominant software forges