ForgeFed is a federation protocol for software forges and other web services dealing with version control repositories, project tracking and other aspects of the software development lifecycle and ecosystem. This includes repository hosting websites, issue trackers, code review management applications and more.
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:
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!
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.
ForgeFed is a protocol, i.e. instructions for how websites can communicate with each other. For forge federation to really happen, we need to code it into forge software. This is still in progress, but there are demos and prototypes you can play with if you're curious :-) See below for ways to get updates on the latest work on this.
The ForgeFed protocol specification is on the website. The website is generated from the Markdown sources found in this repository. There are links there to Matrix and IRC chat, our forum, issue tracker, list of ForgeFed implementations and their status, and more. You can also follow our progress on the fediverse.
Come talk with us :-)
There's so much variety of tasks to do! Come talk with us on the chat/forum.
More eyes going over the spec are always welcome! And feel free to open issue if you notice missing details or unclear text or have improvement suggestions or requests!
However, to maintain a manageable working environment, we do reserve the issue tracker for practical, actionable work items. If you want to talk first to achieve more clarity, we prefer you write to us on the forum or chat, and opening an issue may come later.
If you wish to join the work on the ForgeFed specification, here are some technical but important details:
Important files in this repo to know about:
resources.mdlists which team members have access to which project resources, openness and transparency are important to us!
This repo is mirrored at:
All artifacts produced by the ForgeFed work-group are freely available under the CC0 1.0 Universal (CC0 1.0) Public Domain Dedication. All contributions to the wiki must also be offered freely as such.
The ForgeFed logo was created by iko.
ForgeFed started its life on a mailing list, here's the archive.