For human-readable HTML, I can write:
<a href="https://example.com">Lois Lane</a>
For machine-readable HTML:
<a rel="author" href="https://example.com">Lois Lane</a>
For IndieWeb microformats:
<a class="p-author h-card" href="https://example.com">Lois Lane</a>
But for inline Schema.org I have to write:
<span property="author" typeof="person"><a property="url" href="https://example.com"><span property="name">Lois Lane</span></a>
I’ve been grumbling about all the redundancy in putting multiple sets of metadata on a page: classic meta tags, OpenGraph, Twitter cards, Schema.org, microformats2. So I’ve been looking to consolidate as much as I can.
I thought, Hey, Schema.org has inline markup implementations! I can probably just tag the same elements I used for microformats2!
But there are so many things like author where it wants a multi-part hierarchy when you could easily use a single tag.
At this point the added complexity to the code isn’t worth it. I may as well stick with the JSON-LD lump of text in the header. Heck, the extra spans and divs might actually add up to more bytes than the no-longer-duplicated content.
It’s not actually that much extra space, though, and the site in question generates all the markup from one set of markdown front matter. It just bugs me that to fill in all of them I need multiple copies of everything.
Though it is kind of funny to compare design decisions:
Facebook: We want a single block that can be copied and pasted and all looks the same. We don’t want to reuse existing tags and we don’t care about DRY.
IndieWeb: Invisible metadata inevitably gets out of date, and all this stuff that should already be on the page or in the head anyway, so let’s use what’s there and make it simple to mark up the actual page content.
Schema.org: CATEGORIZE ALLLLL THE THINGS!!!!!