Talking ‘bout my federation

I mentioned in my first post that I’ve set up this blog with ActivityPub support, so I figured it was worth going over how to set it up and how it actually works (and how it doesn’t yet).

WARNING: This is a long post – if you do happen to be reading this via Mastodon or some other service, this isn’t a microblog, so adjust your expectations.

What’s it all about?

First things first: for the uninitiated, ActivityPub is the protocol that powers the so called “fediverse” of connected social media sites. The key idea behind this is that rather than having multiple accounts that each work on only one service, each service links up in federation with others, and data can be exchanged between them, meaning that you can use an account on your Mastodon server to follow people on another server, or indeed any other site that uses ActivityPub.

It’s a different way of implementing social media on today’s web, and a lot of the conversation and setup is currently rather technical and jargon filled. Essentially though, from a user perspective, you can have one social account on one social media service that can connect to every other account on every other service, in the same way you use your phone number or email account.

Currently the biggest service in the fediverse is the previously mentioned Mastodon, but there are others around – and in the future both Tumblr and the new Threads are going to be getting support.

Most importantly, while ActivityPub is most associated with microblogging, the protocol can be used for longer content and blogs too, which means that I can set up my blog so it can followed like a social media account – at least in theory.

Pressing matters

My site runs using WordPress on a self hosted server, which means I get to take advantage of the vast collection of plugins provided by the community. To get ActivityPub working, I used three plugins:

Before getting any further, I should mention that all of these plugins are currently beta versions (with the exception of Friends, although the ActivityPub functionality relies on the ActivityPub plugin)

ActivityPub itself

The main backbone of the setup is the ActivityPub plugin, which was recently acquired by WordPress developers Automattic. This in adds all the additional config required to support ActivityPub – I’m not going to go into all the technical details how it works (mostly because I don’t really know myself), but essentially it sets up the services for other sites to interact with and connect to in order to get the blog content.

The settings give you several options in order manage what is provided via ActivityPub – you can include full posts or excerpts, include photos and tags etc. A lot of this customisation is important depending on what sort of content you’re including on your blog to begin with – so far I’ve been posting photos and shortish snippets, but this post is significantly longer, which is fine on this site but may look weird in a Mastodon app.

When this is set up, your author page on the site with have its own social media handle in the style of @something@somewhere.social. This is what people will use to follow your site, and once they do, they can interact with them much as they would with any social media post. Any replies to the posts are posted as comments on the main blog as well.

The one downside is that only new posts will be made available to share, and any new followers will only be able to read shared posts from when they have subscribed rather than the full archive (of course, they will be able to read the blog archives).

Friends and Networking

While ActivityPub covers publishing the content, the Friends plugin adds in the social networking side of things. With this plugin, you can effectively turn your site into a mini social network of your own, and follow any account on an ActivityPub service.

The plugin provides a nice little web interface where you interact with your followed accounts, including replying, boosting, and reblogging.

However, it’s worth bearing in mind that not all the functionality that you’d expect from eg. a Mastodon server is available. You won’t be able to pull though any post replies or boost numbers from other servers, for instance, or indeed look up any historic posts.

Mastodon Apps

Building on the Friends plugin (both are created by Alex Kirk), the Enable Mastadon Apps plugin lets you use a Mastodon client in order to check your Friends feed or to make status updates to your blog. This works well enough, although as mentioned before you are limited to what you can do with the Friends plugin.

My experience

This process started out a bit of experiment – I’m not the most prolific social media user, but given what the-service-formally-known-as-Twitter is becoming I felt it was good to break away, and if I was going to do that then I might as well try and set up my own space at the same time. When I saw that WordPress had acquired an ActivityPub plugin, I thought that this could be the chance to set up my own blog as my one main social media profile as well.

The experience has gone well, and in some ways better than I hoped – but as mentioned above this isn’t going to be a complete replacement, at least not yet. WordPress is primarily a blogging service, not a social media server, and while getting the content into a suitable state for ActivityPub is relatively easy, using the site as a prototype Mastodon server is a bit too much work to do for a self hosted webpage, at least currently. I should stress this isn’t meant as a criticism of any of the developers behind any of the tools I used – these are all still in active development and for the most part perform exactly what they are supposed to do.

Outside of the technical side, there’s the social side to consider as well. I’ve stuck a warning on the top of this post because currently if anyone is following they are likely doing it via Mastodon, which has a strict 500 character limits for posting on its main servers. This doesn’t apply to reading posts from other ActivityPub instances though and as you can tell this blog goes well beyond that, meaning that anyone expecting a short status update will get overloaded pretty quickly. The plugin gives me the option to provide excerpts in the feed rather than the full page, but then that essentially turns the feed into an auto sharer for the website – not to mention that as ActivityPub grows in popularity more services will emerge where sharing the full page will be more useful, perhaps necessary.

Final thoughts

Despite the drawbacks, I think the main goal – getting the blog to federate with other services, has been achieved here, and I’m looking forward to seeing how it goes. I don’t know if I’ll set this up as my main account on the fediverse, or if I’ll need to move to something a bit more fully featured in the future, but whatever happens I’m glad that I can get this site in the ether, so to speak.

The one thing I am interested in finding out now that the site is ActivityPub enabled and open to everyone is just how other people will respond to it. Is providing the full content of every blog post too much? If anyone is picking this up, whether in the fediverse or just by finding the blog, let me know if you have any thoughts.

Leave a Comment