ActivityPub als interactielaag voor een blog?

(Betteridge’s law of headlines)

Vroeger kon je comments plaatsen op dit blog, maar sinds ik de backend heb herschreven naar een enkel PHP bestand van grofweg 300 regels, bestaan comments niet meer als visueel en interactief element. Ze bestaan alleen nog in de database, als een soort digitaal staartbotje. Dat is toch wel jammer.

Dat er behoefte is aan comments, blijkt uit meerdere dingen:

  1. Ik wil ze gewoon want ze zijn leuk
  2. Ik krijg soms een mailtje RE: een post

Maar er waren meerdere punten waar ik tegen aanliep:

  1. Ik ben ook naar een VPS overgestapt waar mail niet inbegrepen was. Ik kon dus niet makkelijk notificaties sturen als er was gereageerd op een comment.
  2. Spam blijft een ding

Nu is Mastodon de laatste tijd tamelijk hip, en ik heb al eens eerder geëxperimenteerd met het onderliggende ActivityPub protocol (Wat ik vanaf nu ga afkorten als “AP”). Kan ik Mastodon instances het vervelende werk van user authentication en comments laten doen, en tegelijkertijd mijn blog volgbaar maken, en elke post naadloos integreren op de feed van mijn volgers, die allemaal op hun eigen willekeurige en anarchistische Mastodon instances herbergen?

Ofwel, in de vorm van een verlanglijst:

  1. Posts delen met mensen die het boeit
  2. Publieke reacties op de post, vindbaar onder de post zelf
  3. Zo min mogelijk spam
  4. Geen hoofdpijn

Mijn eerste idee was om mijn blog als AP server op te zetten met 1 gebruiker (mijzelf) die dan posts maakt, en daar dan de benodigde AP tierelantijntjes aan toe te voegen, d.w.z. een outbox en inbox voor die enkele “Michael” gebruiker. Mensen op een ander AP platform zoals mastodon.nl zouden dan “@michael@xmdr.nl” kunnen volgen, alle blogposts direct op hun eigen feed op mastodon.nl zien, en daarop kunnen reageren. Die reacties krijg ik dan d.m.v. AP in de Michael inbox en kan ik lokaal opslaan zodat ze ook op xmdr.nl te zien zijn. Simpel genoeg, toch? Nee!

ActivityPub is een Twitter

AP is ontworpen voor korte content. Een “post” wordt letterlijk een “Note” genoemd. Je hebt wel “Article”, maar dat snapt Mastodon niet, die snapt alleen Notes. Oké, dus mijn posts kunnen nooit naadloos op een Mastodon feed komen, maar je kan nog steeds een “Note” maken met daarin een link naar mijn Post, en daar zou je nog steeds op kunnen commenten. Het is totaal niet elegant, maar het zou werken. Aan de andere kant, sommige dingen verwacht ik ook nooit op een feed te kunnen vertonen: misschien maak ik wel een hele fancy blogpost met allerlei javascript/canvas interactieve speeltjes, zoals je tegenkomt op de site van Bartosz Ciechanowski. Dat gaat natuurlijk gewoon nooit overkomen. Dus ach, misschien is het ook beter de link naar- en niet de directe inhoud zelf met AP te publiceren.

Korte omleiding: mailto: en de federatie van E-mail

Als je op een mailto:target_account@target_server URL klikt, dan opent er een dialoog om met jouw e-mail client (outlook) een mail te sturen met jouw e-mailaccount (bitchboy33@) vanaf jouw e-mailserver (hotmail.com) naar mijn e-mail account (xmdr@) op mijn e-mailserver (protonmail.com), die ik vervolgens kan lezen met mijn e-mailclient (thunderbird). Hoera federatie!

ActivityPub heeft dus geen follow:

Zoiets bestaat er dus niet voor AP. Er is bijvoorbeeld geen followme:@drollikker@poep.nl die ervoor zorgt dat jouw AP account op jouw AP instance (bvb @bitchboy33@mastodon.nl) mijn AP account op mijn AP instance (@drollikker@poep.nl dus) gaat volgen. Die naadloze integratie kan gewoon niet, het is er (nog) niet. Als je dus “lees mijn nieuwe blogpost” berichten op jouw feed wil zien, moet je moeilijk handmatig dingen in gaan stellen. Dat werkt kut en dus gaat niemand de moeite nemen. Er is te veel frictie zoals UX designers het zouden zeggen.

