🔖 Mastodon Webmention Relay

Bookmarked Mastodon Webmention Relay (glitch.com)
  1. Remix this glitch.
  2. Get a Mastodon API token.
  3. Put it into .env (don't worry, it's hidden from non-collaborators).
  4. Configure UptimeRobot to hit the /check endpoint.
h/t qubyte on GitHub:

made a glitch over lunch to periodically check my own statuses for links, and dispatch webmentions accordingly. It’s still pretty crude, but works well so far. It works through old statuses and then new in batches, searches the content of each status for anchors, and dispatches webmentions for those which support them. Feel free to remix it!

Edit: Apologies. It was set to private, but public now.

Fatal Error with WP_Error as array in Webmention Form

Filed an Issue pfefferle/wordpress-webmention (GitHub)
A Webmention plugin for WordPress https://wordpress.org/plugins/webmention/
As mentioned in IW chat:

When placing the URL https://abraham.uno/909/listening-an-indieweb-podcast-episode-0/ into the Webmention Form at http://boffosocko.com/2018/03/19/an-indieweb-podcast-episode-0-considering-the-user/#Respond+on+your+own the following Fatal Error appears at http://boffosocko.com/wp-json/webmention/1.0/endpoint:

Fatal error: Uncaught Error: Cannot use object of type WP_Error as array in /htdocs/wp-content/plugins/webmention/templates/webmention-api-message.php:119 Stack trace: #0 /htdocs/wp-content/plugins/webmention/includes/class-webmention-receiver.php(161): require_once() #1 /htdocs/wp-includes/class-wp-hook.php(298): Webmention_Receiver::serve_request(false, Object(WP_REST_Response), Object(WP_REST_Request), Object(WP_REST_Server)) #2 htdocs/wp-includes/plugin.php(203): WP_Hook->apply_filters(false, Array) #3 /htdocs/wp-includes/rest-api/class-wp-rest-server.php(380): apply_filters('rest_pre_serve_...', false, Object(WP_REST_Response), Object(WP_REST_Request), Object(WP_REST_Server)) #4 /htdocs/wp-includes/rest-api.php(271): WP_REST_Server->serve_request('/webmention/1.0...') #5 /htdocs/wp- in /htdocs/wp-content/plugins/webmention/templates/webmention-api-message.php on line 119

Quoted Slack chat by Chris BeckstromChris Beckstrom (chat.indieweb.org)
...holy crap this stuff [IndieWeb] is great. When I started getting webmentions from social media using Bridgy I flipped. It's like we're in the future!!!
I remember the early days of Twitter when people were excited about what it was and what it could do. Even then I don’t think people were as excited as Chris Beckstrom was when he made what is certainly the IndieWeb quote of the week this morning.

Enabling two way communication with WordPress and GitHub for Issues

This week, using the magic of open web standards, I was able to write an issue post on my own website, automatically syndicate a copy of it to GitHub, and later automatically receive a reply to the copy on GitHub back to my original post as a comment there. This gives my personal website a means of doing two way communication with GitHub.

This functionality is another in a long line of content types my website is able to support so that I’m able to own my own content, yet still be able to interact with people on other websites and social media services. Given the number of social sites I’ve seen disappear over the years (often taking my content with them), this functionality gives me a tremendously larger amount of control and ownership over my web presence and identity while still allowing me to easily communicate with others.

In this post I wanted to briefly sketch what I’ve done to enable this functionality, so others who are so inclined can follow along to do the same thing.

Setting up WordPress to syndicate to GitHub

I’ll presume as a first step that one has both a GitHub account and a self-hosted WordPress website, though the details will also broadly apply to just about any content management system out there that supports the web standards mentioned.

Register your GitHub account and your website with Bridgy

Ryan Barrett runs a fantastic free open sourced service called Bridgy. To use it you’ll need the microformat rel=​​​“me” links on both your GitHub account and your website’s homepage that point at each other.  GitHub will do most of the work on its side for you simply by adding the URL of your website to the URL field for your GitHub account at https://github.com/settings/profile. Next on your website’s homepage, you’ll want to add a corresponding rel=​​​​​“me” link from your website to your GitHub account.

