GoActivityPub library

How much longer until S2S?

I've again been lazy again with the change log updates, and the number of changes for the last three months is bigger than I expected. Even so, I’m running out of things to do before I start implementing the server to server activitypub interactions. As previously stated #moderation is a big priority and a lot of the updates are related to that in one form or another.

BrutaLinks

Visuals

The BrutaLinks project has seen most of the work during this time. The most visible change is that we’re no longer storing the svg document we use for icons in every html page, but we load it from a cacheable external source. This lowers the response size quite significantly. The trashcan logo has been updated to an icon (from the Phosphor font) which is a little more expressive. The items that are older than one year have been made read-only.

Speed

Other improvements that might have noticeable results are related to caching and more streamlined collection loads for (almost) all of the pages. As always, cache invalidation is an issue so I don’t consider the current solution final.

All of the collection loads now go through the same pipeline, which simplifies things with respect to caching and filtering. It supports loading from multiple collections, belonging to different actors, and with different filters. This however might present a problem with next/previous cursors which need to be updated to account for loading from multiple collections.

Moderation

I have done some work in allowing BrutaLinks to maintain a list of moderators with enhanced permissions to basic users, without relying on non spec compliant vocabulary. At the begining the actions they will be allowed to take will probably just be editing or removing of a post they’re not the author of (from the moderation listing page). Probably I will also add accepting follow requests for the instance, and add actors to the ignored or block lists for the instance.

This means that the user profile page has been updated to show their tags (which currently form the basis for the moderation permissions).

There is still a lot to be done here, but I feel like I’m heading into a good direction and I’m confident that it will soon (maybe early next year) be visible on the test instance. This will have the side effect of isolating an instance’s posts to just itself and the explicitly set group of followers, recipients, but we’ll takle that when we get there.

FedBOX

Adding some new commands to copy/move objects to different collections. This is a side effect of having to copy all of the items in the main service’s Inbox to the BrutaLinks’ application one.

Improved the Delete method for all storage types to actually remove the underlying objects. This was required by the logic of the Undo operation, which requires the undid activity’s side-effects to be completely removed. (As a side-note, maybe I should look into soft deleting instead, even though it would add some extra metadata)

I improved recipients filtering for objects.

Go-ActivityPub

Most of the changes in the go-ap packages have been done to support the new Undo logic and also to improve the validation step for both server to server and client to server activities.

Another important step is that I started work on a generics branch for the main ActivityPub vocabulary package, even though so far I haven’t seen a lot of possibilities where it would be useful.

/Marius Berlin, 14th November 2021