I presented during the 2022 Netherlands WordCamp edition in Arnhem on turning all WordPress sites into fully IndieWeb enabled sites. Meaning turning well over a third of the web into the open social web. Outside all the silos.

The slides are available in my self-hosted Slideshare replacement for embed and download, and shown below.

I have been blogging a long time, and can tinker a bit with code (like a home cook). I want my site to be the center of how I read and write the web. Its purpose is to create conversations with others, who write in their own spaces on the web. The IndieWeb community supports that with a number of technical building blocks that allow me a set of pretty cool things. But all that IndieWeb offers has a high threshold for entry.

The key parts of IndieWeb to me, the parts that make interaction between websites possible, that allow any site to be an active part of many conversations, are much simpler though:

  • Microformats2 so that computers know how to interpret our blogposts,
  • some class declarations, so computers know why we link to some other web page,
  • and WebMention, the protocol that lets a web page know another page is linking to them.

Making interaction possible between site authors, across sites, just by writing as they already do, is both the simplest to arrange and the most impactful. It’s not something that site authors should have to deal with though, it should be in your website’s engine. WordPress in my case, and an enormous amount of other websites.
Ensuring that WordPress Themes, and Gutenberg blocks would support and could handle Microformats2 and classes correctly therefore will have a huge impact.

Over 40% of the open web would then with a single stroke be the open social web. No need for data hungry silo’s, no place for algorithmic timelines designed to keep you hooked.

WordPress wants to be the Operating System for the Web. That OS is missing social features, and it’s not a big leap to add them with existing web protocols. No website owner would have to be a coder, be it home cooking style or professional, to use those social features and create conversations. It would just be there.

If you build WP Themes, if you create Gutenberg blocks, you’re invited to help make this happen.

(also posted to Indienews)

Somehow it is hard for me to find any comments I make in Hypothes.is (h.) on the annotations of others. If I don’t remember on which annotation I commented it even becomes impossible. If someone else has responded to my comment, I get an e-mail with a link and that is the only reliable way I know to retrieve my own comments. H. help files don’t seem to mention it.

I would expect any comments I make to appear in my own overview of annotations, but they don’t.

Here’s a comment I made on an annotation by another user (screenshot below).

Notice I tagged the comment with ‘zettelkasten’.

The comment does not appear in my general overview of annotations I made, although it is in itself an annotation.

The comment also does not appear when searching my own profile using the tag I added to the comment.

I see Chris Aldrich filed the same issue, last February, but got no response. I added my own comment there to perhaps make the issue visible again.

Yesterday, musing about traversing my social graph through blogrolls, I suggested using OPML’s include attribute as a way of adding the blogrolls of the blogs I follow in my own blogroll. Ideally using a spec compliant OPML reader, you’d be able to seamlessly navigate from my blogroll, through the blogroll of one of the blogs I follow, to the blogroll of someone they follow, and presumably back to me at some point.
It does require having an OPML version of such blogrolls available. Peter publishes his blogroll as OPML as I do, allowing a first simple experiment: do includes get correctly parsed in some of the Outliner tools I have?

Adding an include into my OPML file

This little experiment starts with adding to my list of RSS feeds I follow a reference to Peter’s own OPML file of feeds he follows. I already follow two of Peter’s RSS feeds (blogposts and favourites) which I now placed in their own subfolder and to which I added an outline node of the include type, with the URL of Peter’s OPML file.


Screenshot of my OPML file listing the RSS feeds I follow. Click to enlarge. On line 22 you see the line that includes Peter’s OPML file by mentioning its URL.

Trying three outliners

Cloud Outliner (which I in the past used to first create outlines that could then be sent to Evernote) does not parse OPML includes correctly upon import. It also doesn’t maintain any additional attributes from OPML outline nodes, just the text attribute.


Screenshot of Cloud Outliner showing incorrect import of my OPML file. Click to enlarge.

Tinderbox like Cloud Outliner fails to load OPML includes as per spec. It does load some of the attributes (web url, and description, next to the standard text attribute), but not any others (such as the feed url for instance, the crucial element in a list of RSS feeds). It looks like it only picks up on attributes that are directly mappable on pre-existing default attributes within Tinderbox itself.


Screenshot of how Tinderbox imports my OPML file. It keeps some attributes but ignores most, and for includes just mentions the URL

Electric Drummer does correctly import the entire OPML outline. As Dave Winer is both the original creator of the OPML specification and more recently of the Electric Drummer app, this is consistent. Electric Drummer picks up on all attributes in an imported OPML file. Upon import it also fetches the external OPML files listed as includes from their URLs, and fully incorporates them into the imported outline.


Screenshot of Drummer, which incorporates the content of Peter’s OPML file I linked to in my OPML file. Click to enlarge.

Opening up options for tinkering

So at least there is 1 general outliner tool that can work with includes. It probably also means that Dave’s OPML package can do the same, which allows me to tinker at script level with this. One candidate for tinkering is, where a blogger has a blogroll, just not in OPML, to use the OPML package to convert scraped HTML to OPML, and include it locally. That allows me to traverse sets of blogrolls and see the overlap, closed triangles, feedback loops etc. I could also extend my own published blogroll by referencing all the published blogrolls of the bloggers I follow. For you my blogroll would then support exploration and discovery one step further outwards in the network. In parallel I can do something similar for federated bookshelves (both in terms of books as in terms of lists of people who’s booklists and their lists of people you follow)

Favorited dev Notes for Markdown in RSS by Dave Winer

