Forge federation: monthly report June 2022

June 13, 2022

The integration of the Friendly Forge Format was published with the first experimental forgefriends release. The Gitea ActivityPub implementation based on go-ap is making progress. And a new version of of forgefed now includes changes proposed in the context of forgefriends.

Development

ActivityPub support in Gitea

The Gitea ActivityPub implementation started to switch from using go-fed to using go-ap and passed CI. It was extensively discussed in the associated pull request, with comments from the go-ap author. People interested in following progress are invited to subscribe to the big task list. There is however no native support for forgefed in go-ap.

The ActivityPub Useful links was improved and contributions are welcome.

The Gitea monthly meeting was held on May 27th, 2022 and among other things it was suggested that new beneficiaries to the NLnet grant can be added. Candidates already working on federation and willing to take advantage of this opportunity should step forward and get in touch with Gitea owners to know more. There is nothing confidential on the matter and in the spirit of transparency, the Gitea forum would be a good place to do so.

The remapping of federated user was discussed and various ideas suggested but no definitive conclusion reached.

Forgefriends release

A continuous delivery pipeline was implemented to publish forgefriends releases as docker images whenever a new tag is added. The v0.0.2 release was published is highly experimental but functional and includes the latest version of the Forge Friendly Format.

The weekly rebasing of forgefriends on top of the main Gitea branch took a total of one hours over the past weeks, despite a few conflicts.

Friendly Forge Format

Shortly after the reviews were implemented, gofff was heavily refactored to simplify and remove generics when their benefit was unclear.

Significant time was spent trying to figure out an elegant way to map foreign identifiers (e.g. the ID of an issue from a remote forge) with the local identifiers (e.g. the ID of the imported issue on the local forge). It was inconclusive and the general idea is that a hierarchical JSON map might be the best solution since a table is not well suited to represent a project that is made of nested components such as pull requests that has reviews that contain comments.

The gofff API was reworked to allows for it to be used as a library by the Gitea codebase, entirely replacing the existing migration code. After quite a bit of going back and forth, including adding tests to Gitea, it passed unit and integration tests. There still is room for improvement but it was additionally manually tested with:

  • gitea dump-repo and gitea restore-repo
  • the Gitea migration web form

The latest gofff has been released as part of the v0.0.2 forgefriends release and can be experimented with.

More details are available in the commit history.

Collaboration

Gitea

The UX and UI of forges is constantly evolving and Gitea is no exception. It is specially important for federation because it aims at introducing a new user experience. There were discussion related to the architecture of the Gitea UI in the Gitea pull requests , issues (which allowed to close a few of them) and the Gitea & forgefriends chat rooms.

It allowed to clarify that although the current technical components on which the Gitea UI currently stands should be replaced, it would require a significant refactoring that is beyond the capabilities of the Gitea contributors at the moment. This however does not prevent improvements from being implemented.

forgefed

After the forgefed friendly fork proposed a month ago, discussions with the owners of the project led to a revival. A videoconference is scheduled to happen June 13th, 2022 and it was agreed to record it for transparency purposes.

The concrete outcome of this revival was an updated revision of the specifications, including two pull requests created to take into account the needs of the forgefriends project. It is a minor improvement (the addition of the cloneUri element) but it is more activity than forgefed has seen in over a year.

Diversity

In the context of the CHATONS collective, a proposal to improve the inclusiveness of like minded organizations was made. The forgefriends community is constantly struggling to improve diversity, as demonstrated by content of the forum where all attempts, success and failures have been documented. A year ago contact was made with a number of organizations dedicated to diversity but it did not yield good results. But none of them was dedicated to improve the inclusiveness and diversity of small Free Software projects. Hopefully, by working with organizations and people that are in the same situation as forgefriends (at most a few years old) and with a similar community (maybe one employee, more likely a few volunteers), it will be possible to find innovative solutions.

Efforts were made to bridge the language barrier, by translating emails exchanges from French to English for the benefit of the larger forgefriends community.

Infrastructure

The forgefriends release pipeline requires more disk space than was available in the CI runner. It was resized to 50GB.

Transparency and funding

The NGI Zero Entrust call for proposal was published June 2022 and forgefriends community members are encouraged to apply. It was somewhat discussed in the chatroom and a there is interest to work on furthering the Friendly Forge Format. There is however more than one way to apply for a grant, for instance to create a User eXperience that implementors of forge federation could use to create a good User Interface, or other topics depending on the skillset of the applicant. There is an abundance of material and examples in the funding category that can be used to write a successful application.

A new Prototypefund application was made public.