<p>This conversation took almost an hour, so I split it into two shows:</p>

<ul>
  <li>Part 1 talks mostly about the RFC itself, what it means and why.</li>
  <li>Part 2 goes into personal experiences with the RFC and with syndication in general, in particular in the context of web comics. This is part 1.</li>
</ul>

<h2 id="the-why">The why</h2>

<p>When serving most RSS/Atom feed readers today, you have to choose: Do you make a complete feed with all the things you ever published, or do you make a shorter feed with just the latest entries?</p>

<p>This is a trade-off with pros and cons, and it seems like a trade-off you have to make, but a solution to let your Atom feed have the cake and eat it too existed already 13 years ago, if only any of our feed readers would adhere to it: RFC 5005, <em>Feed Paging and Archiving</em></p>

<h2 id="the-what">The what</h2>

<p><a href="https://tools.ietf.org/html/rfc5005">https://tools.ietf.org/html/rfc5005</a> was published in September 2007</p>

<ul>
  <li>The XML namespace for RFC 5005 elements is <code>https://purl.org/syndication/history/1.0</code>, aliased as <code>fh</code> below.</li>
  <li>Section 2 defines the <em>complete feed</em>: It is one document (Atom file) that contains the entire set the feed describes. The document is marked with an <code>fh:complete</code> element.</li>
  <li>Section 3 defines the <em>paged feed</em>: It is a series of documents connected with Atom <code>link</code> elements with <code>rel</code> set to the <em>link relations</em> <code>first</code>, <code>last</code>, <code>previous</code> or <code>next</code>.</li>
  <li>Section 4 defines the <em>archived feed</em>: It has a <em>subscription document</em> that may change at any time, and a series of <em>archive documents</em> that are expected to have stable contents and URIs. The link relations defined are <code>current</code>, <code>prev-archive</code> and <code>next-archive</code>. The semantics are clearer: <code>prev-archive</code> refers to previously published entries, and because the contents are stable you can stop when you see a URI to a document you already have. Archive documents are marked with the <code>fh:archive</code> element.</li>
</ul>

<h2 id="the-who">The who</h2>

<p>In this show I’m talking to:</p>

<h3 id="fluffy">fluffy</h3>

<ul>
  <li>Federated social web:<br />
<a href="https://queer.party/@fluffy">https://queer.party/@fluffy</a></li>
  <li>Writes and makes things in several creative fields:<br />
<a href="https://beesbuzz.biz/">https://beesbuzz.biz/</a></li>
  <li>Publ is like a static site generator, but dynamic. It produces RFC 5005 archive feeds, of course:<br />
<a href="https://publ.beesbuzz.biz/">https://publ.beesbuzz.biz/</a></li>
  <li>Thoughts on ephemeral content vs content worth archiving and how they relate to protocols:<br />
<a href="https://beesbuzz.biz/blog/5709-Keeping-it-personal">https://beesbuzz.biz/blog/5709-Keeping-it-personal</a></li>
</ul>

<h3 id="jamey">Jamey</h3>

<ul>
  <li>Federated social web:<br />
<a href="https://toot.cat/@jamey">https://toot.cat/@jamey</a></li>
  <li>Blog:<br />
<a href="https://minilop.net/">https://minilop.net/</a></li>
  <li>Made a prototype full-history reader that follows RFC 5005 links:<br />
<a href="https://reader.minilop.net/">https://reader.minilop.net/</a></li>
  <li>Made a webcomic reader mostly mentioned in Part 2:<br />
<a href="https://www.comic-rocket.com/">https://www.comic-rocket.com/</a></li>
  <li>Made a WordPress plugin implementing RFC 5005:<br />
<a href="https://github.com/jameysharp/wp-fullhistory">https://github.com/jameysharp/wp-fullhistory</a></li>
  <li>Made an RFC 5005 archive feed synthesizer for sites with a predictable post frequency and URL structure:<br />
<a href="https://github.com/jameysharp/predictable/">https://github.com/jameysharp/predictable/</a><br />
Hosted at <a href="https://fh.minilop.net/">https://fh.minilop.net/</a></li>
  <li>Was on HPR 9 years ago, talking about Xorg!<br />
<a href="https://hackerpublicradio.org/eps.php?id=0825">https://hackerpublicradio.org/eps.php?id=0825</a></li>
</ul>

<h2 id="conversation-notes">Conversation notes</h2>

<ul>
  <li>Google Reader was terminated 2013-07-01, all subscription data permanently gone on 2013-07-15:<br />
<a href="https://www.google.com/reader/about/">https://www.google.com/reader/about/</a></li>
  <li>Mastodon had Atom feeds with paging, but the feeds went away when OStatus went away:<br />
<a href="https://github.com/tootsuite/mastodon/pull/11247">https://github.com/tootsuite/mastodon/pull/11247</a></li>
  <li>HTML4 does indeed define the HTML link relations:<br />
<a href="https://www.w3.org/TR/html4/types.html#h-6.12">https://www.w3.org/TR/html4/types.html#h-6.12</a><br />
It has <code>prev</code> rather than the <code>previous</code> of RFC 5005, but mentions that some browsers support <code>previous</code> as an alias.</li>
  <li>HTML5 also defines the HTML link relations:<br />
<a href="https://html.spec.whatwg.org/multipage/links.html">https://html.spec.whatwg.org/multipage/links.html</a><br />
Here <code>previous</code> is a lower-case <em>must</em> for historical reasons.</li>
  <li>IANA manages the Registry of Link Relations:<br />
<a href="https://www.iana.org/assignments/link-relations/link-relations.xhtml">https://www.iana.org/assignments/link-relations/link-relations.xhtml</a><br />
It references RFC 5005 for the Section 4 relations, but not the Section 3 ones.</li>
  <li>RFC 5005 singles out its own Section 3 (<em>Paged Feeds</em>) as the best-effort, loose, discouraged model.
    <ul>
      <li>Section 3:
        <blockquote>Therefore, clients SHOULD NOT present paged feeds as coherent or complete, or make assumptions to that effect.</blockquote>
      </li>
      <li>Section 4:
        <blockquote>Unlike paged feeds, archived feeds enable clients to do this without losing entries.</blockquote>
      </li>
    </ul>
  </li>
  <li>I’m confused about it in the show, but the RFC is clear that an <em>archived feed</em> has one dynamic <em>subscription document</em>, which points to a chain of immutable <em>archive documents</em>.</li>
  <li>Back in 2002, Aaron Swartz published his joke MIME-header-based <em>RSS 3</em>:<br />
<a href="https://www.aaronsw.com/weblog/000574">https://www.aaronsw.com/weblog/000574</a><br />
The cultural context at the time and the rivalry between RSS 0.91+, RSS 1.0, RSS 2.0 and Atom deserves a show of its own.</li>
</ul>