As part of celebrating twenty years of RSS, Dave Winer adds the ability to incorporate markdown in RSS feeds. Essentially this was always possible, but there was no way to tell a RSS reader that something was to be interpreted not as HTML but as Markdown. Doing this makes it possible to provide both HTML and Markdown in the same feed, if Markdown is e.g. the way you’ve written a posting and want to be able to also edit it again in Markdown, and not in HTML.

After my hiatus I think this is worth an experiment to see if I can generate an RSS feed directly from my markdown notes on my local system. Just like I already can generate OPML feeds and blogposts or website pages from my notes. Chris Aldrich recently asked about using WordPress and Webmention as a way of publishing your own notes with the capability of linking them to other peoples notes. Could RSS play a role there too? Could I provide selected RSS feeds for specific topics directly from my notes? Or for specific people? For them to read along? Is there something here that can play a role in social sharing of annotations, such as Hypothes.is provides? I need to play with this thought. RSS is well understood an broadly used, providing not just HTML but also Markdown through it sounds like a step worth exploring.

Robin Sloan has proposed a protocol, Spring ’83, that serves publisher’s content like a magazine stand. You see a board of cards, where cards get replaced whenever its publisher releases a new one. He aims to ditch the timeline experience it seems, partly considering form and content as pieces of the same expression, as well as a way to maintain space for voices that do not express themselves every other minute but way more infrequently.

A Beijing news stand with spread out mags competing for your attention. Image by Peter Ashlock, license CC BY

Others in my feedreader have commented on it in the past days and it gets me thinking. Not in any structured way yet. No idea yet therefore what I think about this in a form I can narrate, but some associations come to mind.

I do like the notion of small cards. Makes me think of Hugh’s Gaping Void back-of-a-business-card drawings, and of tiny zines made as a folded single sheet chapbook. The set limit creates friction for creativity to feed on. Yet, the built in size limit, when putting more of them together on a ‘board’ may well mean the same drawbacks as in Twitter, aiming for the highest attention grabbing value. Magazines in a kiosk do the same thing after all, using the cover to try and lure you into reading them. Look at that image above. Does that make a board of cards just a collection of adverts for your attention? Reading Maya’s annotations, there too the scarcity mindset a board of such cards might introduce is raised. Are there other ways to thread such cards?

The focus on p2p distribution, and on making it easy to put out there, chimes with me in terms of networked agency and in terms of low thresholds for such agency.

The notion where softer voices have the same claim to space as louder ones (i.e. more frequently posting ones) I appreciate a lot. Kicks Condor in his Fraidycat feedreader provides neat sparklines indicating frequency of posting, and allocates every single author the same space by displaying their last few postings regardless of timelines. That points back as well to my use of social distance (not the pandemic kind!) as a method to order presentation of feeds I follow, in a person focused way, and less a timeline. I follow people’s expressions, not blogs as publications. It also makes me cringe at the use of the word publisher in Robin Sloan’s explanation.

À propos following people, Maya also mentions how she likes to see friction between different strands of her online expression (e.g. blogposts, and Mastodon messages). Such different strands have different qualities to them, and having them in one place, like an IndieWeb enabled site may put them too closely or too obviously together. The notion of friction is important I think when getting to know someone online in more detail by following more of their online traces. I follow people, and for a good number I follow multiple traces (photos, posts, tweets e.g.). Combining those traces needs friction I feel, getting to know someone better from their expressions needs a certain effort. That’s about me having something at stake in building interaction. Blogs are distributed conversations to me and you need to invest your presence in such conversations. Connecting with others should be extremely easy in terms of being able to connect, but certainly not effortless in terms of time spent on the actual connecting. Way back when (2006), Lilia and I had conversations about this, and it’s still relevant now. My site purposefully introduces friction to readers: casual visitors see only a fraction of the postings, some content is only shared through RSS and not findable in the site, some content is both not listed nor shared through feeds etc. All the fragments are still in the same place, mine, though, and not farmed out to various silos to create the same effect of deliberate fragmentation. It means I’ve greatly reduced the friction for me as author using IndieWeb, not eroded the needed friction for readers. Someone who puts in the effort will be able to gather all my traces in their reader.

Tracy Durnell has some remarks, and compares Spring ’83 to IndieWeb efforts and discusses the visual aspects. Her suggestion showing a blogroll as cards, not as a list, is a good one I think, perhaps showing the last three postings the Fraidycat way? I’ve seen others do it as a river of news, but that once more provides additional amplification to the loudest authors.
Louis Potok takes a first look under the hood.

I’ve been musing about the use and value of a shared annotation tool like Hypothes.is. Chris Aldrich kindly responded in detail on my earlier questions about Hypothes.is. Those questions, about silo-effects, performativity if the audience for annotations isn’t just me, and what group forming occurs, are I think the key issues in judging its use to me. Circumventing the silo, integration with my own internal workflows and preventing performativity so fragile explorative learning may take place are the key concerns, where the potential of interaction and group forming in stimulating learning are the value it may yield.

I don’t yet readily see how I can use hypothes.is for annotation, as I think it would largely mean a switch away from annotating locally to doing so in-browser or rather in Chrome which is less a browser and more an adtech delivery vehicle. In general the browser is not a helpful environment for me when it comes to making notes. I now close a browser tab after clipping a web text to markdown which I then annotate locally later.

A first useful step I do see is bringing how others annotate my postings back to my own notes. Currently there are 66 annotations on my blogposts, stretching back three and a half years (mostly by the same person). I should be able to pull those in periodically through Hypothes.is’ API, or from an RSS feed, and integrate them into my local notes or perhaps show them alongside my blogposts (maybe by generating WebMentions about them, as I did here manually). As I have stated often, blogging means having distributed conversations and if Hypothes.is is where some of those conversations originate it is worthwile to make them visible.