The Wordpress ActivityPub plugin: what does it do, should you use it?

Wordpress users are used to thinking of their sites as being somewhat isolated from social media. People frequently share blog entries on Twitter or Facebook, leading to lively discussions. But those discussions are never visible on the WordPress site itself, where an entirely separate conversation might be happening in comments.

ActivityPub is a protocol for sharing social media interactions across sites. Imagine if Facebook users could friend Twitter users, and Twitter users could follow Facebook users. When they reply to each other, that forms a single conversation spanning many different websites. This is called "federation".

Of course, Facebook and Twitter don't support ActivityPub, but tens of thousands of less prominent sites do, representing millions of users. Those sites collectively form "the Fediverse".

The Wordpress ActivityPub plugin, which is currently in beta, connects Wordpress to this pool of users. People can follow your Wordpress blog, and post comments. These comments flow back to Wordpress. They can be approved and displayed on the Wordpress site.

This makes your articles more engaging and easy to interact with. The potential advantage is having your articles more widely read, and starting a more stimulating conversation. The downside, of course, is that the average comment from social media is bound to be of far lower quality than the average comment made directly on a blog.

I wrote this article to show how this process looks, and provide enough information for people considering using the beta plugin to make a decision. Overall my conclusion is: this plugin still needs work. The results right now are very counter-intuitive, and risk giving your blog users a negative experience.

What happens when you post an article

I will take my examples from the 80's animated television series "Jem". You will need to watch all three seasons to understand the rest of this article. As an example ActivityPub system, I will use Friendica. Mastodon is far more common, but Friendica is what I have ready on my test systems.

Suppose the ActivityPub plugin has been activated with default settings. Jem has just posted this picture:

Wordpress article by Jem titled "We're Number 1". As an image, Jerrica holds up a newspaper showing the music charts, with Jem and the Holograms at the top. The other names are disparaging parodies of popular 80's acts, for example "Mundanna" instead of "Madonna".

In order for a user of an ActivityPub site to see this, they have to subscribe. Let's take Shana as an example. She has an account on the Jem and the Holograms social media site, which is using Friendica. In order to follow Jem's posts, she has to add the URL of Jem's Wordpress account:

The connect or follow page of Friendica.  The URL of Jem's wordpress account is shown, as well as the URL of Shana's Friendica account.

Already we can see that things are not as smooth as they should be. There's no single "follow" button that works across websites, because Wordpress can't know which of the tens of thousands of ActivityPub websites it should link to. In fact Shana has to copy the link from the byline in Wordpress.

However, if Shana manages to do that, she does indeed get Jem's picture in her Friendica feed:

The Wordpress article from Jem as shown in Shana's feed in Friendica.  The usual social media affordances are present, such as like, comment, and reshare.

Jem can see her list of followers under her profile in the Wordpress console.

A list of followers in the Wordpress console.  The number of followers is counted as 2.  Each row of the table is a profile URL.  Profiles belonging to Shana and Stormer are visible.  At left, the menu shows that the option labelled Profile is selected, and underneath that the option labelled Followers (Fediverse).

Posting a comment over ActivityPub

At this point, Shana might like to post a comment:

A Friendica page showing Jem's Wordpress article.  An avatar top right indicates Shana is logged in.  In the box below she has typed a comment, "Mundanna LOL, whatever happened to her".

After a delay (Friendica queues up notifications for delivery on a schedule), the comment appears in Wordpress, ready for Jem to approve or discard:

Shana's comment as shown in the Wordpress dashboard in the comments section.  Jem has the option to approve the comment, move it to trash, and several other options.

When the comment is approved, it shows up on the site just like any other comment. Shana's name links back to her profile on Friendica. Unfortunately her avatar does not show up. This has not yet been implemented in the plugin.

Shana's comment after approval, displayed on Wordpress underneath Jem's article.  Shana's name is a link.  Instead of an avatar, there is a generic grey outline.

Interacting with Wordpress users

Suppose Kimber is a Wordpress user and would like to reply to Shana. She can do so, just as if it was a direct Wordpress comment.

A Wordpress page, with a header indicating that Kimber is logged in.  On the screen we can see Shana's previous comment.  Underneath is a text box labelled Reply to Shana Elmsford.  The box is filled with a message "Truly Outrageous!"

Jem can approve this comment too. But here's a more significant missing feature of the ActivityPub plugin: it does not send this comment to Shana. Only articles get sent over ActivityPub, not comments. So Shana will never see this reply, unless she thinks to visit the blog directly.

The Wordpress page, with comments from Shana and Kimber both visible.  Kimber's comment is indented from Shana's, indicating that Kimber is replying to Shana.  Kimber's comment has an avatar icon of her face, whereas Shana's is still just a grey outline.  Shana's name is a link, Kimber's is not.  Kimber's name is shown in lower case, indicating that it is her username not her display name, while Shana's name is in full and in mixed case.