In my case, I have a simple widget on my homepage with roughly the following link:
<a href="https://github.com/username">GitHub</a>
in which I’ve replaced ‘username’ with my own GitHub username. There are a variety of other ways to add a rel=​​​​​“me” link to your webpage, some of which are documented on the IndieWeb wiki.

Now you can go to Brid.gy and under “Connect your accounts” click on the GitHub button. This will prompt you to sign into GitHub via oAuth if you’re not already logged into the site. If you are already signed in, Brid.gy will check that the rel=​​​​​“me” links on both your site and your GitHub account reciprocally point at each other and allow you to begin using the service to pull replies to your posts on GitHub back to your website.

To allow Brid.gy to publish to GitHub on your behalf (via webmention, which we’ll set up shortly), click on the “Publish” button.

Install the Webmention Plugin

The underlying technology that allows the Bridgy service to both publish on one’s behalf as well as for the replies from GitHub to come back to one’s site is an open web standard known as Webmention. WordPress can quickly and easily support this standard with the simple Webmention plugin that can be downloaded and activated on one’s site without any additional configuration.

For replies coming back from GitHub to one’s site it’s also recommended that one also install and activate the Semantic Linkbacks Plugin which also doesn’t require any configuration. This plugin provides better integration and UI features in the comments section of one’s website.

Install Post Kinds Plugin

The Post Kinds Plugin is somewhat similar to WordPress’s Post Formats core functionality, it just goes the extra mile to support a broader array of post types with the appropriate meta data and semantic markup for interacting with Bridgy, other web parsers, and readers.

Download the plugin, activate it, and in the plugin’s settings page enable the “Issue” kind. For more details on using it, I’ve written about this plugin in relative detail in the past.

Install Bridgy Publish Plugin

One can just as easily install the Bridgy Publish Plugin for WordPress and activate it. This will add a meta box to one’s publishing dashboard that, after a quick configuration of which social media silos one wishes to support, will allow one to click a quick checkbox to automatically syndicate their posts.

Install the Syndication Links Plugin

The Syndication Links plugin is also a quick install and activate process. You can modify the settings to allow a variety of ways to display your syndication links (or not) on your website if you wish.

This plugin will provide the Bridgy Publish Plugin a place to indicate the permalink of where your syndicated content lives on GitHub. The Bridgy service will use this permalink to match up the original content on your website and the copy on GitHub so that when there are replies, it will know which post to send those replies to as comments which will then live on your own website.

Post away

You should now be ready to write your first issue on your website, cross post it to GitHub (a process known in IndieWeb parlance as POSSE), and receive any replies to your GitHub issue as comments back to your own website.

Create a new post.

In the “Kinds” meta box, choose the “Issue” option.

Screen capture of the Kinds meta box with "Issue" option chosen.
Kinds meta box with “Issue” option chosen.

Type in a title for the issue in the “Title” field.

In the “Response Properties” meta box, put the permalink URL of the Github repopository for which you’re creating an issue. The plugin should automatically process the URL and import the repository name and details.

The “Response Properties” meta box.

In the primary editor, type up any details for the issue as you would on GitHub in their comment box. You can include a relatively wide variety of custom symbols and raw html including

and  with code samples which will cross-post and render properly.

In the GitHub meta box, select the GitHub option. You can optionally select other boxes if you’re also syndicating your content to other services as well. See the documentation for Bridgy and the plugin for how to do this.

Screen capture of the Bridgy Publish meta box with GitHub chosen
Bridgy Publish meta box with GitHub chosen.

Optionally set any additional metadata for your post (tags, categories, etc.) as necessary.

Publish your post.

On publication, your issue should be automatically filed to the issue queue of the appropriate GitHub repo and include a link back to your original (if selected). Your post should receive the syndicated permalink of the issue on GitHub and be displayed (depending on your settings) at the bottom of your post.

Syndication Links Plugin will display the location of your syndicated copies at the bottom of your post.

When Bridgy detects future interactions with the copy of your post on GitHub, it will copy them and send them to your original post as a webmention so that they can be displayed as comments there.

