Federated development and federated forges

I’m very new federation. Over the years I heard rumors that it was good without understanding why and how. I ran a mastodon instance for a few years but did not use it much: I’m a developer and not much of a microblogger (reading or writing). Beginning of last year I started using https://peer.tube/ and was happy to see it work for real but did not use any of its federated features. But when https://joinmobilizon.org/ was announced I thought it made a lot of sense to organize events in a federated way: smart move. And all along I thought I should read about fediverse but I still have no idea what it means (really).

In my mind federation was an idea in the same category as the bloom filter data structure. I would learn about it when and if I had a need for it. But in the meantime I had more important things to do: I was working on online services. Until something clicked a few months ago and I understood that federation belongs to a different category. I would be unable to explain what clicked and why. And if I read the introduction of the Fediverse Futures Visions & dreams correctly, I may not be the only one. The best I could come up is something rather obscure when explaining it to friends: “Dry water does not make sense, it’s against the law of physics. In the same way proprietary software goes against the nature of software: it should all be free. Online services should all be federated, it is in their DNA, from storage to microblogging.” This is a little childish and reflects my enthusiasm and state of confusion more than anything.

From the day I understood online services should be federated, I started looking back at the software projects I was involved in under a different light.

Ceph is a distributed storage system and I spent years working on its code, discovering how it uses consensus decision making to be more resilient. An unfinished idea emerged to make it even more resilient with federation which had some similarities with Porta & Bella. I thought it might be interesting to implement something similar to what @cwebber described because it could be applied to projects other than virtual worlds. And after a few weeks I dropped the idea: I was out of my depths.

Late December 2020, I started looking for work and found myself, once again, at a disadvantage because I boycott GitHub. And thought this would not be a problem if forges were federated: I would be free to use whatever forge I prefer and still be able to contribute to software projects hosted elsewhere. I asked around and discovered that although other people wanted that to happen, nothing was usable just yet. Since that’s something that would help me exist as a free software developer, it would make sense for me to spend time and make it happen. Maybe not full time because no company would want to hire me to do just that. But at least part time and build something sustainable in the long run.

Still quite ignorant about the technical details of ActivityPub and forgefed, I spent time to describe what I want and why I think forge federation makes sense for everyone. Maybe a grant will allow me to work on the implementation but even if that does not happen, I’ll hack something together to move forward. I really need this to reconnect with free software projects. Not all of them accept mail patches like mastodon does and it’s a pain to be excluded.

While thinking about forge federation I came to understand that free software development needs federation (maybe proprietary software needs it too but I don’t care about it). It’s not just me being excluded from GitHub hosted projects that creates a need for federation. When my software suffers from a bug in a dependency such as wazuh, there should be a way for my software project to follow the relevant wazuh bug instead of doing that cross reference manually. Every free software developer has the same use case and although it could be solved by implementing an ad-hoc feature, it would probably make more sense to implement federation natively in every forge.

This is where I stand at the moment, still trying to figure out in which direction to go and reading about the technical details to hack together something I could use to comment on an issue on a project trapped into GitHub while using on my own GitLab instance. Chances are I’ll go in the wrong direction and my hack will be a dead end. But I’ll give it a try and I hope many other will do the same and someone, soon, will succeed.