Mandy: ActivityPub on Goblins

Hey everyone! Happy new year and happy new blog post day! @tsyesika has made a prototype of Mandy: an implementation of ActivityPub built on Goblins. Since ActivityPub and Goblins are both actor-based, they fit together quite nicely.

Read all the details here:

2 Likes

I’ve had some time today to go through this post in more detail and it’s very cool stuff!

Converting nested objects in HTTP requests to their corresponding Goblins actors is very cool, and it’s clear to me now why this has motivated the work on sleepy actors. I imagine you’d start to blow up the memory usage pretty quickly if you were to do this while keeping all actors in memory!

I haven’t spent as much time understanding the ActivityPub protocol as I would like, but with the Outbox example given in the blog post I’m curious how this might interact with existing fediverse software. Reading the AP spec, it’s clear that the typical case is supposed to be that servers send messages posted to an actor’s Outbox to the Inboxes of other actors. But reading directly from the actor’s Outbox is also supported, and the spec says:

The outbox stream contains activities the user has published, subject to the ability of the requestor to retrieve the activity (that is, the contents of the outbox are filtered by the permissions of the person reading it).

Making the Outbox object return only public posts seems relatively straightforward, but filtering responses depending on who’s asking does not (and is of course more ACL than ocap). In practice, how much of a problem would it be for existing fediverse software if e.g. GETing from my Outbox returned only public posts and private posts were only delivered via federation to Inboxes?

Also, will you be releasing the full code of the prototype? I’d be interested in digging in some more. :slight_smile:

1 Like

The source code can be found here: Meanings as to the proles. You had better let me have?’ ‘Not.

We somehow dropped the link during an edit pass, oops! We’ll add it back in!

2 Likes

Are there any instructions for how to run it?

Since this blog post is turning out to be popular, I’ve asked @tsyesika to provide some instructions so others can run it. We might move the prototype to a dedicated repo, as well. We’ll update here if/when we do that.

1 Like

I have pushed to its own repo and added a README: spritely/mandy - Codeberg.org (please remember it’s just a prototype I built, it’s not fully functional or intended for use).

3 Likes