An example of a comment sent via webmention from GitHub via Brid.gy. It includes a permalink to the comment as well as a link to the GitHub user’s profile and their avatar.

If you frequently create issues on GitHub like this you might want a slightly faster way of posting. Toward that end, I’ve previously sketched out how to create browser bookmarklets that will allow you one click post creation from a particular GitHub repo to speed things along. Be sure to change the base URL of your website and include the correct bookmarklet type of “issue” in the code.

The Post Kinds plugin will also conveniently provide you with an archive of all your past Issue posts at the URL http://example.com/kind/issue/, where you can replace example.com with your own website. Adding feed/ to the end of that URL provides an RSS feed link as well. Post Kinds will also let you choose the “Reply” option instead of “Issue” to create and own your own replies to GitHub issues while still syndicating them in a similar manner and receive replies back.

Other options

Given the general set up of the variety of IndieWeb-based tools, there are a multitude of other ways one can also accomplish this workflow (both on WordPress as well as with an infinity of other CMSes). The outline I’ve provided here is one of the quickest methods for beginners that will allow a relatively high level of automation and almost no manual work.

One doesn’t necessarily need to use the Post Kinds Plugin, but could manually insert all the requisite HTML into their post editor to accomplish the post side of things via webmention. (One also has the option to manually syndicate the content to GitHub by cutting and pasting it as well.) If doing things manually this way is desired, then one will need to also manually provide a link to the syndicated post on GitHub into their original so that Bridgy can match up the copy and the original to send the replies via webmention.

More details on how to use Bridgy with Github manually in conjunction with WordPress or other CMSes can be found here: https://brid.gy/about#github-issue-comment

Further steps

If you’ve followed many of these broad steps, you’ve given already given yourself an incredibly strong IndieWeb-based WordPress installation. With a minimal amount of small modifications you can also use it to dovetail your website with other social services like Twitter, Facebook, Flickr, Instagram, Google+ and many others. Why not take a quick look around on the IndieWeb wiki to see what other magic you can perform with your website!

I’ve documented many of my experiments, including this one, in a collection of posts for reference.

Help

If you have questions or problems, feel free to comment below or via webmention using your own website. You can also find a broad array of help with these plugins, services, and many other pieces of IndieWeb technology in their online chat rooms.​​​​​​​​

👓 Webmention.io integration for Drupal 8 | realize.be

Read Webmention.io integration for Drupal 8 by Kristof De Jaeger (realize.be)
I've had my site for quite some time now, the internet archive goes way back to 2002 even! To be fair, most of the content until 2007 wasn't that interesting (not sure what makes me think it is nowadays though, but okay ... ), but it was mostly the primary source of well .. me :). Apart from that, I also use Twitter, but I want to turn this around and let my site be the primary source. The IndieWeb movement is something I only recently discovered, but somehow, the philosophy was in my mind for the last few weeks, and I am not the only one that is talking about it. So, as a first small step, to figure out who links to my content, I created a simple Drupal 8 module that can receive and store webmentions and pingbacks from Webmention.io. The source is available at https://github.com/swentel/webmention_io. I'll move this drupal.org at some point once it gets into a more polished state, but it also depends on further iterations of getting more interaction feedback to my site. Next up is looking at https://brid.gy/ as the service has integration with social networks to post and retrieve replies from there.
This isn’t as direct a solution as I would have expected, but I suspect that it probably works pretty well. While reading it, I feel obliged more than usual to make a read post and send a webmention to it…

It’s interesting to see some of the great strides forward Drupal has been making in the IndieWeb arena since November .

Reply to Why we transitioned from Medium back to our own blog | Baremetrics

