Log in
Seblog.nl

#activitypub

In mijn post van vorig weekend wilde ik niet toegeven dat de requests die Mastdon naar mijn inbox stuurde helemaal niet door mijn eigen verificatie-code heen kwamen.

Het stappenplan is als volgt: Mastodon stuurt een bericht naar mijn inbox, stuurt daarbij een HTTP-header met daarin een keyId, een signature en een lijstje aan namen van headers. Ik moet dan de waardes van de HTTP-headers bij de namen zoeken, de keyId ophalen (dit is een URL) en dan verifiëren of de signature van de headers inderdaad ondertekend is met de public key uit de keyId. Omdat het cryptografie is gaf de functie alleen maar false terug, zonder enige verder info.

Na heel veel zoeken bleek dat in elk geval de deletes een simpele verklaring hadden: zodra de Actor is verwijderd is ook de public key weg, en dus valt er niets te verifyen. Dat is geen bug, zeggen ze. Ik negeer nu lekker alle Actor-deletes want ik haal toch geen profielen op. Follows en Follow-Undo's die ik als test bleef doen bleven wel falen.

Na letterlijk uren te hebben doorgebracht met specs zoeken en code lezen uit Pixelfed (PHP Laravel) en Pleroma (Elixir), bleef ik er toch echt van overtuigd dat ik alles goed berekende, aan elkaar knoopte, ophaalde, alles. Heel frustrerend.

Maar, wat bleek: de (request-target) vulde ik aan als (request-target) /inbox, terwijl ik mijn inbox op /activitypub/inbox had neergezet. De andere implementaties plakten die path dynamisch op uit de Request/conn. Daar ging 6 uur waarin ik al heel veel verder kon zijn geweest met Activitypub. Maar goed, volgend weekend weer een weekend.

Poging tot Mastodon

In navolging van velen sinds het aantreden van de nieuwe Oppervogelman ben ik vandaag bezig geweest met 'overstappen' naar Mastodon. In mijn geval betekende dat het opsnorren van mijn oude account, en een zoektocht naar de vraag: hoe werkt dat eigenlijk, Activitypub?

Als achtergrond: Mastodon's mogelijkheid om over meerdere servers heen met elkaar te kunnen praten is niet beperkt tot alleen servers die Mastodon-software draaien. Het is gebouwd op een open standaard die Activitypub heet. Ik heb vandaag een poging gedaan om die een beetje beter te begrijpen.

De volledige uitleg ga ik hier niet geven, want ik ben er ook maar pas net ingedoken. Maar interessante artikelen zijn deze van Eugen Rochko, de maker van Mastodon, en ook de followup ervan. Eugen legt hierin uit hoe je met wat statische bestanden en een beetje Ruby een paar Activitypub-dingen kan doen.

Een van die dingen heb ik toegepast: je kan dit domein nu webfingeren (jaja) en daarmee kan je mijn Activitypub Actor vinden, die weer leidt tot een Activitypub Inbox. Op het moment van schrijven is het er allemaal wel, maar ik beloof niets voor de toekomst, want ik ben er nog niet helemaal over uit of ik dit echt wil.

Het gevolg van het bovenstaande is dat je nu op @[email protected] kan zoeken in je favoriete Mastodon-instance, en dat je mij daar dan ziet verschijnen. Je kan daar naar alle waarschijnlijkheid ook op 'Follow' drukken en daar krijg ik dan een melding over. Vervolgens doe ik daar helemaal niets mee, want zo ver ben ik gewoon nog niet.

Ik heb veel horrorverhalen gehoord over Activitypub en ik moet zeggen dat ze deels waar zijn: het is inderdaad behoorlijk veel gedoe allemaal. Om een bericht te accepteren moet je dingen doen met public en private keys, waarvan ik nog steeds denk dat ik het niet helemaal goed doe.

Bovendien ontvang ik sinds ik mijn naam bij Mastodon.social heb ingevoerd allerhande berichten over verwijderde gebruikers. Ik heb nooit om een lijst van alle gebruikers gevraagd, dus ik ben ook niet per se geïnteresseerd in elke verwijderde gebruiker, maar ik ontvang er nu wel bericht over. Ik hoop niet dat elke server in de Fediverse dit gaat doen, want dan ben ik er wel snel klaar mee.

Misschien dat ik morgen nog wat dieper duik, maar zoals gezegd beloof ik niets en verwijder ik de functionaliteit misschien zelfs wel. Het idee is alleen zo vet: met zo veel meer mensen in contact staan via een dergelijk protocol.

Wat verder ook niet onvermeld moet blijven is deze geweldige post over hoe je de verschillende Activitypub specs zou moeten lezen, in welke volgorde en hoe de boel zich tot elkaar verhoudt. Maar dat dus misschien voor morgen. Tot toots.