<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/">
  <channel>
    <title>Blog entries tagged microformats :: mwop.net</title>
    <description>Blog entries tagged microformats :: mwop.net</description>
    <pubDate>Fri, 18 Sep 2026 11:30:10 -0500</pubDate>
    <generator>Laminas_Feed_Writer 2 (https://getlaminas.org)</generator>
    <link>https://mwop.net/blog/tag/microformats</link>
    <atom:link rel="self" type="application/rss+xml" href="https://mwop.net/blog/tag/microformats/rss.xml"/>
    <item>
      <title>Webmention support</title>
      <pubDate>Fri, 18 Sep 2026 11:30:10 -0500</pubDate>
      <link>https://mwop.net/blog/2026-09-18-webmentions.html</link>
      <guid>https://mwop.net/blog/2026-09-18-webmentions.html</guid>
      <author>contact@mwop.net (Matthew Weier O'Phinney)</author>
      <dc:creator>Matthew Weier O'Phinney</dc:creator>
      <content:encoded><![CDATA[<p>I've known about <a href="https://indieweb.org/Webmention">webmentions</a> for years, as well as <a href="https://microformats.org">microformats</a>; I've even included microformats in my markup for probably close to a decade at this point. But accepting and sending webmentions, while it seemed like a great idea, just never really made it to my priority list.</p>
<p>Until it did.</p>


<p>Inspired by <a href="https://www.jamestitcumb.com/posts/webmentions" class="u-in-reply-to">James Titcumb</a> and <a href="https://godless-internets.org/2026/08/27/critique-of-microformats2" class="in-reply-to">Owls</a>, I started investigating how to implement webmentions, and ended up going down the rabbit hole myself.</p>
<p>There has long been a <a href="https://packagist.org/packages/mf2/mf2">PHP API for Microformats (php-mf2)</a>.  It's not been updated in 4 years — largely because it's complete — and uses PCRE for finding microformats and validating URIs. Here's the thing: the last two releases of PHP (8.4 and 8.5 at the time I write this) have included some amazing features that make things like this both far simpler and  more accurate. These include the new HTML5 parser included in PHP 8.4 — which even provides <code>querySelector()</code> and <code>querySelectorAll()</code> implementations — and the <a href="https://www.php.net/manual/en/book.uri.php">Uri extension</a> included in PHP 8.5, which provides robust, standards-based URL parsing and validation.</p>
<p>Add in things like <a href="https://www.php-fig.org/psr/psr-18/">PSR-18's HTTP Client</a>, and it seemed possible to create a pretty minimal library that gives full-featured support for both microformats and webmentions.</p>
<p>So, I decided to try my hand at it.</p>
<p>I'll likely open source the libraries I created (one for parsing microformats, another for sending and receiving webmentions), but I want to wait until I've ironed out any edge cases. While I've tested against the various resources that <a href="https://webmention.rocks">webmention.rocks</a> provides, as well as the <a href="https://microformats.org">microformats website</a>, I'm sure that I'll be observing some oddities in the wild. But I have webmention receiving in place, with microformats discovery for identifying the type of webmention sent to my site. I have also setup a post-publication process for parsing my own content for links, and performing webmention discovery and sending. I want these all to run for a while to find what is working and what isn't in the real world.</p>
<p>In the meantime, feel free to send webmentions to my <a href="/blog">blog posts</a>, <a href="/art">art gallery images</a>, or <a href="/now">Now pages</a>. Just like my comments, I moderate all webmentions before publishing them (someday I'll blog about how I accomplished that as well).</p>
<h4>Update</h4>
<p>I immediately discovered an error in how I was combing <em>my own content</em> for potential links to which to send webmentions when I first published this! Hopefully I have that corrected now, and folks will get some mentions from this post!</p>


<div class="h-entry">
    <img class="u-photo photo" width="50" src="https://avatars0.githubusercontent.com/u/25943?v=3&u=79dd2ea1d4d8855944715d09ee4c86215027fa80&s=140" alt="matthew">
    <a class="u-url u-uid p-name" href="https://mwop.net/blog/2026-09-18-webmentions.html">Webmention support</a> was originally
    published <time class="dt-published" datetime="2026-09-18T10:12:40-05:00">18 September 2026</time>
    on <a href="https://mwop.net">https://mwop.net</a> by
    <a rel="author" class="p-author" href="https://mwop.net">Matthew Weier O&#039;Phinney</a>.
</div>
]]></content:encoded>
      <slash:comments>0</slash:comments>
    </item>
  </channel>
</rss>
