ForgeFed is a federation protocol for software forges and code collaboration tools for the software development lifecycle and ecosystem. This includes repository hosting websites, issue trackers, code review applications, and more. ForgeFed provides a common substrate for people to create interoperable code collaboration websites and applications.
Federation means that these websites can interact, allowing the humans using them to interact too, despite being registered on different websites. For example, imagine you could host your Git repos anywhere you want, perhaps even your own personal website, but still be able to open issues and submit pull requests against other people's repos hosted elsewhere, without having to create accounts on those other websites!
Without federation, we end up having to choose between:
- Centralizing into huge profit-oriented websites, where we're powerless
- Hosting our code on a small website where we're in control and freedom but isolated from the community
With federation, all the websites now communicate with each other to form a network and community of collaboration in which we're all both free and connected. It puts the power back into our hands to create tools and collaborate in ways that are aligned with human needs, powerful and safe ways that allow us to include everyone and that don't depend on some big company's policies or some website suddenly shutting down. Let's create the future together!
How does it work?
ForgeFed is an ActivityPub extension. ActivityPub is an actor-model based protocol for federation of web services and applications.
It's a bit like e-mail, except the data sent is JSON objects (i.e. structured computer-readable data), and not only humans have inboxes where they can be contacted, but also repositories and issue trackers have inboxes through which they can be remotely and safely interacted with.
On top of ActivityPub's vocabulary (common language for websites to use for communicating) and protocol, ForgeFed defines new vocabulary terms related to repositories, commits, patches, issues, etc. and the protocol for creating and interacting with such objects across servers.
You can find more technical details in our repository.
Project status
The best way to keep track of our progress is to follow us on the Fediverse. You can also join our chat using Matrix or Libera.Chat at #forgefed.
Implementations
- Vervis is the reference implementation of ForgeFed. It serves as a demo platform for testing the protocol and new features.
- Forgejo is implementing federation.
- Pagure has an unmaintained ForgeFed plugin.