(((•)))
tech.interfluidity.com
a notebook by steve randy waldman
→ See also top, archive, subscribe, drafts blog, interfluidity main
2025-01-06 ⇒

# Supporting all-item RSS

In addition to single-item RSS for each post, this blog now offers all-item-rss. Check it out.. It's effectively a full-content archive of the site, in the form of easy-to-parse RSS.

`drafts.interfluidity.com` supports both of these features as well. (Here's the all-items-feed, an example single-item-feed.)

The channel element of these feeds includes metadata describing them. `iffy:curation` describes how many and what sort of items are included in the feed. `iffy:completeness` describes how complete each item is, i.e. whether it include full content, or even potentially embeds media.

Here's an example from an all-item feed:

    <?xml version='1.0' encoding='UTF-8'?>
    <rss version="2.0" xmlns:iffy="http://tech.interfluidity.com/xml/iffy/" 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/">
      <channel>
        ...
        <iffy:curation>
          <iffy:all/>
        </iffy:curation>
        <iffy:completeness>Content</iffy:completeness>
        ...
      </channel>
    </rss>

Here is an example from a single-item feed:

    <?xml version='1.0' encoding='UTF-8'?>
    <rss version="2.0" xmlns:iffy="http://tech.interfluidity.com/xml/iffy/" 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/">
      <channel>
        ...
        <iffy:curation>
          <iffy:single/>
        </iffy:curation>
        <iffy:completeness>Content</iffy:completeness>
        ...
      </channel>
    </rss>

An ordinary syndicatin feed that includes curation and completeness metadata looks like this:

    <?xml version='1.0' encoding='UTF-8'?>
    <rss version="2.0" xmlns:iffy="http://tech.interfluidity.com/xml/iffy/" 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/">
      <channel>
        ...
        <iffy:curation>
          <iffy:recent last="5"/>
        </iffy:curation>
        <iffy:completeness>Content</iffy:completeness>
        ...
      </channel>
    </rss>

All-item and single-item feeds, like syndication feeds, are discoverable in `<link rel="alternate">` elements of the HTML pages of the blog.

But they are not intended to be discovered by feed readers, which expect short feeds of recent posts for syndication. In order to prevent discovery of these feeds by feed readers, we give them special MIME type in HTML link elements only. These are still RSS feeds. Their "true" MIME type is still `application/rss+xml`.

But in HTML link elements — only in HTML link elements — I use more specific, less standard MIME types, to throw unwitting feed readers off the scent. These MIME types are `application/x-all-item-rss+xml` and `application/x-single-item-rss+xml`.

Here's the HTML link element to a site's all-item feed:

      <link rel="alternate" type="application/x-all-item-rss+xml" title="drafts.interfluidity.com - all items" href="https://drafts.interfluidity.com/all-item-feed/index.rss">

Here's the HTML link element from a post permalink to that post's single-item feed:

      <link rel="alternate" type="application/x-single-item-rss+xml" title="Segmentation fault" href="index.rss">

While ordinary feed readers should ignore these feeds, clients resolving `iffy:item-ref` tags might find single-item and all-item feeds very useful.

← Updated: The 'iffy' XML namespace
↑↑↑
Syndicating RSS to Mastodon and BlueSky with feedletter →