Social Home huishoud-OS · gefedereerd · open

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.

Uitnodigingsdialoog met GFS-link geselecteerd, en een lijst met actieve links gemarkeerd als GFS, Eerdere link en Lokaal

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.
Sectie Posten via de GFS in de space-instellingen, met Vertrouwd geselecteerd en beide modi in gewone woorden uitgelegd
Posten via de GFSAlleen de eigenaar ziet deze keuze. Elke modus zegt in gewone woorden wat de GFS leert.
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.

Instellingen van een privéspace op een telefoon: Gebruik de GFS voor deze space ingeschakeld, met wat Aan en Uit elk betekenen
De schakelaar van de eigenaarAan en Uit zeggen elk wat leden krijgen en wat de GFS ziet.
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.

Onboardingstap Verbinden met de GFS: wat hij je laat doen, wat de GFS kan zien, en een niet-aangevinkt vakje om dit huishouden te verbinden
Opt-in, niet aangevinktGemaakt tegen een lokale test-GFS. In de app staat als adres gfs.social-home.io.

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.