Post by @sturai@masto.es
littleFedi introducing littleMesh
We've been buried in littleFedi work lately, and there's one piece I want to talk about because it's the one I'm genuinely excited about: littleMesh.
The problem is an old one. Federation assumes you have a domain, a public IP, an open port, a TLS certificate. Fine if you're renting a VPS somewhere. Not fine if your instance lives on a Raspberry Pi in your house, behind CGNAT, with an ISP that will never hand you a real IP address no matter how nicely you ask. Until now, that simply meant no federation for you. Full stop.
littleMesh gets rid of that requirement entirely, without asking you to build any of the infrastructure above.
On first run, your instance generates its own Ed25519 keypair. That key becomes your identity, no domain required, because your instance's address is derived straight from your public key, in the form .mesh.. Then your node opens an outbound connection to a "lighthouse", a small, publicly reachable relay, and registers itself there. Since the connection is outbound, it works from behind any NAT, any CGNAT, with zero port forwarding. The ISP never even notices.
When someone wants to reach you, they ask the lighthouse to open a circuit. The lighthouse introduces both sides, you call back, and it splices the connection together, but it only ever sees encrypted bytes, never your actual traffic.
Once the introduction is made, if you happen to have a reachable address after all, both sides skip the relay and talk directly. If not, the relay just keeps carrying you, quietly, in the background.
And if you already run an instance with a real domain, you can still turn on littleMesh, purely to reach mesh-only instances. Your own identity doesn't change at all.
There will be a default pair of community lighthouses, so you don't even need to find or run your own relay to get started, just say yes during littleFedi init and you're on the mesh.
The fediverse shouldn't require you to be reachable. It should reach you.
@stefano With littleMesh, will a user’s Fediverse identity be tied to the lighthouse’s domain, or could they use their own domain and switch lighthouses without changing their handle? Avoiding domain lock-in seems important for true decentralization.
@sturai@masto.es It's a mixed approach: you can have your official domain (like example.com) and still federate via mesh. But you (currently) cannot change the domain name, so if your primary use is via lighthouse, you need to stick with the lighthouse's domain (for proper federation). This is because we need to keep compatible with the other ActivityPub implementations and the domain name needs to stay static.
There are some workarounds like you can have more lighthouses and they can have the same domain (we call it suffix).
True decentralisation via total domain name swapping could be feasible but it would only work between littleFedi instances, as Mastodon and other ActivityPub implementations wouldn't support it.
Anyway, we're still trying to find a reliable workaround for this. My dream would be total decentralisation and total migration from one relay to another, like Delta Chat.
We already tested something similar and it worked, but broke federation with other AP implementations.
@hotelzululima@mastodon.social It's planned, and should not be complex to add as it's the same concept as using the mesh with direct connections (no relays involved).