Replied to Why we transitioned from Medium back to our own blog by Josh Pigford (Baremetrics)
Where to publish something has becoming a difficult decision for a lot of businesses. You read so many stories about using various channels to distribute content and grow traffic, it’s hard to know what does and doesn’t work. Medium, in particular, has become a major player in the world of startup content, but is it really that great? [...] The numbers just didn’t make sense. Yes, I could put more into Medium and try to build up readership even more. The guys at Basecamp regularly get 250k+ views on their content. But doing that helps Medium the most in the long run. They’ve been fumbling left and right trying to figure out how to make Medium sustainable, and I’m just not convinced they’ll always do what’s best for us and our business. Switching back Now I didn’t want to throw out distribution on Medium entirely. There can definitely be some benefit to syndicating content there. It’s essentially another distribution channel to expose people to our content. So we needed a game plan on how we could still make use of Medium as a distribution channel without cannibalizing our own readership or SEO work.
This is 100% on the mark, you should definitely own your own content. Syndicating it out to Medium is a great idea, particularly when you can get a rel=”canonical” tag for the original on Medium. Incidentally Medium has their own WordPress plugin that will allow you to quickly and easily syndicate your site’s content directly to Medium without needing to separately import it. It’s also available on a per post basis.

But, even with this, you’re only getting 50% of the value of having your own website because you’ve only got one way communication out. Next you’ll need communication back in. What if I said you could get a lot of the comments, likes, and interactions from those other silos back into your website too? This way the conversations others are having relating to your content also come back to your site and enrich it there? What if you could own all (or almost all) of the conversation around your content?

Think about it, what if there was an @mention functionality that worked from website to website instead of being stuck inside Twitter, Facebook, Google+, Instagram, Flickr etc.? Interestingly, it exists! And you can set it up for free with last year’s new W3C Webmention protocol which already has WordPress plugins ready to go. Roughly for WordPress you’ll need the Webmentions plugin, the Semantic Linkbacks plugin, the Syndication Links plugin, a few strategically placed rel=”me” tags on your site, (maybe some tweaks to your microformats on your theme), and a free Brid.gy account. Details for setting it up can be found on the WordPress pages of the indieweb.org website. I suspect if you’re strong enough to have figured out the tech for your article, you could probably have it up and running in under an hour or so. Then instead of feeding content from your blog to the black hole of social media, you could have actual two-way communication with many social silos! Now you won’t need to pay as much attention to those other sites as you can use your WordPress site as an “app” to interact with them instead.

I’m happy to help walk you through it if you’re interested and need help. My own personal site has some documentation of some of the above as well as examples of how it works.

In some sense, hopefully this post on my site will be an interesting exemplar. I own it and “loaned” or syndicated copies to Disqus and Twitter. Comments, likes and reposts you make to the Twitter copy will automatically be ported back here after the fact using Brid.gy. (Sadly, Disqus isn’t supported–yet.)

Microblogging by Paul Robert Lloyd

Bookmarked Microblogging by Paul Robert Lloyd (paulrobertlloyd.com)
I stopped using Facebook because I didn’t trust the people behind Facebook. I had grown weary of the sly and underhand tactics used to grow their network and was unwilling to remain part of it. But if I’m honest, I couldn’t trust myself either. Visiting Facebook would elicit behaviour you could only describe as stalking; trawling through the feeds of my friends, seeking out people I vaguely knew. I had better things to do with my time. Almost a decade later, I’m having similar thoughts about Twitter.
He’s got some interesting, but subtle references to pieces of the “old” web including Small Pieces, Loosely Joined.
​​​​​​
sub·men·tion (noun informal): 1. A post about someone or something on a personal website where one neglects (accidentally or on purpose) to either send a webmention and/or syndicate a copy out to an appropriate social silo. 2. Such a post which explicitly has the experimental microformat rel=”nomention” which prevents webmention code from triggering for the attached URL. 3. Any technologically evolved form of apophasis (Greek ἀπόφασις from ἀπόφημι apophemi, “to say no”) which sends no notifications using standard Internet or other digital protocols.

Origin
Early 21st century: a blend or portmanteau of subliminal and webmention.

Pronunciation
submention /ˈsʌbˈmɛn(t)ʃ(ə)n/

Related
subtweet

Replied to a tweet by Mel ChoyceMel Choyce (Twitter)
@jeremyfelt Pingbacks need a redesign!
Not coincidentally, David Shanske (), the maintainer of Pingbacks/Trackbacks is a major contributor to the WordPress Webmention plugin as well as many other IndieWeb related WordPress tech.

Reply to a Comment on Supporting Digital Identities in School

