Threaded Replies and Comments with Webmentions in WordPress

Introduction to what one would consider basic web communication

A few days ago I had written a post on my website and a colleague had written a reply on his own website. Because we were both using the W3C Webmention specification on our websites, my site received the notification of his response and displayed it in the comments section of my website. (This in and of itself is really magic enough–cross website @mentions!)

To reply back to him I previously would have written a separate second post on my site in turn to reply to his, thereby fragmenting the conversation across multiple posts and making it harder to follow the conversation. (This is somewhat similar to what Medium.com does with their commenting system as each reply/comment is its own standalone page.)

Instead, I’ve now been able to configure my website to allow me to write a reply directly to a response within my comments section admin UI (or even in the comments section of the original page itself), publish it, and have the comment be sent to his reply and display it there. Two copies for the price of one!

From the comments list in my Admin UI, I can write a reply and it not only lives on my site but it can now be sent as a comment to the site that made the original comment! As an example, here’s my first one and the resultant copy on the site I was replying to.

This means that now, WordPress-based websites (at least self-hosted versions running the WordPress.org code) can easily and simply allow multiple parties to write posts on their own sites and participate in multi-sided conversations back and forth while all parties maintain copies of all sides of the conversation on their own websites in a way that maintains all of the context. As a result, if one site should be shut down or disappear, the remaining websites will still have a fully archived copy of the entire conversation thread. (Let’s hear it for the resilience of the web!)

What is happening?

This functionality is seemingly so simple that one is left wondering:

  • “Why wasn’t this baked into WordPress (and the rest of the web) from the start?”
  • “Why wasn’t this built after the rise of Twitter, Facebook, or other websites which do this as a basic function?”
  • “How can I get it tout suite?!” (aka gimme, gimme, gimme, and right now!!!)

While seeming simple, the technical hurdles aren’t necessarily because there had previously never been a universal protocol for the web to allow it. (The Webmentions spec now makes it possible.) Sites like Facebook, Twitter, and others enable it because they’ve got a highly closed and highly customized environment that makes it a simpler problem to solve. In fact, even old-school web-based bulletin boards allowed this!

But even within social media one will immediately notice that you can’t use your Facebook account to reply to a Twitter account. And why not?! (While the web would be far better if one website or page could talk to another, these sites don’t for the simple economic reason that they want you using only their site and not others, and not enabling this functionality keeps you locked into what they’re selling.)

I’ll detail the basic set up below, but thought that it would be highly illustrative to have a diagram of what’s physically happening in case the description above seems a bit confusing to picture properly. I’ll depict two websites, each in their own column and color-coded so that content from site A is one color while content from site B is another color.

A diagram of where comments live when sent via webmention.
Each site composes and owns its own content and sends the replies to the other site.

It really seems nearly incomprehensible to me how this hasn’t been built into the core functionality of the web from the beginning of at least the blogosphere. Yet here we are, and somehow I’m demonstrating how to do this from one WordPress site to another via the open web in 2017. To me this is the entire difference between a true Internet and just using someone else’s intranet.

Implementation

Prerequisites

While this general functionality is doable on any website, I’ll stick to enabling it specifically on WordPress, a content management system that is powering roughly 30% of all websites on the internet. You’ll naturally need your own self-hosted WordPress-based website with a few custom plugins and a modern semantic-based theme. (Those interested in setting it up on other platforms are more than welcome to explore the resources of the IndieWeb wiki and their chat which has a wealth of resources.)

Plugins

As a minimum set you’ll want to have the following list of plugins enabled and configured:

Other instructions and help for setting these up and configuring them can be found on the IndieWeb wiki, though not all of the steps there are necessarily required for this functionality.

Themes

Ideally this all should function regardless of the theme you have chosen, but WordPress only provides the most basic support for microformats version 1 and doesn’t support the more modern version 2 out of the box. As a result, the display of comments from site to site may be a bit wonky depending on how supportive your particular theme is of the microformats standards. As you can see I’m using a relatively standard version of the TwentySixteen theme without a lot of customization and getting some reasonable results. If you have a choice, I’d recommend one of the following specific themes which have solid semantic markup:

