#microformats 2025-12-18

2025-12-18 UTC
sebbu2, [tw2113], glacier, duanin2, thatcher, leah1, barnaby, [aciccarello] and Izzyp joined the channel
#
[snarfed]
so, I'm trying to understand the top-level rels and rel-urls fields that mf2 parsers output. I don't see them on https://microformats.org/wiki/microformats2 . are they common but non-standardized?
#
[snarfed]
the problem I'm working on is that rel-urls is a map keyed on URL, and the value is another map with a singly-valued type field, but there can be multiple <link rel=...>s for the same URL with different types. https://github.com/snarfed/bridgy-fed/issues/2255
barnaby joined the channel
#
[KevinMarks]
I think that's a conneg-- thing - when we designed it we didn't allow for connection negotiation
#
[snarfed]
hmm. maybe? oh, you mean, you assumed that every URL would have only one type?
#
[snarfed]
I guess. there are also "compatible" types, even without any conneg on either side, eg application/activity+json and application/ld+json; profile="https://www.w3.org/ns/activitystreams" ...but I take your point
#
[snarfed]
were rels and rel-urls always de facto, never actually part of the mf2 parsing standard?
#
[KevinMarks]
No they're in the spec.
#
[snarfed]
aha I totally missed it
#
[snarfed]
thank youQ
#
[KevinMarks]
hm. We'd have to make a breaking change to turn `text` and `type` into lists. Would that be enough? Would we need to make the lists strictly follow document occurence so the text and type align?
#
[snarfed]
maybe? 🤷
#
[KevinMarks]
we could ask dinosaur comments to remove the `<link rel="alternate" type="application/rdf+xml" title="RSS .91" href="https://qwantz.com/rssfeed.php">` as it's actually an RSS 2.0 feed and isn't RDF
#
[KevinMarks]
also +1 for `title="RSS stands for 'REALLY SUPER COMICS', it is a terrible acronym with many structural problems"`
#
[tantek]
what problem are people trying to solve here?
#
[tantek]
and yeah if people aren't using the existing tech properly, then it's unlikely they'll use something new properly
#
[KevinMarks]
if there are multiple rel links to the same url, we lose the additional info for type, text etc
#
[snarfed]
[tantek] the concrete problem is feed autodiscovery on https://qwantz.com/ with an mf2 parser. https://github.com/snarfed/bridgy-fed/issues/2255
#
[tantek]
that looks like markup copy pasta bugs
#
[KevinMarks]
are you filtering on type then?
#
[tantek]
advertising a single URL with different "type" values seems wrong
#
[tantek]
I doubt the developer is trying to do some sort of markup enabled conneg hack
#
[KevinMarks]
that's giving a bit too much trust to the source over the linked-to document
#
[tantek]
when you curl the URL, it presumably returns a specific content type. that's what should go in the "type" attribute
#
[KevinMarks]
no, that is absolutely historic markup
#
[tantek]
as I said, it's broken
#
[tantek]
so the developer should fix it
#
[tantek]
there is no actual use-case to solve here
#
[KevinMarks]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><link rel="SHORTCUT ICON" href="/favicon.ico"><link rel="alternate" type="application/rdf+xml" title="RSS .91" href="https://qwantz.com/rssfeed.php"><link rel="alternate" type="application/rss+xml" title="Dinosaur Comics"
#
[KevinMarks]
content="@dinosaurcomics"><meta name="twitter:title" content="Dinosaur Comics!"><meta name="twitter:description" content="how can i be REsponsible if i haven&#039;t been sponsible yet even once"><meta name="twitter:creator" content="@ryanqnorth"><meta name="twitter:image:src" content="https://www.qwantz.com/comics/comic2-5115.png"><meta property="og:url" content="https://www.qwantz.com/index.php?comic=4417" /><meta
#
[KevinMarks]
href="https://qwantz.com/rssfeed.php"><meta name="title" content="dinosaur comics"><meta name="description" content="this comic... might be the best comic?"><meta name="keywords" content="dinosaur, comics, utahraptor, t-rex, dromiceiomimus, funny, humour, humor, constrained writing, extremely sexy dinosaurs, wait is that gross"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site"
#
[KevinMarks]
property="og:determiner" content="a" /><meta property="og:title" content="Dinosaur Comics!" /><meta property="og:description" content="how can i be REsponsible if i haven&#039;t been sponsible yet even once" /><meta property="og:type" content="website" /><meta property="og:image" content="https://www.qwantz.com/comics/comic2-5115.png" /><link rel="stylesheet" type="text/css" href="style19.css" media="screen" title="Default" /><link
#
[KevinMarks]
rel="stylesheet" type="text/css" href="/style19.css" media="screen" title="Default" />
#
[KevinMarks]
<!--[if lt IE 7]>
#
[KevinMarks]
<link rel="stylesheet" type="text/css" href="/iesucks.css" />
#
[KevinMarks]
<![endif]-->```
#
[tantek]
curl http://qwantz.com/rssfeed.php and LMK what content-type it returns. I'll wait
#
[snarfed]
this is before fetching any URLs
#
[snarfed]
there's a valid <link rel=alternate type=application/rss+xml> in the HTML. if we say, feed autodiscovery shouldn't work on that site because it has a previous <link rel=alternate> for the same URL and a different type...ok, I guess, but that seems overly harsh
#
[tantek]
then delete the link element with the wrong content-type
#
[snarfed]
I don't plan to ignore the type attrs and fetch or even head every rel=alternate URL just to see what it serves
#
[KevinMarks]
you could accept `type="application/rdf+xml"` as a possible feed value and let FeedParser sort it out
#
[tantek]
not programmatically, I mean as forensics
#
[snarfed]
BF has 130k users. I don't do per-user forensics
#
[snarfed]
at least not outside debugging
#
[KevinMarks]
'cos FeedParser can handle buggered up feeds anyway
#
[tantek]
one of those link elements is lying
#
[tantek]
I don't think consuming code should have to do extra work with lying markup
#
[snarfed]
right. so the answer here is, feed autodiscovery shouldn't work on http://qwantz.com because of that publishing bug?
#
[snarfed]
I'll accept that, just want to confirm
#
[KevinMarks]
`<?xml version="1.0" encoding="UTF-8" ?><?xml-stylesheet type="text/css" href="http://www.qwantz.com/rss.css"?><rss version="2.0">` is what the file says
#
[tantek]
or for bugward compat, you treat "application/rdf+xml" as an alias for "application/rss+xml"
#
[snarfed]
yeah that's maybe reasonable
#
[tantek]
because no one is "only" publishing RDF feeds. that's dead
#
[KevinMarks]
given you're throwing the feeds at FeedParser anyway, it will deal with that for you
#
[snarfed]
hah I don't even know what an RDF feed is
#
[KevinMarks]
I bet there's one person, probably in the SocialWG still doing it just to be contrary
#
[tantek]
snarfed, you sort of do. it's what "RSS 1.0" was
#
[tantek]
it's the defunct W3C version of RSS
#
[KevinMarks]
and 0.91 but not 0.92
#
[KevinMarks]
I linked some of this into feed wars recently. markp was very effusive about what a pain it was while he was building feedparser testcases
#
[tantek]
I've covered a bunch of this in http://indieweb.org/timeline
#
[tantek]
with citations
#
[artlung]
2 mentions of Mark Pilgrim in one day. I can't tell if that's terrible or awesome. Probably it's both.
#
[KevinMarks]
↩️ oops, 0.9 was RDF, 0.91 removed that
[pfefferle] and gRegor joined the channel