Quick writeup on what I’ve learned about federating a WordPress blog via the ActivityPub plugin, so far:
First: it works. The simpler your setup, the better it works, but it works pretty well for something still in beta.
Basic installation is trivial if your blog is in a root URL directory. If it’s not, then you have to do some extra work. This extra work:
- Insure you have RedirectMatch permissions in your webroot directory, and that you have rights to have an .htaccess file in said webroot directory. (Under Linux, that’s typically public_html). In the most commonly-used webserver, that means editing your available-site file to have something like this in it:
AllowOverrideList Redirect RedirectMatch
- Put this in the webroot directory’s .htaccess file:
RedirectMatch "^\/.well-known(.*)$" "\/blog\/.well-known$1"
A: “well-known” is NOT an alias for your domain. It’s a literal; part of Webfinger functionality. Don’t touch it.
B: “blog” IS an alias for whatever subdirectory path points to your actual blog. In my case, that’s literally “blog” (solarbird.net/blog) but if you had something else (yourdomain.org/lollerskates/eat/fish) you’d have to swap “blog” to your individual path. (In this example, lollerskates/eat/fish.)
Explaining the extra work takes more time than doing the actual extra work, but the RedirectMatch isn’t well documented and I had to dig it out of plugin reviews and support threads.
Once this is done, your blog should be findable and followable on other Fediverse instances, the most notable at the moment being, of course, Mastodon. You can also install Friends Plugin for WordPress which will turn you into a full Federation site and put the people that you follow onto your blog, which is kind of nuts. The ActivityPub plugin Settings page explains that, and more, under the “Welcome” tab.
Secondly: Replies to your posts on other instances – okay, well, on Mastodon so far anyway – become comments on your blog post! But only first-level replies are picked up – replies made directly to your post as seen on Mastodon.
So if a person A toots a reply to your post, you’ll see it as a comment. But if someone else – Person B – then replies to Person A, your blog will not pick it up as a reply and you won’t be able to see it directly on your blog.
I’m thinking I will ask the plugin dev team to consider this problem further. There are issues I can see with it, so… I can see why they haven’t done this. But it’s still counter-intuitive.
More interestingly (and this is either better or worse, depending upon how you look at it): Mastodon (and Federation in general) replies are picked up as comments even if you have comments disabled on WordPress. So you’ll at least want to have comment moderation turned on if you disable comments.
Thirdly: Defederation is… not really there. As far as I can tell, with the current beta release, you can’t fully defederate via the functionality of this plugin. What you can do – and the plugin’s Settings tab tells you this – is dump your defederation list into the Disallowed Comments Keys field under Settings/Discussion. That’s not a solution, but it’s better than nothing. But it’s much less functional than you might be used to with, say, Mastodon.
Fourth: Tags and categories get all-lower-cased. Anna found this, experimenting with it on one of her blogs. This doesn’t sound important but actually is a meaningful strike against accessibility to screenreader software, as most of said software will recognise CamelCase as hinting at how to say compounded words, and, well, I think we’ve all seen the unfortunate ways in which kerning makes fools of us all? It’s the same problem.
Fifth: Updates to posts do not get propagated out like edits to toots do on Mastodon. And to get my Mastodon server to see my updated profile, I had to force a recheck as admin. The profile refresh probably happens anyway after a while – profiles are never assumed static forever – but it’s still worth noting. This is probably good cause for setting your Blog instance to send out summaries and links – more RSS-like behaviour – rather than entire posts, which is the default. The good news is that what goes out is nicely customisable, so this isn’t hard.
Post deletions, however, do get picked up. So that’s good.
Anyway, that’s it for now. It works. Seems pretty solid, really, even if there’s a lot of missing functionality that you may care about.
I’ll update this if I find workarounds and/or other issues of immediate concern.