Plugin

The final plugin that enables sending comments from one comment section to another is the WordPress Webmention for Comments plugin. As it is still somewhat experimental and is not available in the WordPress repository, you’ll need to download it from GitHub and activate it. That’s it! There aren’t any settings or anything else to configure.

Use

With the plugin installed, you should now be able to send comments and replies to replies directly within your comments admin UI (or directly within your comments section in individual pages, though this can not require additional clicks to get there, but you also don’t have the benefit of the admin editor either).

There is one current caveat however. For the plugin to actually send the webmention properly, it will need to have a URL in your reply that includes the microformats u-in-reply-to class. Currently you’ll need to do this manually until the plugin can properly parse and target the fragmentions for the comments properly. I hope the functionality can be added to the plugin to make the experience seamless in the future.

So what does this u-in-reply-to part actually look like? Here’s an example of the one I used to send my reply:

<a class="u-in-reply-to" href="https://islandinthenet.com/manually-adding-microfomats-markup/">Khürt</a>

The class tells the receiving site that the webmention is a reply and to display it as such and the URL is necessary for your webmention plugin to know where to send the notification. You’d simply need to change the URL and the word (or words) that appear between the anchor tags.

If you want to have a hidden link and still send a webmention you could potentially add your link to a zero width space as well. This would look like the following:

<a class="u-in-reply-to" href="http://www.example.com">&​#8203;​</a>

Based on my experiments, using a <link> via HTML will work, but it will send it as a plain webmention to the site and it won’t show up natively as a reply.

Sadly, a plain text reply doesn’t work (yet), but hopefully some simple changes could be made to force it to using the common fragmentions pattern that WordPress uses for replies.

Interestingly this capability has been around for a while, it just hasn’t been well documented or described. I hope now that those with WordPress sites that already support Webmentions will have a better idea what this plugin is doing and how works.

Future

Eventually one might expect that all the bugs in the system get worked out and the sub-plugin for sending comment Webmentions will be rolled up into the main Webmentions plugin, which incidentally handles fragmentions already.

Caveats

In addition to the notes above, I will say that this is still technically experimental code not running on many websites, so its functionality may not be exact or perfect in actual use, though in experimenting with it I have found it to be very stable. I would recommend checking that the replies actually post to the receiving site, which incidentally must be able to accept webmentions. If the receiving website doesn’t have webmention support, one will need to manually cut and paste the content there (and likely check the receive notification of replies via email, so you can stay apprised of future replies).

You can check the receiving site’s webmention support in most browsers by right clicking and viewing the pages source. Within the source one should see code in the <head> section of the page which indicates there is a webmention endpoint. Here is an example of the code typically injected into WordPress websites that you’d be looking for:

<link rel="webmention" href="http://example.com/wp-json/webmention/1.0/endpoint" />
<link rel="http://webmention.org/" href="http://example.com/wp-json/webmention/1.0/endpoint" />

Also keep in mind that some users moderate their comments, so that even though your mention was sent, they may need to approve it prior to it displaying on the page.

If you do notice problems or issues or have quirks, please file the issue with as full a description of what you did and what resulted as you can so that it can be troubleshot and made to work not only for you, but hopefully work better for everyone else.

Give it a try

So you’ve implemented everything above? Go ahead and write a reply on your own WordPress website and send me a webmention! I’ll do my best to reply directly to you so you can send another reply to make sure you’ve got things working properly.

Once you’re set, go forward and continue helping to make the web a better place.

Special Thanks

I wanted to take a moment to give special thanks to Aaron Parecki, Matthias Pfefferle, and David Shanske who have done most of the Herculean work to get this and related functionality working. And thanks also to all who make up the IndieWeb community that are pushing the boundaries of what the web is and what it can accomplish. And finally, thanks to Khürt Williams who became the unwitting guinea pig for my first attempt at this. Thank you all!

​​​​​​

People I love following and learning from on the web:

Kimberly Hirshhttps://kimberlyhirsh.com/ a fascinating reader, writer, educator, and fandom expert

