Skip to main content

Federation

Federation means many independent servers that talk to each other. Like email, but for everything.

The Concept

When you send an email from Gmail to someone on Yahoo, it just works. That's federation — independent servers using shared protocols to communicate.

The opposite is a silo: Facebook messages only go to Facebook. Twitter posts stay on Twitter. Each platform is an island.

Federation creates networks without central control:

CentralizedFederated
One point of failureNo single point of failure
One set of rulesMany communities, one protocol
Company owns dataUsers own data

Alice can follow Bob and Carol even though they're on different servers.

Why It Matters

CentralizedFederated
One company controls everythingNo single point of control
Company fails, network diesIndividual servers can come and go
Terms set by one entityEach server sets its own rules
Censorship is easyCensorship is hard
Scaling is expensiveCosts are distributed
Lock-in by designInteroperability by design
Single privacy policyChoose your operator

Federation Models

Different protocols approach federation differently:

Push Model (ActivityPub)

Server A creates content and pushes to followers' servers. Each server stores a copy.

Discovery: WebFinger (@user@server.com)

Pull Model (Nostr)

Users publish to relays, followers pull from any relay that has the content.

Discovery: NIP-05 (user@example.com → pubkey)

Hybrid Model (Solid)

Pods store user data, apps fetch on demand with access control.

Discovery: WebID, Type Indexes

Federation in SAND

ActivityPub

ActivityPub federates social interactions. It powers the "Fediverse" — Mastodon, Pixelfed, PeerTube, and thousands of other servers that all interoperate.

AspectImplementation
Message deliveryServer-to-server push via HTTP POST
Identity@user@domain.tld
DiscoveryWebFinger
AuthorizationHTTP Signatures
ContentActor inbox receives Activities

When you post on a Mastodon server, people on other Mastodon servers, Pixelfed, or any ActivityPub-compatible service can see it and interact.

Solid

Solid pods federate data storage. Your pod talks to other pods. Apps work across pods.

AspectImplementation
Data accessClient fetches from multiple pods
IdentityWebID (https://pod.example/profile#me)
AuthorizationWAC or ACP access control
DiscoveryType Indexes, solid:publicTypeIndex
AuthenticationSolid-OIDC

Nostr

Nostr takes a different approach: relays are dumb pipes. Your client connects to multiple relays, and your followers' clients find your messages wherever they're stored. It's federation through redundancy.

AspectImplementation
Message deliveryClient publishes to multiple relays
IdentityPublic key (npub...)
DiscoveryNIP-05, NIP-65 relay lists
AuthorizationSigned events
RedundancySame event on many relays

Comparing Federation Approaches

FeatureActivityPubNostrSolid
Server roleActive (processes)Passive (stores)Active (controls)
Identity tied toServerKeyPod (but portable)
MigrationHardEasyMedium
ModerationServer-levelClient-levelOwner-level
OfflineServer dependentCan cache locallyLocal-first possible

Trust and Moderation

Federation doesn't mean anything goes. Each server can:

  • Set its own rules and terms
  • Block other servers
  • Moderate its own users
  • Choose which content to relay

This creates a marketplace of communities with different norms, while still allowing communication across boundaries.

Moderation Patterns

ProtocolModeration Tools
ActivityPubServer blocks (defederation), user blocks/mutes, content warnings, allowlists/blocklists
NostrRelay policies, client-side filtering, mute lists (NIP-51), Web of Trust, content labels (NIP-32)
SolidPod-level access control (WAC/ACP), user grants/revokes, app-level filtering

Trade-offs

Federation adds complexity:

ChallengeDescriptionSolutions
DiscoveryHow do you find people across servers?WebFinger, NIP-05, Type Indexes
ConsistencyWhat happens when messages arrive out of order?Timestamps, vector clocks, event references
IdentityHow do you prove you're the same person across servers?DIDs, WebID, keypairs
SpamOpen networks attract abuseProof of work, paid relays, reputation systems
ModerationWho decides what's acceptable?Local rules, client filters, community norms

Federation Economics

Who pays for the infrastructure?

ProtocolFunding Models
ActivityPubDonations, hosting fees ($5-20/mo), volunteer operators, some paid instances
NostrFree public relays, paid relays ($5-50/year), self-hosted, specialized relays
SolidFree tiers, paid hosting, self-hosted, enterprise offerings

Bridging Federated Networks

Different federated networks can be connected:

BridgeConnectsHow
MostrNostr ↔ FediverseTranslates events
Bridgy FedIndieWeb ↔ Fediverse ↔ BlueskyProtocol conversion
DittoActivityPub + NostrDual-protocol server
ConduitMatrix ↔ FediverseMatrix server with bridges

Matrix, while not part of SAND, can bridge to SAND protocols. Servers like Conduit or Synapse support application services that connect Matrix rooms to ActivityPub actors or relay messages to Nostr.

Real-World Example

How a message travels in ActivityPub federation:

Learn More