Replied to Comment on Supporting Digital Identities in School by Christina Smith (Read Write Respond)
Your post reminded me of a challenge I see every time Couros posts about students having those three aspects of a digital identity: no matter how much we as educators may encourage this, ultimately it is up to the students to make it part of their lives. I have been blogging with my students for some years now, and when it is not a class requirement, they stop posting. I think part of this digital presence that we want students to establish – the \”residency,\” as Robert Schuetz said in the recent blog post that led me here (http://www.rtschuetz.net/2016/02/mapping-our-pangea.html) – is not always happening where we suggest. I know my students have an online presence – but it\’s on Instagram and Snapchat, not the blogsphere. Perhaps instead of dragging kids on vacation to where we think they should set up shop, we need to start following them to their preferred residences and help them turn those into sturdy, worthy places from which to venture out into the world.
This is certainly an intriguing way to look at it, but there’s another way to frame it as well. Students are on sites like Instagram and Snapchat because they’re connecting with their friends there. I doubt many (any?) are using those platforms for learning or engagement purposes, so attempting to engage with them there may not translate for educators. It may have the colloquial effect of “I’m on Snapchat because my parents aren’t; if my parents join I’m either going to block them or move to another platform they’re not on.” Something similar to this was seen in cultural teen use of Facebook as parents swarmed to the platform over the past decade. To slightly reframe it, how many high school teachers in the past have seen students in the hallways between classes socializing and thought to themselves, “I should go out and teach in the hallway, because that’s where the students are and they seem alert?”

It might also shed some light on our perspectives to look at what happens at the end of a quarter or semester in most colleges. I always remember book sellback time and a large proportion of my friends and colleagues rushed to the bookstore to sell their textbooks back. (I’ll stipulate the book market has changed drastically in the past two decades since I was in University, but I think the cultural effect is still roughly equivalent.) As a bibliophile I could never bring myself to sell books back because I felt the books were a significant part of what I learned and I always kept them in my personal collection to refer back to later. Some friends I knew would keep occasional textbooks for their particular area of concentration knowing that they might refer back to them in later parts of their study. But generalizing to the whole, most students dumped their notes, notebooks, and even textbooks that they felt no longer had value to them. I highly suspect that something similar is happening to students who are “forced” to keep online presences for coursework. They look at it as a temporary online notebook which is disposable when the class is over and probably even more so if it’s a course they didn’t feel will greatly impact their future coursework.

I personally find a huge amount of value in using my personal website as an ongoing commonplace book and refer back to it regularly as I collect more information and reshape my thoughts and perspectives on what I’ve read and learned over the years. Importantly, I have a lot of content that isn’t shared publicly on it as well. For me it’s become a daily tool for thinking and collecting as well as for searching. I suspect that this is also how Aaron is using his site as well. My use of it has also reached a fever pitch with my discovery of IndieWeb philosophies and technologies which greatly modify and extend how I’m now able to use my site compared to the thousands of others. I can do almost all of the things I could do on Facebook, Twitter, etc. including interacting with them directly and this makes it hugely more valuable to me.

The other difference is that I use my personal site for almost everything including a wide variety of topics I’m working on. Most students are introduced to having (read: forced to maintain) a site for a single class. This means they can throw it all overboard once that single class is over. What happens if or when they’re induced to use such a thing in all of their classes? Perhaps this may be when the proverbial quarter drops? Eventually by using such a tool(s) they’ll figure out a way to make it actively add the value they’re seeking. This kernel may be part of the value of having a site as a living portfolio upon graduation.

Another issue I often see, because I follow the space, is that many educational technologists see some value in these systems, but more often than not, they’re not self-dogfooding them the same way they expect their students to. While there are a few shining examples, generally many teachers and professors aren’t using their personal sites as personal learning networks, communications platforms, or even as social networks. Why should students be making the leap if their mentors and teachers aren’t? I can only name a small handful of active academic researchers who are heavily active in writing and very effectively sharing material online (and who aren’t directly in the edtech space). Many of them are succeeding in spite of the poor quality of their tools. Rarely does a day go by that I don’t think about one or more interesting thought leaders who I wish had even a modicum of online space much less a website that goes beyond the basic functionality of a broken business card. I’ve even offered to build for free some incredibly rich functional websites for researchers I’d love to follow more closely, but they just don’t see the value themselves.

I won’t presume to speak for Aaron, but he’s certainly become part of my PLN in part because he posts such a rich panoply of content on a topic in which I’m interested, but also in larger part because his website supports webmentions which allows us a much easier and richer method of communicating back and forth on nearly opposite sides of the Earth. I suspect that I may be one of the very few who extracts even a fraction of the true value of what he publishes through a panoply of means. I might liken it to the value of a highly hand-crafted trade journal from a decade or more ago as he’s actively following, reading, and interacting with a variety of people in a space in which I’m very interested. I find I don’t have to work nearly as hard at it all because he’s actively filtering through and uncovering the best of the best already. Who is the equivalent beacon for our students? Where are those people?

So the real question is how can we help direct students to similar types of resources for topics they’re personally interested in discovering more about? It may not be in their introduction to poetry class that they feel like it’s a pain doing daily posts about on a blog in which they’re not invested. (In fact it sounds to me just like the the online equivalent of a student being forced to write a 500 word essay in their lined composition book from the 1950’s.) But it’ll be on some topic, somewhere, and this is where the spark meets the fuel and the oxygen. But the missing part of the equation is often a panoply of missing technological features that impact the culture of learning. I personally think the webmention protocol is a major linkage that could help ease some of the burden, but then there’s also issues like identity, privacy, and all the other cultural baggage that needs to make the jump to online as seamlessly (or not) as it happens in the real world.

…perhaps we’re all looking for the online equivalent of being able to meld something like Maslow’s Hierarchy of Needs with Bloom’s Taxonomy?

I’ll have to expand upon it later, but perhaps we’re all looking for the online equivalent of being able to meld something like Maslow’s Hierarchy of Needs with Bloom’s Taxonomy? It’s certainly a major simplification, but it feels like the current state of the art is allowing us to put the lower levels of Bloom’s Taxonomy in an online setting (and we’re not even able to sell that part well to students), but we’re missing both its upper echelons as well as almost all of Maslow’s piece of the picture.

With all this said, I’ll leave you all with a stunningly beautiful example of synthesis and creation from a Ph.D. student in mathematics I came across the other day on Instagram and the associated version she wrote about on her personal website. How could we bottle this to have our students analyzing, synthesizing, and then creating this way?

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!

​​​​​​

IndieWeb and Webmentions plugin for WordPress FTW!

I don’t think I’d used it before or really seen it happening in the wild, but Khurt Williams used his website to reply to one of my posts via Webmention. I was then able to write my reply directly within the comments section of my original post and automatically Webmention his original back in return! Gone are the days of manually cutting and pasting replies so that they appear to thread correctly within WordPress!

Without all the jargon, we’re actually using our own websites to carry on a back and forth threaded conversation in a way that completely makes sense.

In fact, other than that our conversation is way over the 280 character limit imposed by Twitter, the interaction was as easy and simple from a UI perspective as it it is on Twitter or even Facebook. Hallelujah!

This is how the internet was meant to work!

A hearty thanks to those who’ve made this possible! It portends a sea-change in how social media works.

Three cheers for the #IndieWeb!!!

Alpha Release of Linkback Module for Drupal 8 with Webmention Support [8.x-1.0-alpha1]

Bookmarked Alpha Release of Linkback Module for Drupal 8 with Webmention Support [8.x-1.0-alpha1] by Dan FeidtDan Feidt (Drupal.org)
We are proud to bring you the first alpha release of Linkback, an interesting suite of modules which can help integrate your website with the wider internet. Linkback provides the backend functionality to save both outgoing and incoming pings and webmentions involving remote sites.
Drupal 8, now (along with platforms like WithKnown, Perch, WordPress, Craft, Kirby, ProcessWire, Elgg, and Django) has Webmention support. Congratulations to Dan Feidt (aka HongPong) and everyone involved!

This means that more websites can communicate directly with each other on the open and decentralized web. (Wouldn’t you like to “@mention” someone from your own website to theirs?) It’s a rapidly growing reality on the internet.​​​​​