Tom Critchlowhttps://tomcritchlow.com/ – consultant, digital experimenter and bricoleur, networked writing and education

Aaron Davishttps://collect.readwriterespond.com/ – educator, edtech innovation and implementation 

Read 2020/Austin/fromflowtostock (indieweb.org)
From Flow to Stock was a session at IndieWebCamp Austin 2020.
I’d love to see the video for this conversation once posted. The notes give a reasonable idea, but there’s a lot of discussion of silos going on here. I’m curious how those who attended might begin to own some of the ideas on their own websites in the future.

I see a lot of overlap with the ideas of commonplace books with what is going on here. Looking at the list of participants I’m not seeing any that I think might actually have both “stock” and “flow” on their personal websites yet. I feel like I’m getting ever closer to having them on mine.

👓 Closing Communities: FFFFOUND! vs MLKSHK | Waxy.org

Read Closing Communities: FFFFOUND! vs MLKSHK by Andy Baio (waxy.org)
Next month, two seminal image-sharing communities, FFFFOUND! and MLKSHK, will close their doors within a week of each other. Launched in June 2007 as a side-project by a Japanese design agency, FFFFOUND borrowed the visual bookmarklets of Wists, a social shopping service launched a year earlier, to...

👓 Why is populism booming? Today’s tech is partly to blame | Jamie Bartlett | Opinion | The Guardian

Read Why is populism booming? Today’s tech is partly to blame by Jamie Bartlett (the Guardian)
Social media platforms are the perfect places to deny nuance in favour of extreme opinions – and we are hooked on them.

👓 Jeff Sessions out as attorney general | CNN

Read Jeff Sessions out as attorney general (CNN)
President Donald Trump on Wednesday fired Attorney General Jeff Sessions. Matthew Whitaker will take over as acting attorney general.

📕 100.0% done with Fletch’s Moxie by Gregory Mcdonald

📕 100.0% done with Fletch’s Moxie by Gregory Mcdonald

Not sure how I feel about a group of potential suspects showing up in the final act this way. The racists in KKK garb here could certainly have been the motivation for the scenes in the film Fletch Lives.

The plot here was very subtly crafted together and done rather well for a novel format. Things seem to have unraveled so quickly at the end–I wish it had been a tad slower so that I could have enjoyed it longer.

📺 Crazy for Christmas (TV Movie 2005)

Watched Crazy for Christmas (TV Movie 2005) from imdb.com
Directed by Eleanor Lindo. With Andrea Roth, Howard Hesseman, Jason Spevack, Yannick Bisson. On Christmas Eve, Shannon McManus (Andrea Roth) is stuck driving around a wealthy and eccentric client (Howard Hesseman) who is giving away large sums of money with the secret hope of reuniting with his long lost daughter.
What can I say, I’m a sucker for middling Christmas themed movies on the Lifetime channel at the holidays?

This is positively a dreadfully unexceptional movie. And vaguely entertaining for every minute of it.

The odd part is that I’m pretty sure I watched this either last year or the year before…

📺 “The West Wing” In God We Trust | Netflix

Watched "The West Wing" In God We Trust from Netflix
Directed by Christopher Misiano. With Alan Alda, Stockard Channing, Dulé Hill, Allison Janney. Senator Arnold Vinick easily wins the Republican nomination on the night of the New Jersey primary, but has difficulty picking a running mate. Choosing Reverend Don Butler would virtually guarantee him the presidency, but their differing views on abortion and religion would make it a political union rather than one based on shared ideology. The Democratic nomination is a toss-up between Santos ...

🔖 Open Design Kit: A toolkit for designing with distributed collaborators | Bocoup

Bookmarked Open Design Kit: A toolkit for designing with distributed collaborators by Jess KleinJess Klein (bocoup.com)

Today, we are pleased to announce Open Design Kit – a collection of remixable methods designed to support creativity and problem solving within the context of the agile and distributed 21st century workplace. We are creating this kit to share the techniques we use within our open design practice at Bocoup and teach to collaborators so they can identify and address design opportunities. As of the publication of this post, the kit can be accessed in a GitHub repository and it contains a dozen methods developed by fifteen contributors – designers, educators, developers from in and outside of Bocoup.

Design literacy needs to be constantly developed and improved throughout the software and product development industry. Designers must constantly level up their skillsets with lifelong learning. Engineers often need to learn how to collaborate and incorporate new practices into their workflow to successfully support the integration of design.

Clients and stakeholders are repeatedly challenged by the fact that design is a verb that needs constant attention and not a noun that is handed off.

To address this, Bocoup is openly compiling a suite of learning materials, methods, and systems to help our staff, clients, colleagues, and community better understand how we design and when to roll up their sleeves and get in on the action. It is our hope that this exploration will be useful for other companies and individuals to incorporate into their practice.

I ran across Roam Research in late 2019, and in exploring TiddlyWiki lately I’m seeing a lot about people adding Roam-based functionality to TW5. What I’m not seeing is any conversation about how the same sort of backlinking could be done in MediaWiki. 

Of course I did mention something related the other day, but the functionality could be better surfaced:

One of my favorite “hidden” features of the IndieWeb wiki is the sidebar link for “What links here” that often provides some deeper and richer information than is found in the See Also sections.

Watched Jadene Mayla: The Harmonic Bridge Between the Tech Space and Nature from YouTube

Carcinogenic EMF radiation from devices is transmutable via ancient Egyptian applied physics. Harmonic Artworks also open the gateway to co-create with the higher harmonic engineers of the natural world. The result = EMF shielding + human evolution.

Technology allows us a certain utility upon which we have become dependent, yet electromagnetic radiation entering our body from the devices we carry and wear is a known carcinogen; with scientists and doctors in 40 countries warning us about 5G raising our exposure from 6Ghz to 300Ghz. Harmonic Artworks applies ancient Egyptian physics to design authentic, aesthetic EMF shielding and offer a vital reconnection with higher harmonic intelligence. Known to the ancient Egyptians as NeTeRs, from which the word Nature is derived, these elemental forces hold the keys to sustainable technology and thus our future on Earth. The company achieved the target application in 2015 and after a break is poised to collaborate with producers of wearables and other products used in close proximity to the body.

Bio:
Jadene Mayla is a multimedia artist with an MFA in Applied Craft + Design from both Oregon College of Art and Craft and Pacific Northwest College of Art, a BLA in Landscape Architecture from the University of Oregon, a certificate in Permaculture Design from Cascadia Permaculture Institute, and a certificate in BioGeometry Foundations Training from the Vesica Institute for Holistic Studies. She maintains an active studio practice and has exhibited at the Port of Portland, Gresham Arts Committee Industrial Show, Findlay Group, Spectacular Design, Legacy Modern, Furthermore Gallery, Horsehead Gallery, Bar Maven, Launchpad Gallery, Cascade Gallery, Seven Virtues, Stylus Grooves, The Mansion, the Division Design Initiative, and the Synesthesia and Burning Man arts festivals. Her work
has been published in Nothing Sacred, the Clearwater Environmental Connector, Lake Oswego Neighbors Magazine, Alternatives Journal, the Portland Mercury, the Eugene Weekly, Untitled Magazine, the Center Street Literary Journal, Southern Oregon Magazine, and Natural Awakenings Magazine.

Her awards include May 2016 Artist of the Month for Findlay, a $12K scholarship for strength of proposal to the MFA AC+D program from PNCA/OCAC in 2013, Eco-Biz status since 2007, and first place in the H.O.P.E.S. national design competition in 2005. She has served on the National Honor Society and as Vice President for the American Center for Sustainability, given invited talks at Clackamas Community College and Ujima Center, lead workshops at the Los Angeles County Arboretum, Northwest Regional Permaculture Gathering, Village Building Convergence, and SE Portland Permaculture Convergence, and she was a co-founder of the Eugene City Repair Project.

I missed this particular coffee meetup earlier this year. Jadene pitched this idea to me this morning. Sadly having seen this I’m unlikely to think it has any basis in science at all despite her protestations that it does. Of course this also doesn’t mean that one could make it the basis of some type of lifestyle business, which is what she’s attempting to do.