Dealing with abuse

What happens if you get an abusive comment over ActivityPub? It seems that Stormer also subscribes to the blog from The Misfits social media site, and she's less impressed by The Holograms' success.

The Wordpress dashboard comments section.  Two comments are visible.  The lower, older comment is from Shana, and has a light grey background to indicate it has been approved.  The upper, newer comment is from Stormer, and is coloured yellow to indicate it is new and not yet approved.  The text reads "Top of the losers, more like!", followed by a vomiting emoji.

Of course Jem puts that comment straight in the Trash. But ActivityPub doesn't have any concept of a comment waiting for moderation. That comment didn't just get sent to the blog, it also immediately got sent to all of Stormer's friends.

This includes Pizzazz, who isn't about to let that one go.

A Friendica page, with an avatar at top right showing that Pizzazz is logged in.  The bottom of Jem's post is visible, and below that Stormer's comment.  Underneath that there is a comment box, where Pizzazz has typed "Ha! Everyone knows The Misfits are the hottest band in town!"

Here's another missing piece of the ActivityPub plugin. ActivityPub sites will always notify the author of the original article about all new comments. But the plugin discards comments that are not made directly to an article. In this case Pizzazz was not responding to Jem, but to Stormer. So the ActivityPub plugin discards the notification, and Jem doesn't even see Pizzazz's comment.

However, suppose Aja is following Pizzazz. In that case, Pizzazz's server will notify Aja's server, which happens to be the Jem and the Holograms social media site.

A Friendica page, with an avatar at top right showing that Aja is logged in.  The bottom of Jem's post is visible, and below that both Stormer's comment and Pizzazz's comment.  Metadata next to Stormer's comment reads "18 minutes ago (Received 36 seconds ago)".  Metadata next to Pizzazz's comment reads "2 minutes ago".

Another peculiarity of ActivityPub sites is that they are not notified of all new comments. Only if a local user is following a remote user does the comment arrive. When that happens, the site will also grab the comments in between. Notice that Stormer's comment was made 18 minutes ago, but Aja's server only received it 36 seconds ago.

So the effect of this is that Shana didn't see Stormer's comment at first. But when Pizzazz replied, that got sent over because Aja follows her. Now the comment is on Shana's server, and Shana gets a notification about an abusive comment that actually got made some time ago, by someone she doesn't even follow.

A Friendica page, with an avatar at top right showing that Shana is logged in.  Jem's post is visible.  From the top menu, the notifications button has been selected.  A drop down list shows one notification, which begins "Stormer commented in the thread", then prints a truncated URL, then concludes "from Jem".

Wow, that's confusing

As an administrator of a Wordpress site, you probably are interested in building a community of commenters who come back to your blog because it is a pleasant experience. You want to protect them from abuse and help them feel comfortable.

From Shana's point of view, she is not getting that experience. She's not involved in parts of the conversation happening on the blog. And she's being dragged into threads from elsewhere that have no moderation. Worse, these comments are showing up late or not at all depending on decisions made by other users. It's almost impossible for her to explain why she is or is not seeing a particular comment. And Jem can't help, since she can't see any of this.

Kimber isn't having a great experience either. She replied to Shana's comment, but Shana will never see it. As far as Kimber knows, Shana is ghosting her.

What should be fixed

Despite the problems above, you might be interested in experimenting with the plugin as an early adopter. You should be careful to manage the expectations of your Wordpress users and ActivityPub followers. Perhaps ActivityPub users would appreciate having an easy way to bring your articles into their feed.

However, for most Wordpress users, I would suggest the following things that should be improved before it's a good idea to enable the plugin.

Missing functionality in the plugin

Of course, this is only a beta. The following seem to be pretty straightforward features that would greatly improve the experience. As far as I can tell there are no great technical obstacles to implementing them. The problem is developer time.

Other plugin improvements

There are other relatively mild annoyances that should also eventually be fixed in the plugin. But these are less serious.

Improvements in ActivityPub implementations

Looking beyond the plugin itself, some of the ways ActivityPub sites interact is just fundamentally confusing, indeed dangerous. Fixing these things is a much bigger project than one Wordpress plugin. Solutions are actively being discussed, but you can't expect big improvements to arrive very soon.

Conclusion

Despite raising so many problems, I'm very optimistic about this plugin.

I've heard lots of people opine about "the death of blogging", which I find weird, since my favourite blogs never stopped. It seems the problem is that blogs are no longer visible, or at least not as visible as Twitter.

There are problems with this plugin, but now is the right time to give it the attention it has always deserved. There are big improvements that could be made with relatively little work.

The result could dramatically improve the visibility of Wordpress blogs, and therefore their usefulness. At the same time, Wordpress's vast installed userbase could radically change the prospects of the Fediverse itself.

I hope Wordpress users will at least give this plugin their attention and encouragement.

Versions

For the examples discussed above, I was using the following software: