The unrealized potential of federation September 20, 2020 on Drew DeVault's blog

There are some major problems on the internet which may seem intractable. How do we prevent centralization of our communication tools under the authority of a few, whose motivations may not align with our interests? How do we build internet-scale infrastructure without a megacorp-scale budget? Can we make our systems reliable and fault-tolerant — in the face of technical and social problems?

Federation is an idea which takes a swing at all of these problems.

Note: apparently some cryptocurrency enthusiasts are parading this article around to peddle their garbage. Cryptocurrency is the digitally woke techbro’s ponzi scheme, and is a massive waste of electricity and developer effort. Anyone who tells you anything positive about anything which is even remotely connected to cryptocurrency almost certainly has ulterior motives and you should steer clear. So hopefully that settles that. And cryptocurrency is a P2P system, anyway, NOT a federation!

The key trait of a software system which is federated is that the servers are controlled by independent, sovereign entities, and that they exist together under a common web of communication protocols and social agreements. This occupies a sort of middle ground between the centralized architecture and the peer-to-peer (or “decentralized”) architecture. Federation enjoys the advantages of both, and few of the drawbacks.

In a federated software system, groups of users are built around small, neighborly instances of servers. These are usually small servers, sporting only modest resource requirements to support their correspondingly modest userbase. Crucially, these small servers speak to one another using standard protocols, allowing users of one instance to communicate seamlessly with users of other instances. You can build a culture and shared sense of identity on your instance, but also reach out and easily connect with other instances.

The governance of a federated system then becomes distributed among many operators. Every instance has the following privileges:

  1. To set the rules which govern users of their instance
  2. To set the rules which govern who they federate with

And, because there are hundreds or even thousands of instances, the users get the privilege of choosing an instance whose rules they like, and which federates with other instances they wish to talk to. This system also makes it hard for marketing and spam to get a foothold — it optimizes for a self-governing system of human beings talking to human beings, and not for corporations to push their products.

The costs of scaling up a federation is distributed manageably among these operators. Small instances, with their modest server requirements, are often cheap enough that a sysadmin can comfortably pay for the expenses out of pocket. If not, it’s usually quite easy to solicit donations from the users to keep things running. New operators appear all the time, and the federation scales up a little bit more.

Unlike P2P systems, the federated model allows volunteer sysadmins to use their skills to expand access to the service to non-technical users, without placing the burden on those non-technical users to set up, understand, maintain, or secure servers or esoteric software. The servers are also always online and provide strong identities and authenticity guarantees — eliminating an entire class of P2P problems.

A popular up-and-coming protocol for federation is ActivityPub, but it’s not the only way to build a federated system. You’re certainly familiar with another federation which is not based on ActivityPub: email. IRC and Matrix also provide federated protocols in the instant messaging domain. Personally, I don’t like ActivityPub, but AP is not necessary to reap the benefits of federation. Many different kinds of communication systems can be designed with federation in mind, and adjust their approach to accommodate their specific needs, evident in each of these examples.

In short, federation distributes governance and cost, and can allow us to tackle challenges that we couldn’t overcome without it. The free software community needs to rally behind federation, because no one else will. For all of the reasons which make it worth doing, it is not rewarding for corporations. They would much rather build walled gardens and centralize, centralize, centralize — it’s more profitable! Democratic software which puts control into the hands of the users is something we’re going to have to take for ourselves. Viva la federación!

Have a comment on one of my posts? Start a discussion in my public inbox by sending an email to ~sircmpwn/public-inbox@lists.sr.ht [mailing list etiquette]

Articles from blogs I read Generated by openring

Announcing the 2020 Go Developer Survey

Help shape the future of Go Since 2016, thousands of Gophers around the world have helped the Go project by sharing their thoughts via our annual Go Developer Survey. Your feedback has played an enormous role in driving changes to our langu…

via The Go Programming Language Blog October 20, 2020

Status update, October 2020

Hi all, it’s been a while! I’ve been taking some time off this month: I’ve been hiking in Corsica (an island in the south of France) for 2 weeks! The path (called GR20) was very difficult but the gorgeous landscapes made it entirely worth it. :) I’ve uploaded…

via emersion October 16, 2020

What's cooking on Sourcehut? October 2020

Once again we meet to discuss the status of the ongoing SourceHut alpha, which has made progress by leaps and bounds this month. We’re joined by 521 new users this month, bringing our total up to 17,715. As always, please welcome them warmly and show our new…

via Blogs on Sourcehut October 15, 2020