Hier, ChatGPT legt het uit:

Ik ben een mastodon.nl gebruiker. Hoe volg ik een Actor (gebruiker) op een andere ActivityPub (niet mastodon) server?

Michael D. Roeleveld

Als een mastodon.nl gebruiker kun je een gebruiker op een andere ActivityPub-server volgen door het volgende proces te volgen:

  1. Zoek de gebruiker op de andere ActivityPub-server op wie je wilt volgen. Deze gebruiker moet een profiel hebben op een server die ActivityPub ondersteunt, zoals een andere Mastodon-instantie, Pleroma, Pixelfed, PeerTube, etc.
  2. Als je het profiel van de gebruiker hebt gevonden, kopieer dan de URL van hun profiel. Meestal heeft het profiel van een gebruiker op een ActivityPub-server een URL die er ongeveer zo uitziet: https://example.com/@gebruikersnaam.
  3. Ga terug naar je mastodon.nl account en zoek naar de zoekbalk of het veld waar je nieuwe gebruikers kunt toevoegen om te volgen. Dit kan op verschillende plaatsen zijn, afhankelijk van de specifieke Mastodon-client die je gebruikt, maar meestal kun je een zoekopdracht uitvoeren door op het vergrootglaspictogram te klikken of door naar een “Ontdek” of “Profielen” sectie te gaan.
  4. Plak de URL van het profiel van de gebruiker op de andere ActivityPub-server in het zoekveld op je mastodon.nl account.
  5. Klik op de knop om de gebruiker te volgen. Dit kan verschillen per Mastodon-client, maar meestal is het een knop met de tekst “Volgen” of een soortgelijk label.

Nadat je deze stappen hebt gevolgd, zou je nu de gebruiker van de andere ActivityPub-server moeten volgen, en hun openbare berichten zouden op je mastodon.nl tijdlijn moeten verschijnen.

Houd er rekening mee dat sommige ActivityPub-servers mogelijk geen federatie (interactie met gebruikers op andere servers) toestaan, dus het kan zijn dat je geen interactie kunt hebben met gebruikers op servers die geen federatie toestaan.

ChatGPT

Check die laatste alinea dan! Al dat werk en dan nog kan het zijn dat het niet echt werkt. Sjongejonge wat een flop.

ActivityPub is ingewikkeld en niet universeel

Elke “grote” social medium wat op AP gebouwd is lijkt weer een ander dialect van AP erop na te houden. Het is allemaal niet universeel compatibel met elkaar. Dit is vrij duidelijk een probleem. Daarnaast is het lastig om überhaupt een prototype (ofwel Minimum Viable Product (ofwel simplest possible thing that works)) te maken voor een AP-platform. Ik ga echter niet verder op deze punten in omdat het neerkomt op vrij technisch geneuzel wat niet algemeen toepasbaar noch interessant is, en deze post alweer lang genoeg aan het worden is.

Conclusie

Het principe is er: wat een AP integratie op dit moment zou bieden zijn dus comments en ik-heb-iets-geschreven-notificaties (voor mensen met b.v.b. een Mastodon account, voor de rest niet). Maar om dan dit blog te volgen is vervelend veel werk, en ongeveer evenveel stappen als een RSS reader instellen, maar dan zonder garantie dat het überhaupt werkt. Het is dus voor de groep mensen die niet aan social media doet ook irritant als je een comment wil maken, en dan vervolgens een account moet maken op een hele andere site die je anders niet gaat gebruiken. Ik voorzie ook veel debugging met APIs van externe partijen wat gewoon altijd vervelend is, dat geeft mij veel hoofdpijn. Behalve comments kan alles wat ik wil nu al met de RSS feed en het e-mailadres die ik publiceer.

Mastodon en dergelijke zijn dus leuk als je op zoek bent naar een twitter-vervanger om elke uwer scheet naar te uploaden (inclusief oprechte shit takes over AI) en die van anderen stevig te inhaleren, maar het is niet redelijkerwijs bruikbaar als werkelijk gefedereerd lees-, interactie-, en publicatieplatform voor langere blogposts.

2023-07-24 in blog