As part of my Indieweb effort I’ve now been through all of my post archive and manually added appropriate markup - mostly where I had imported posts from Tumblr which were reblogs of others. This thankless, pointless task is why I’ve not posted so much here so far this year. On the plus side, it did lead to me making improvements to the microformat markup I’d already added to my Jekyll includes and templates, but on the down side, in trying to figure out what parts of old posts were my content as opposed to content I’d quoted, I discovered a lot of the Tumblr URLs were no longer valid anyway (hence the pointlessness of the task).

One of my major stumbling blocks was figuring out how to do nested quotations / h-cites. So I put together the mockup I’ve linked to and posted to the Indiewebcamp IRC channel for help. I’m glad I did as I prefer the result I’ve ended up with compared to my original idea; I am aware of the irony of purely linking to something I have not PESOSed when discussing the Indieweb.

Here’s an actual instance of putting this into practice and the corresponding parsed json.

There are some potential downsides to microformats due to the limitations of how they work:

  • Repetition. With three nested quotations/reblogs the name of the post has to be repeated three times. To me, this looks messy visually even if it is semantically correct. I could alter the markup so that this is hidden from view and I might yet, even if that is frowned upon; relatedly, implied properties are great until you don’t want them implied and then you have to define things multiple times.
  • Extra markup. It was necessary to add extra markup (surrounding blockquotes, etc) so that the relevant elements and microformat properties would be contained within the intended root class name.
  • Microformat properties belong to the closest root level microformat parent. So you’ve got to be aware of where you place them. In the linked example I originally had u-repost-of within the h-cite, but this had to be pulled outside the h-cite element so it was recognised as a property of the h-entry. Perhaps it would be useful to have certain properties only belong to certain root classes so it doesn’t matter if they are nested within other root level classes? Perhaps that would be way too hard to implement and parse though?
  • URL based properties are limited. I wish there was something like u-slug-name so I could use the last part of a URL to indicate the name of the post/work.

A basic example:

<blockquote class="h-cite">
	<p><a class="p-name u-url" href="http://some.where">Title</a> by <span class="p-author">Author</span>:</p>
	<blockquote>
		<p class="p-content">Something intelligent</p>
	</blockquote>
</blockquote>
  • h-* is the root level. So any elements within this element get parsed in that context (huh? like that makes it any clearer).
  • p-* for simple text properties. So the text contained wholly and immediately within that element. So for the h-cite above the name (p-name) is “Title” and the author (p-author) is “Author”.
  • u-* for url derived properties. Typically using u-url on the anchor (a) to indicate that the href is the URL for the work being quoted (cited, h-cite), although as far as I can tell there is nothing stopping you from using u-name and/or u-author as well which would indicate that the entire URL is the name of the work and also the author; this would make no sense, but it would parse fine.
  • e-* for element tree. Basically when p isn’t enough. So typically the h-cite would have content and you could indicate the content by using p-content if you were quoting a single sentence, but perhaps you are quoting a few paragraphs which contain links, etc and thus html structure - that’s when you use e-content.

[EDIT: 2015-03-13] I’ve had a bit of a wobble that I may have got this wrong and perhaps should have used u-in-reply-to instead of u-repost-of for these imported Tumblr posts because Indieweb seems to classify reposts as posts that are solely 100% of the original content with no amendments, comments or additions. And that perhaps my efforts to shift u-repost-of out of the blockquote and under h-entry may have been the wrong idea as it may then give the impression my content (comments, etc) are the bit that have been reposted. But then I re-read the Indieweb definition of replies and that definitely doesn’t fit these imported Tumblr posts. I’m not sure on where the u-repost-of should be. Perhaps it would make sense under a h-cite? Although I think they are meant to be used on h-entry? So for the time being I’m giving up and staying with the way I’ve done it. It’s good enough for now.