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.
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:
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:
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:
Jem can see her list of followers under her profile in the Wordpress console.
At this point, Shana might like to post a comment:
After a delay (Friendica queues up notifications for delivery on a schedule), the comment appears in Wordpress, ready for Jem to approve or discard:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
There are other relatively mild annoyances that should also eventually be fixed in the plugin. But these are less serious.
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.
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.
For the examples discussed above, I was using the following software: