Blog Het Social Home-team
Spaces blijven praten terwijl de host slaapt
Het GFS-pad haalt directe federatie en de mesh in. Leden van een space publiceren nu rechtstreeks via de GFS met schrijfcertificaten, kunnen in de strikte modus anoniem posten, en privéspaces krijgen een ondoorzichtig kanaal. Allemaal in Social Home 2026.10.4.
Elke space in Social Home leeft op één huishouden: zijn host. Tussen gekoppelde huishoudens was dat nooit een knelpunt. Posts reizen rechtstreeks van het ene huis naar het andere, of springen over de mesh van huishoudens die jullie allebei kennen, en de host hoeft daar nergens wakker voor te zijn.
Het pad via de GFS (Global Federation Server – de wereldwijde federatieserver) – de relay die huishoudens helpt elkaar te vinden – was anders. Het draagt een space naar huishoudens waarmee je niet gekoppeld bent: volgers van een wereldwijde space, of leden die via een link lid werden van een privéspace. Op dat pad moest de host elke post ondertekenen en doorgeven. Was de server van de host aan het herstarten, bijwerken of gewoon offline, dan viel de space stil voor iedereen die hem via de GFS bereikte.
Nu niet meer. Met Social Home 2026.10.4 publiceren leden hun eigen posts, commentaren en reacties rechtstreeks via de GFS, en hoeft de host niet meer online te zijn. Het GFS-pad werkt nu zoals directe federatie en de mesh altijd al werkten. Het kostte vijf pull requests en veel protocolwerk, en we zijn dolblij met hoe het is uitgepakt. En de GFS ziet nog steeds nooit wat iemand post.
Alles in dit bericht gaat alleen over het GFS-pad. Directe federatie van huishouden tot huishouden en de mesh zijn ongewijzigd.
Leden posten voor zichzelf
Als een huishouden schrijfrechten krijgt in een space, krijgt het daar nu een klein, ondertekend toestemmingsbriefje van de space bij. Vanaf dan post het op eigen kracht rechtstreeks via de GFS; de GFS controleert het briefje en geeft de verzegelde post door aan iedereen die de space volgt. De host zit niet meer in de keten.
De GFS ziet nog steeds niets wat hij kan lezen. Hij kan een post niet van een commentaar of een reactie onderscheiden – ze komen allemaal binnen als verzegelde enveloppen van dezelfde paar groottes. Verlies je je schrijfrechten (verwijderd, verbannen, vertrokken of beperkt tot alleen commentaar), dan stopt je briefje op datzelfde moment met werken. Huishoudens op oudere versies blijven elke post ontvangen, omdat de host blijft doorgeven zoals voorheen en ontvangers de duplicaten gewoon laten vallen.
Onder de motorkap
Het toestemmingsbriefje is een schrijfcertificaat: de
autoriteitssleutel van de space ondertekent
{space, key epoch, household key, scope} met scope write of
comment – één Ed25519-handtekening per schrijvend huishouden
per epoche, nooit één per post. Een lid voegt het certificaat
bij en publiceert rechtstreeks; de GFS verifieert het tegen de
space-sleutel die hij heeft vastgepind en stuurt het item dan
als een generiek space_item plus cijfertekst door naar de
volgers. Payloads worden opgevuld tot vaste groottebuckets (1,
4, 16, 64 en 128 KiB), zodat een reactie en een post op elkaar
lijken. Het verliezen van schrijfrechten roteert de
sleutelepoche, wat het oude certificaat ongeldig maakt.
Commentaren, reacties, bewerkingen en verwijderingen reizen op
dezelfde manier en kunnen in willekeurige volgorde aankomen: een
verwijdering die vóór haar post aankomt, wint nog steeds, en
bewerkingen worden opgelost via de door de auteur ondertekende
bewerkingstijd.
Vertrouwd of strikt: de eigenaar beslist
De eigenaar van de space kiest wat de GFS mag leren over wie er post.
- Vertrouwd (de standaard): de GFS ziet welk huishouden heeft gepost, nooit wat.
- Strikt: leden posten anoniem. De GFS kan niet zien van welk huishouden een post komt – en kan zelfs niet zien welke huishoudens mogen schrijven.

Onder de motorkap
In de strikte modus delen alle schrijvers een schrijfsleutel per epoche, afgeleid van de space-seed. Een publicatie draagt geen huishoud-id en geen huishoudhandtekening; het schrijfcertificaat reist mee in de cijfertekst. Schrijvers abonneren zich in dezelfde geschudde batch als volgers, zodat de GFS schrijvers niet van lezers kan scheiden.
Privéspaces kunnen de GFS ook gebruiken
Een privéspace raakt de GFS normaal nooit aan: zijn leden zijn huishoudens waarmee je gekoppeld bent, en die bereiken elkaar rechtstreeks of via de mesh. Nu kan de eigenaar de GFS inschakelen voor een privéspace. Hij staat standaard uit. Staat hij aan, dan kan iedereen met een GFS-link lid worden zonder eerst te koppelen, en krijgen leden die alleen via de GFS bereikbaar zijn elkaars posts terwijl de host offline is.
Ook dan leert de GFS nooit welke space hij draagt – niet zijn naam, niet zijn sleutel, niet wat erin zit. Hij leert alleen welke huishoudens meedoen.
Niemand wordt per ongeluk afgesneden. Zolang huishoudens die via een GFS-link zijn toegetreden nog in de space zitten, wordt het uitzetten van de GFS geweigerd, en de instellingen tonen precies welke huishoudens je eerst moet verwijderen. Elke uitnodigingslink toont nu zijn type: een GFS-link voor iedereen, of een Lokale link die alleen werkt voor huishoudens waarmee je al verbonden bent en nooit bij de GFS komt.
Onder de motorkap
Een privéspace met de GFS aan wordt op de relay vertegenwoordigd door een willekeurig 128-bits kanaal-id met een eigen sleutel, afgeleid met HKDF zodat hij niet terug te herleiden is naar de space-sleutel. De GFS ziet de lidhuishoudens op dat kanaal, nooit het id, de naam, de sleutel of de inhoud van de space.
De GFS leert minder dan ooit
Nu we er toch waren, hebben we de GFS over de hele linie minder laten zien:
- Een space-synchronisatie vertelt de GFS niets. Een space rechtstreeks synchroniseren met een ander huishouden gaat helemaal niet meer via de GFS, dus er is geen registratie van wie wanneer heeft gesynchroniseerd.
- De GFS leert nooit wie heeft doorgegeven. Space-events gaan naar buiten zonder enige huishoudidentiteit eraan.
- Verkeer van uitnodigingslinks wordt opgevuld. De GFS ziet een ruwe grootte, nooit de exacte.
- Storingen verliezen geen events. Hapert de GFS, dan blijft je huishouden het proberen. Berichten aan leden die even onbereikbaar zijn, worden vastgehouden en verstuurd zodra ze terug zijn.
Onder de motorkap
Directe synchronisaties vroegen de GFS vroeger om een
signaleringsnode die niemand gebruikte; die aanroep is weg. De
oude geïdentificeerde publicatie is verwijderd: space-events
gaan naar buiten als {space_id, event_type, payload} op een
sessie zonder cookies en zonder huishoud-id. Enveloppen aan leden
die via een link zijn toegetreden, worden opgevuld tot
groottebuckets. Publicaties die op een GFS-fout stuiten, worden
opnieuw geprobeerd met backoff (5 s, 30 s, 2 min, 10 min), en de
GFS houdt frames voor offline ontvangers tot 24 uur in de
wachtrij.
Verbinden tijdens de onboarding
De laatste stap van de welkomsttour biedt nu aan om je huishouden te verbinden met de Social Home GFS. Het vakje is niet aangevinkt, dus er wordt niets verstuurd tenzij je het aanvinkt. Het zegt in gewone woorden wat de GFS je laat doen en wat hij kan zien, en de app controleert dat het echt de Social Home GFS is voordat hij verbindt.

Probeer het
Dit alles zit in Social Home 2026.10.4. Oudere huishoudens blijven werken: op het GFS-pad vallen ze gewoon terug op de host tot ze bijwerken, en directe federatie blijft hoe dan ook onaangeroerd. Benieuwd hoe de GFS erin past? Lees Wereldwijde spaces, of draai zelf een GFS.
