I missed it completely. That was indeed a little short. Good luck!
[ForgeFlux] NLnet NGI0 August 1, 2023
Your name (max. 100 characters)
Project name (max. 100 characters)
Abstract: Can you explain the whole project and its expected outcome(s). (max: 1200 characters)
Federation in Gitea is underway but Gitea is but one forge software. Most projects are concentrated either on GitHub, or the main GitLab instance. While federation in Gitea is useful, popular forge instances like github.com and gitlab.com will be unreachable from the federated forge network.
ForgeFlux aims to implement federation external to the forge software, by way of the forge’s HTTP APIs. With ForgeFlux’s adapter, federation can be implemented for any forge software (GitHub, GitLab, SourceHut, etc.) or a combination of softwares that represent a forge ecosystem (cgit+mailman+jira, Gitea+Vijunja).
ForgeFlux aims to reach the majority of developers who are behind walled gardens. It will give them an easy way to interact with the larger, free software forge network while also providing an easy way to migrate away. In essense, it gives developers on GitHub access to the federated forge network and developers on other forge implementations access to the vast developer tools ecosystem built around GitHub.
Have you been involved with projects or organisations relevant to this project before? And if so, can you tell us a bit about your contributions?
I have ported an older version of forgefriends’ F3 file format. I have been involved in a managerial capacity in the ForgeFed project and I am also part of the Gitea federation grant.
I have been working on the ForgeFlux project for the past 1.5 years. We built Starchart (https://starchart.forgeflux.org), a search engine for the federated forge network to improve project visibility for non-GitHub software forges.
We also have a partially complete federation adapter that implements webfinger and profile discovery for GitHub and Gitea/Forgejo profiles.
Explain what the requested budget will be used for?
Does the project have other funding sources, both past and present?
The budget will be used to pay the my salary at €20/h
Compare your own project with existing or historical efforts.
Gitea is implementing federation natively, it will enable all Gitea instances to federate.
Forgefriends is implementing a federation proxy, similar to ForgeFlux. They are implementing proxy capabilities on a fork of Forgejo. Enabling federation on a different software forge using their approach will require forgefriends developers to become familiar with the software forge’s codebase and make modifications to it. ForgeFlux takes a more versatile approach: it only requires familiarity with the forge implementation’s HTTP API.
What are significant technical challenges you expect to solve during the project, if any?)
Authentication and authorization: ForgeFlux will be controlling a service actor (bot account) on the forge it is adding federation capabilities. Creating new accounts or temporary new accounts to represent federating users or repositories is not an option. So we have to figure out ways to represent activities of multiple federating actors through the same service actor, while also guarding access to protected resources.
User interface: Since temporary views to represent federating users isn’t possible, we shall have to resort to replicating repositories on the native forge and adding textual clues to comments and other activities to indicate authorship.
Rate limiting: GitHub and GitLab have rate limits. Representing an entire network through one service actor will run us into rate limits.
Moderation: ForgeFlux can be abused to spam forge instances. Since current software forge implementations do not have federated moderation tools, a ban on a ForgeFlux service actor could cut off the entire forge network of the banning forge instance. More fine-grained moderation tools must be implemented within ForgeFlux and users must be empowered to use them before blocking and reporting ForgeFlux service actors.
Describe the ecosystem of the project, and how you will engage with relevant actors and promote the outcomes?
We will first build against Forgejo (forgejo.org), since they are a strong supporter of forge federation. We shall be using forgefriends’ F3 (f3.forgefriends.org) under the hood.
In addition we will consider a strong integration with the ForgeFed specification. There are challenges to integrate with ForgeFlux, but also opportunities to improve ForgeFed based on our uses cases and feedback.
We’ll work closely with the Social Coding Movement (https://coding.social) to improve the development workflows offered by ForgeFlux.
We shall also work with the Solidground project (https://solidground.work) to integrate with their platform and grant access to the development tooling that come with it. Solidground just passed a R&I phase and will be an early adopter of WebAssembly-on-the-server to facilitate the polyglot plugin mechanism and hexagonal architecture of their Groundwork integration platform and found the existing project of wasmCloud (https://wasmcloud.com/) to build on top of.