Diff of /xml/iffy/index.html

Revision 7f272e9b81c08396eb5e1f9e2209e6977a2f39af => current


Line7f272e9b81c08396eb5e1f9e2209e6977a2f39afcurrent
1<!DOCTYPE html><!DOCTYPE html>
2<html><html>
3 <head> <head>
85 <hr class="below-title"> <hr class="below-title">
86 </div> </div>
87 <div class="update-prepend rss-description-exclude"> <div class="update-prepend rss-description-exclude">
88 <em> ➣  This post was meaningfully revised at 2024-12-22 @ 10:40 AM EST. The previous revision is <a href="index-oldcommit-c1c3071b0ac3127c2969b24e26d439510fdc8c96.html">here</a>, diff <a href="index-diff-c1c3071b0ac3127c2969b24e26d439510fdc8c96-to-current.html">here</a>. (See <a href="index.html#update-history">update history</a>.) <br> <em> ➣  This post was meaningfully revised at 2025-08-30 @ 06:50 PM EDT. The previous revision is <a href="index-oldcommit-7f272e9b81c08396eb5e1f9e2209e6977a2f39af.html">here</a>, diff <a href="index-diff-7f272e9b81c08396eb5e1f9e2209e6977a2f39af-to-current.html">here</a>. (See <a href="index.html#update-history">update history</a>.)
89 ➣  This post is expected to evolve over time. You can subscribe to ongoing updates <a href="index-sprout.rss">here</a>. <br> ➣  This post is expected to evolve over time. You can subscribe to ongoing updates <a href="index-sprout.rss">here</a>.
90 <link rel="alternate" type="application/rss+xml" title="Update to The 'iffy' XML namespace" href="https://tech.interfluidity.com/xml/iffy/index-sprout.rss"></em> <link rel="alternate" type="application/rss+xml" title="Update to The 'iffy' XML namespace" href="https://tech.interfluidity.com/xml/iffy/index-sprout.rss"> </em>
91 <hr> <hr>
92 </div> </div>
93 <div class="entry-body"> <div class="entry-body">
159 <p><code>iffy:completeness</code> describes the completeness that clients should expect of RSS <a href="https://www.rssboard.org/rss-specification#hrelementsOfLtitemgt"><code>item</code></a> elements.</p> <p><code>iffy:completeness</code> describes the completeness that clients should expect of RSS <a href="https://www.rssboard.org/rss-specification#hrelementsOfLtitemgt"><code>item</code></a> elements.</p>
160 <ul> <ul>
161 <li> <li>
162 <p><code>Ping</code> makes the least commitment. Items need not include a <a href="https://www.rssboard.org/rss-specification#ltguidgtSubelementOfLtitemgt"><code>guid</code></a> element, or any elements at all beyond <a href="https://www.rssboard.org/rss-specification#hrelementsOfLtitemgt">RSS' requirement</a> that at least one of <code>title</code> or <code>description</code> be present. RSS documents have completion <code>Ping</code> by default. Any or all items may meet the requirement for a higher completeness level, but no promises or commitment is made beyond the base specification.</p></li> <p><code>Ping</code> makes the least commitment. Items need not include a <a href="https://www.rssboard.org/rss-specification#ltguidgtSubelementOfLtitemgt"><code>guid</code></a> element, or any elements at all beyond <a href="https://www.rssboard.org/rss-specification#hrelementsOfLtitemgt">RSS' requirement</a> that at least one of <code>title</code> or <code>description</code> be present. RSS documents have completion <code>Ping</code> by default. Any or all items may meet the requirement for a higher completeness level, but no promises or commitment is made beyond the base specification.</p>
163 </li>
164 <li> <li>
165 <p><code>Metadata</code> commits that each item MUST include a <a href="https://www.rssboard.org/rss-specification#ltguidgtSubelementOfLtitemgt"><code>guid</code></a> element, as well as meeting the base requirements for an RSS <a href="https://www.rssboard.org/rss-specification#hrelementsOfLtitemgt"><code>item</code></a>.</p></li> <p><code>Metadata</code> commits that each item MUST include a <a href="https://www.rssboard.org/rss-specification#ltguidgtSubelementOfLtitemgt"><code>guid</code></a> element, as well as meeting the base requirements for an RSS <a href="https://www.rssboard.org/rss-specification#hrelementsOfLtitemgt"><code>item</code></a>.</p>
166 </li>
167 <li> <li>
168 <p><code>Content</code> commits that each item, either inside its <code>description</code> tag, or via an extension such as <code>content:encoded</code>, includes the full content of the items it includes, suitable for independent rendering by any client capable also of resolving references to linked media externally. No limitation is placed on whether the full content is placed in a <code>description</code> element, in <code>content:encoded</code>, or in some other extension.</p></li> <p><code>Content</code> commits that each item, either inside its <code>description</code> tag, or via an extension such as <code>content:encoded</code>, includes the full content of the items it includes, suitable for independent rendering by any client capable also of resolving references to linked media externally. No limitation is placed on whether the full content is placed in a <code>description</code> element, in <code>content:encoded</code>, or in some other extension.</p>
169 </li>
170 <li> <li>
171 <p><code>Media</code> augments <code>Content</code> by <em>embedding attachments to subsidiary media</em> inside the RSS document. Subsidiary media does not include all potential links, just links which share a prefix with the current RSS document, which by default means all links subsidiary to the parent of the RSS document as specified in an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a></p> <p><code>Media</code> augments <code>Content</code> by <em>embedding attachments to subsidiary media</em> inside the RSS document. Subsidiary media does not include all potential links, just links which share a prefix with the current RSS document, which by default means all links subsidiary to the parent of the RSS document as specified in an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a></p>
172 <p><em>More information on this soon when <code>iffy:attachment</code> is defined</em></p></li> <p><em>More information on this soon when <code>iffy:attachment</code> is defined</em></p>
173 </li>
174 </ul> </ul>
175 <p>The four values represent nested, hierarchical levels of commitment. <code>Ping</code> commits to nothing more than the spec requires. <code>Media</code> makes every commitment promised by the prior three levels, and an additional one.</p> <p>The four values represent nested, hierarchical levels of commitment. <code>Ping</code> commits to nothing more than the spec requires. <code>Media</code> makes every commitment promised by the prior three levels, and an additional one.</p>
176 <p>If not specified, no commitment is made, the feed should be considered <code>Ping</code>.</p> <p>If not specified, no commitment is made, the feed should be considered <code>Ping</code>.</p>
198 <p><code>iffy:curation</code> provides a description of how the feed is curated relative to the body of work a subset of which it presents. It MUST include as a sub-element a <em>curation type</em>. The following curation types are defined:</p> <p><code>iffy:curation</code> provides a description of how the feed is curated relative to the body of work a subset of which it presents. It MUST include as a sub-element a <em>curation type</em>. The following curation types are defined:</p>
199 <ul> <ul>
200 <li><a href="#iffy-all"><code>iffy:all</code></a></li> <li><a href="#iffy-all"><code>iffy:all</code></a></li>
201 <li><a href="#iffy-recent"><code>iffy:recent</code></a></li>
202 <li><a href="#iffy-selection"><code>iffy:selection</code></a></li> <li><a href="#iffy-selection"><code>iffy:selection</code></a></li>
203 <li><a href="#iffy-single"><code>iffy:single</code></a></li> <li><a href="#iffy-single"><code>iffy:single</code></a></li>
204 </ul> </ul>
210 <title>tech — interfluidity</title> <title>tech — interfluidity</title>
211 <atom:link type="application/rss+xml" rel="self" href="https://tech.interfluidity.com/feed/index.rss"/> <atom:link type="application/rss+xml" rel="self" href="https://tech.interfluidity.com/feed/index.rss"/>
212 <iffy:curation> <iffy:curation>
213 <iffy:recent last="10"/> <iffy:selection>
214 <iffy:recent since="2024-08-16T22:22:14.297722-04:00" last="10" operator="and"/>
215 </iffy:selection>
216 </iffy:curation> </iffy:curation>
217 <!-- Other channel elements --> <!-- Other channel elements -->
218 <item> <item>
339 <p><code>iffy:item-ref</code> SHOULD be an empty XML element, given meaning by its attributes.</p> <p><code>iffy:item-ref</code> SHOULD be an empty XML element, given meaning by its attributes.</p>
340 <ul> <ul>
341 <li> <li>
342 <p>An <code>iffy:item-ref</code> MUST contain an <code>href</code> attribute, which points to a source of RSS data or to an HTML document that refers to RSS data in an HTML <code>link</code> element.</p></li> <p>An <code>iffy:item-ref</code> MUST contain an <code>href</code> attribute, which points to a source of RSS data or to an HTML document that refers to RSS data in an HTML <code>link</code> element.</p>
343 </li>
344 <li> <li>
345 <p>An <code>iffy:item-ref</code> SHOULD contain a <code>type</code> attribute. The type should either be <code>text/html</code> or <code>application/*rss+xml</code> where the <code>*</code> may refer to the empty string (so just <code>application/rss+xml</code>) or a prefix, <a href="../../2024/11/12/supporting-single-item-rss/index.html">like</a> <code>application/x-single-item-rss+xml</code>. (If a type attribute is missing, a consumer MAY try to examine the contents at <code>href</code> and do the right thing.) (Mime types can, as always, include a parameter, like <code>text/html;charset=UTF-8</code>.)</p></li> <p>An <code>iffy:item-ref</code> SHOULD contain a <code>type</code> attribute. The type should either be <code>text/html</code> or <code>application/*rss+xml</code> where the <code>*</code> may refer to the empty string (so just <code>application/rss+xml</code>) or a prefix, <a href="../../2024/11/12/supporting-single-item-rss/index.html">like</a> <code>application/x-single-item-rss+xml</code>. (If a type attribute is missing, a consumer MAY try to examine the contents at <code>href</code> and do the right thing.) (Mime types can, as always, include a parameter, like <code>text/html;charset=UTF-8</code>.)</p>
346 </li>
347 <li> <li>
348 <p>An <code>iffy:item-ref</code> MUST contain a <code>guid</code> attribute UNLESS the <code>href</code> refers to <a href="../../2024/11/12/supporting-single-item-rss/index.html">single-item RSS</a>.</p></li> <p>An <code>iffy:item-ref</code> MUST contain a <code>guid</code> attribute UNLESS the <code>href</code> refers to <a href="../../2024/11/12/supporting-single-item-rss/index.html">single-item RSS</a>.</p>
349 </li>
350 </ul> </ul>
351 <p>To resolve an <code>iffy:item-ref</code> consumers should:</p> <p>To resolve an <code>iffy:item-ref</code> consumers should:</p>
352 <ol> <ol>
353 <li> <li>
354 <p>Check the <code>type</code> attribute, or if missing, check the contents referred to by the <code>href</code>, to see whether the referent is an HTML or an RSS document.</p></li> <p>Check the <code>type</code> attribute, or if missing, check the contents referred to by the <code>href</code>, to see whether the referent is an HTML or an RSS document.</p>
355 </li>
356 <li> <li>
357 <p>If the referent is an RSS document and the <code>iffy:item-ref</code> includes a <code>guid</code> attribute, the <code>item-ref</code> refers to the RSS <code>item</code> element containing a <code>guid</code> element whose contents matched the <code>iffy:item-ref</code>'s <code>guid</code> attribute.</p></li> <p>If the referent is an RSS document and the <code>iffy:item-ref</code> includes a <code>guid</code> attribute, the <code>item-ref</code> refers to the RSS <code>item</code> element containing a <code>guid</code> element whose contents matched the <code>iffy:item-ref</code>'s <code>guid</code> attribute.</p>
358 </li>
359 <li> <li>
360 <p>If the referent is an RSS document and the <code>iffy:item-ref</code> does NOT include a <code>guid</code> attribute, then the <code>item-ref</code> refers to the single RSS item in the document. If there is more than one RSS <code>item</code>, the resolution fails.</p></li> <p>If the referent is an RSS document and the <code>iffy:item-ref</code> does NOT include a <code>guid</code> attribute, then the <code>item-ref</code> refers to the single RSS item in the document. If there is more than one RSS <code>item</code>, the resolution fails.</p>
361 </li>
362 <li> <li>
363 <p>If the referent is an HTML document and the <code>iffy:item-ref</code> contains a <code>guid</code> attribute, the consumer must gather all HTML <code>link</code> elements with <code>rel="alternative"</code> and <code>type="application/*rss+xml</code> where the <code>*</code> may refer to the empty string (so just <code>application/rss+xml</code>) or a prefix, <a href="../../2024/11/12/supporting-single-item-rss/index.html">like</a> <code>application/x-single-item-rss+xml</code>. The type may also contain a parameter, like <code>application/x-single-item-rss+xml;completeness=Content</code> The consumer tries <code>link</code> elements whose <code>type</code> attribute is an exact match to the <code>iffy:item-ref</code>'s <code>type</code> attribute first, in the order they appear in the HTML file, and then other <code>link</code> elements with <code>type="application/*rss+xml</code>, in the order they appear. For each <code>link</code> tried, if the linked RSS contains that an RSS <code>item</code> with the <code>item-ref</code>'s specified <code>guid</code>, then the <code>item-ref</code> refers to that <code>item</code> and the resolution process terminates immediately.</p></li> <p>If the referent is an HTML document and the <code>iffy:item-ref</code> contains a <code>guid</code> attribute, the consumer must gather all HTML <code>link</code> elements with <code>rel="alternative"</code> and <code>type="application/*rss+xml</code> where the <code>*</code> may refer to the empty string (so just <code>application/rss+xml</code>) or a prefix, <a href="../../2024/11/12/supporting-single-item-rss/index.html">like</a> <code>application/x-single-item-rss+xml</code>. The type may also contain a parameter, like <code>application/x-single-item-rss+xml;completeness=Content</code> The consumer tries <code>link</code> elements whose <code>type</code> attribute is an exact match to the <code>iffy:item-ref</code>'s <code>type</code> attribute first, in the order they appear in the HTML file, and then other <code>link</code> elements with <code>type="application/*rss+xml</code>, in the order they appear. For each <code>link</code> tried, if the linked RSS contains that an RSS <code>item</code> with the <code>item-ref</code>'s specified <code>guid</code>, then the <code>item-ref</code> refers to that <code>item</code> and the resolution process terminates immediately.</p>
364 </li>
365 <li> <li>
366 <p>If the referent is an HTML document and the <code>iffy:item-ref</code> DOES NOT contain a <code>guid</code> attribute, the consumer must search for an HTML <code>link</code> element whose <code>rel="alternative"</code> and whose <code>type="application/x-single-item-rss+xml"</code>. If there are no or multiple <code>link</code> elements so specified, resoluton fails. If there is a unique <code><link rel="alternative" type="application/x-single-item-rss+xml" href="..."></code>, and its referent contains RSS data with a single <code>item</code> attribute, the <code>iffy:item-ref</code> successfully resolves to that attribute.</p></li> <p>If the referent is an HTML document and the <code>iffy:item-ref</code> DOES NOT contain a <code>guid</code> attribute, the consumer must search for an HTML <code>link</code> element whose <code>rel="alternative"</code> and whose <code>type="application/x-single-item-rss+xml"</code>. If there are no or multiple <code>link</code> elements so specified, resoluton fails. If there is a unique <code><link rel="alternative" type="application/x-single-item-rss+xml" href="..."></code>, and its referent contains RSS data with a single <code>item</code> attribute, the <code>iffy:item-ref</code> successfully resolves to that attribute.</p>
367 </li>
368 </ol> </ol>
369 <h4><a href="#example-single-item-rss" id="example-single-item-rss" name="example-single-item-rss" class="anchorlink"></a>Example (single-item RSS):</h4> <h4><a href="#example-single-item-rss" id="example-single-item-rss" name="example-single-item-rss" class="anchorlink"></a>Example (single-item RSS):</h4>
370 <pre><code class="language-xml"><iffy:item-ref href="https://tech.interfluidity.com/2024/11/12/supporting-single-item-rss/index.rss" type="application/x-single-item-rss+xml" /> <pre><code class="language-xml"><iffy:item-ref href="https://tech.interfluidity.com/2024/11/12/supporting-single-item-rss/index.rss" type="application/x-single-item-rss+xml" />
394 <h3><a href="#when-no-shape-attribute-is-set-or-shapesequence" id="when-no-shape-attribute-is-set-or-shapesequence" name="when-no-shape-attribute-is-set-or-shapesequence" class="anchorlink"></a>When no <code>shape</code> attribute is set, or <code>shape="sequence"</code></h3> <h3><a href="#when-no-shape-attribute-is-set-or-shapesequence" id="when-no-shape-attribute-is-set-or-shapesequence" name="when-no-shape-attribute-is-set-or-shapesequence" class="anchorlink"></a>When no <code>shape</code> attribute is set, or <code>shape="sequence"</code></h3>
395 <p><code>iffy:provenance</code> elements of shape <code>sequence</code> (the default) contain</p> <p><code>iffy:provenance</code> elements of shape <code>sequence</code> (the default) contain</p>
396 <ul> <ul>
397 <li>a sequence of one or more <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> elements, each of whose <li>a sequence of one or more <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> elements, each of whose
398 <ul> <ul>
399 <li><code>rel</code> attribute is MUST BE <code>via</code></li> <li><code>rel</code> attribute is MUST BE <code>via</code></li>
400 <li><code>href</code> attribute MUST BE the URL of an RSS feed from which the base contents of this item were drawn</li> <li><code>href</code> attribute MUST BE the URL of an RSS feed from which the base contents of this item were drawn</li>
406 <p>If the item from which the current item was sourced <em>does</em> contains an <code>iffy:provenance</code>:</p> <p>If the item from which the current item was sourced <em>does</em> contains an <code>iffy:provenance</code>:</p>
407 <ul> <ul>
408 <li> <li>
409 <p>If the contained <code>iffy:provenance</code> has no <code>shape</code> attribute set, or if <code>shape</code> is set to <code>sequence</code>, then the current feed SHOULD include all items of that element, with the URL of the feed from which the item was sourced PREPENDED as an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a>. This will ensure the most immediate source will be the first <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> element. The origin — or at least the source for which no further provenance is known — will be the last <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> or <code>iffy:provenance</code> subelement.</p></li> <p>If the contained <code>iffy:provenance</code> has no <code>shape</code> attribute set, or if <code>shape</code> is set to <code>sequence</code>, then the current feed SHOULD include all items of that element, with the URL of the feed from which the item was sourced PREPENDED as an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a>. This will ensure the most immediate source will be the first <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> element. The origin — or at least the source for which no further provenance is known — will be the last <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> or <code>iffy:provenance</code> subelement.</p>
410 </li>
411 <li> <li>
412 <p>If the contained <code>iffy:provenance</code> has a <code>shape</code> attribute set to <code>merge</code>, then the full element should be included as a subelement, after an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> to its source.</p></li> <p>If the contained <code>iffy:provenance</code> has a <code>shape</code> attribute set to <code>merge</code>, then the full element should be included as a subelement, after an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> to its source.</p>
413 </li>
414 </ul> </ul>
415 <p>If one is present, processors SHOULD use a channel level <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> element with <code>rel="self"</code> and <code>type="application/rss+xml"</code> to as the basis for provenance in source documents. See <a href="https://www.rssboard.org/rss-profile#namespace-elements-atom-link">RSS Best Practices</a>. However, if no such <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> is available at the <code>channel</code> level, processes may default to the URL by which they accessed the source.</p> <p>If one is present, processors SHOULD use a channel level <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> element with <code>rel="self"</code> and <code>type="application/rss+xml"</code> to as the basis for provenance in source documents. See <a href="https://www.rssboard.org/rss-profile#namespace-elements-atom-link">RSS Best Practices</a>. However, if no such <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> is available at the <code>channel</code> level, processes may default to the URL by which they accessed the source.</p>
416 <h4><a href="#example-from-here" id="example-from-here" name="example-from-here" class="anchorlink"></a>Example (from <a href="https://www.interfluidity.com/unify-rss/all-blogs.rss">here</a>):</h4> <h4><a href="#example-from-here" id="example-from-here" name="example-from-here" class="anchorlink"></a>Example (from <a href="https://www.interfluidity.com/unify-rss/all-blogs.rss">here</a>):</h4>
451 <hr> <hr>
452 <h2><a href="#element--iffyrecent-" id="element--iffyrecent-" name="element--iffyrecent-" class="anchorlink"></a>Element — <code>iffy:recent</code> <a id="iffy-recent" href=""></a></h2> <h2><a href="#element--iffyrecent-" id="element--iffyrecent-" name="element--iffyrecent-" class="anchorlink"></a>Element — <code>iffy:recent</code> <a id="iffy-recent" href=""></a></h2>
453 <div class="iffy-element-desc"> <div class="iffy-element-desc">
454 <h3><a href="#when-beneath-iffycuration-1" id="when-beneath-iffycuration-1" name="when-beneath-iffycuration-1" class="anchorlink"></a>When beneath <a href="#iffy-curation"><code>iffy:curation</code></a></h3> <h3><a href="#when-beneath-iffyselection" id="when-beneath-iffyselection" name="when-beneath-iffyselection" class="anchorlink"></a>When beneath <a href="#iffy-selection"><code>iffy:selection</code></a></h3>
455 <p><code>iffy:recent</code> is a <em>curation type</em>, a description of how the feed is curated relative to the body of work a subset of which it presents.</p> <p><code>iffy:recent</code> describes a <a href="#iffy-selection">selection</a> (see also <a href="#iffy-curation"><code>iffy:curation</code></a>) that represents the most recent posts to a feed.</p>
456 <p>Curation type <code>iffy:recent</code> signifies that a subset consisting of the most work is represented by <code>item</code> elements in this feed.</p> <p>(Curations that are selections of recent posts represent the most common use-case for RSS, although most feeds do not yet annotate themselves as such.)</p>
457 <p>(Curations of logically of type recent represent the most common use-case for RSS, although most feeds do not yet annotate themselves as such.)</p>
458 <p><code>iffy:recent</code> has three attributes:</p> <p><code>iffy:recent</code> has three attributes:</p>
459 <ul> <ul>
460 <li> <li>
461 <p><code>last</code> — When the attribute <code>last="<positive-integer-value-n>"</code> is defined, the feed displays a subset of the most recent <code>n</code> items, if there are at least <code>n</code> items in the unabridged body of work.</p></li> <p><code>last</code> — When the attribute <code>last="<positive-integer-value-n>"</code> is defined, the feed displays a subset of the most recent <code>n</code> items, if there are at least <code>n</code> items in the unabridged body of work.</p>
462 </li>
463 <li> <li>
464 <p><code>since</code> — When the attribute <code>since="<timestamp>"</code> is defined, all elements more recent than the given timestamp are represented as items in this feed. Timestamps may de defined as <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-3.3">atom "date constructs"</a> OR in the format expected for <a href="https://www.rssboard.org/rss-specification"><code>pubDate</code> in standard RSS</a>.</p></li> <p><code>since</code> — When the attribute <code>since="<timestamp>"</code> is defined, all elements more recent than the given timestamp are represented as items in this feed. Timestamps may de defined as <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-3.3">atom "date constructs"</a> OR in the format expected for <a href="https://www.rssboard.org/rss-specification"><code>pubDate</code> in standard RSS</a>.</p>
465 </li>
466 <li> <li>
467 <p><code>operation</code> — Values must be one of <code>and</code> or <code>or</code>. Determines whether, if both <code>last</code> and <code>since</code> are set, items must be more recent than the <code>since</code> timestamp AND among the most recent <code>n</code> defined by <code>last</code>, or whether all items more recent than the <code>since</code> timestamp OR among the most recent <code>n</code> defined by <code>last</code> are included. If no <code>operation</code> is set, and both <code>last</code> and <code>since</code> are set, then <code>operation</code> should be presumed to default to <code>and</code>.</p></li> <p><code>operation</code> — Values must be one of <code>and</code> or <code>or</code>. Determines whether, if both <code>last</code> and <code>since</code> are set, items must be more recent than the <code>since</code> timestamp AND among the most recent <code>n</code> defined by <code>last</code>, or whether all items more recent than the <code>since</code> timestamp OR among the most recent <code>n</code> defined by <code>last</code> are included. If no <code>operation</code> is set, and both <code>last</code> and <code>since</code> are set, then <code>operation</code> should be presumed to default to <code>and</code>.</p>
468 </li>
469 </ul> </ul>
470 <h4><a href="#example-8" id="example-8" name="example-8" class="anchorlink"></a>Example:</h4> <h4><a href="#example-8" id="example-8" name="example-8" class="anchorlink"></a>Example:</h4>
471 <pre><code class="language-xml"><?xml version='1.0' encoding='UTF-8'?> <pre><code class="language-xml"><?xml version='1.0' encoding='UTF-8'?>
475 <title>tech — interfluidity</title> <title>tech — interfluidity</title>
476 <atom:link type="application/rss+xml" rel="self" href="https://tech.interfluidity.com/feed/index.rss"/> <atom:link type="application/rss+xml" rel="self" href="https://tech.interfluidity.com/feed/index.rss"/>
477 <iffy:curation> <iffy:curation>
478 <iffy:recent since="2024-08-16T22:22:14.297722-04:00" last="10" operator="and"/> <iffy:selection>
479 <iffy:recent since="2024-08-16T22:22:14.297722-04:00" last="10" operator="and"/>
480 <iffy:selection>
481 </iffy:curation> </iffy:curation>
482 <!-- Other channel elements --> <!-- Other channel elements -->
483 <item> <item>
499 <hr> <hr>
500 <h2><a href="#element--iffyselection-" id="element--iffyselection-" name="element--iffyselection-" class="anchorlink"></a>Element — <code>iffy:selection</code> <a id="iffy-selection" href=""></a></h2> <h2><a href="#element--iffyselection-" id="element--iffyselection-" name="element--iffyselection-" class="anchorlink"></a>Element — <code>iffy:selection</code> <a id="iffy-selection" href=""></a></h2>
501 <div class="iffy-element-desc"> <div class="iffy-element-desc">
502 <h3><a href="#when-beneath-iffycuration-2" id="when-beneath-iffycuration-2" name="when-beneath-iffycuration-2" class="anchorlink"></a>When beneath <a href="#iffy-curation"><code>iffy:curation</code></a></h3> <h3><a href="#when-beneath-iffycuration-1" id="when-beneath-iffycuration-1" name="when-beneath-iffycuration-1" class="anchorlink"></a>When beneath <a href="#iffy-curation"><code>iffy:curation</code></a></h3>
503 <p><code>iffy:selection</code> is a <em>curation type</em>, a description of how the feed is curated relative to the body of work a subset of which it presents.</p> <p><code>iffy:selection</code> is a <em>curation type</em>, a description of how the feed is curated relative to the body of work a subset of which it presents.</p>
504 <p>Curation type <code>iffy:selection</code> signifies that this feed is the result of a potentially arbitrary query against or restriction of the full body of work.</p> <p>Curation type <code>iffy:selection</code> signifies that this feed is the result of a potentially arbitrary query against or restriction of the full body of work.</p>
505 <p>An <code>iffy:selection</code> tag SHOULD contain subelements, documenting the query or restriction that produced this selection, ideally with sufficient information to reproduce the selection from a specified upstream source.</p> <p>An <code>iffy:selection</code> tag SHOULD contain subelements, documenting the query or restriction that produced this selection, ideally with sufficient information to reproduce the selection from a specified upstream source.</p>
506 <p>However, no standard yet described how queries and restrictions might be document. For now, it is a playground for developer creativity...</p> <p>This specification defines only a single query type for <code>iffy:selection</code>:</p>
507 <h4><a href="#example-9" id="example-9" name="example-9" class="anchorlink"></a>Example:</h4> <ul>
508 <li><a href="#iffy-recent"><code>iffy:recent</code></a></li>
509 </ul>
510 <p>However, many other queries or selections are possible, and at least for now, there are no restrictions on descriptions that might be provide. It is a playground for developer creativity.</p>
511 <h4><a href="#example-recent-items" id="example-recent-items" name="example-recent-items" class="anchorlink"></a>Example (recent items):</h4>
512 <pre><code class="language-xml"><?xml version='1.0' encoding='UTF-8'?> <pre><code class="language-xml"><?xml version='1.0' encoding='UTF-8'?>
513
514<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/"><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/">
515 <channel> <channel>
516 <title>tech — interfluidity</title> <title>tech — interfluidity</title>
517 <atom:link type="application/rss+xml" rel="self" href="https://tech.interfluidity.com/feed/index.rss"/> <atom:link type="application/rss+xml" rel="self" href="https://tech.interfluidity.com/feed/index.rss"/>
518 <iffy:curation> <iffy:curation>
519 <iffy:selection> <iffy:selection>
520 <iffy:recent since="2024-08-16T22:22:14.297722-04:00" last="10" operator="and"/>
521 </iffy:selection>
522 </iffy:curation>
523 <!-- Other channel elements -->
524 <item>
525 <!-- Other item elements -->
526 </item>
527 </channel>
528</rss>
529</code></pre>
530 <h4><a href="#example-arbitrary-query" id="example-arbitrary-query" name="example-arbitrary-query" class="anchorlink"></a>Example (arbitrary query):</h4>
531 <pre><code class="language-xml"><?xml version='1.0' encoding='UTF-8'?>
532
533<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/">
534 <channel>
535 <title>tech — interfluidity</title>
536 <atom:link type="application/rss+xml" rel="self" href="https://tech.interfluidity.com/feed/index.rss"/>
537 <iffy:curation>
538 <iffy:selection>
539 <acme:query> <!-- totally faking it here --> <acme:query> <!-- totally faking it here -->
540 <acme:dbhost>articles.zine.dk</acme:dbhost> <acme:dbhost>articles.zine.dk</acme:dbhost>
541 <acme:dbport>5432</acme:dbhost> <acme:dbport>5432</acme:dbhost>
554 <hr> <hr>
555 <h2><a href="#element--iffysingle-" id="element--iffysingle-" name="element--iffysingle-" class="anchorlink"></a>Element — <code>iffy:single</code> <a id="iffy-single" href=""></a></h2> <h2><a href="#element--iffysingle-" id="element--iffysingle-" name="element--iffysingle-" class="anchorlink"></a>Element — <code>iffy:single</code> <a id="iffy-single" href=""></a></h2>
556 <div class="iffy-element-desc"> <div class="iffy-element-desc">
557 <h3><a href="#when-beneath-iffycuration-3" id="when-beneath-iffycuration-3" name="when-beneath-iffycuration-3" class="anchorlink"></a>When beneath <a href="#iffy-curation"><code>iffy:curation</code></a></h3> <h3><a href="#when-beneath-iffycuration-2" id="when-beneath-iffycuration-2" name="when-beneath-iffycuration-2" class="anchorlink"></a>When beneath <a href="#iffy-curation"><code>iffy:curation</code></a></h3>
558 <p><code>iffy:single</code> is a <em>curation type</em>, a description of how the feed is curated relative to the body of work a subset of which it presents.</p> <p><code>iffy:single</code> is a <em>curation type</em>, a description of how the feed is curated relative to the body of work a subset of which it presents.</p>
559 <p>Curation type <code>iffy:single</code> signifies that this is <a href="../../2024/11/12/supporting-single-item-rss/index.html">single-item RSS</a>.</p> <p>Curation type <code>iffy:single</code> signifies that this is <a href="../../2024/11/12/supporting-single-item-rss/index.html">single-item RSS</a>.</p>
560 <p>The feed contains just one item, not by happenstance because there is only one recent item, nor because some <a href="#iffy-selection">selection</a> yielded just one item, but intentionally, so that metadata related to the item can have its own permanent RSS home.</p> <p>The feed contains just one item, not by happenstance because there is only one recent item, nor because some <a href="#iffy-selection">selection</a> yielded just one item, but intentionally, so that metadata related to the item can have its own permanent RSS home.</p>
561 <h4><a href="#example-10" id="example-10" name="example-10" class="anchorlink"></a>Example:</h4> <h4><a href="#example-9" id="example-9" name="example-9" class="anchorlink"></a>Example:</h4>
562 <pre><code class="language-xml"><?xml version='1.0' encoding='UTF-8'?> <pre><code class="language-xml"><?xml version='1.0' encoding='UTF-8'?>
563
564<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/"><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/">
589 </ul> </ul>
590 <h3><a href="#when-a-subelement-of-channel-and-iffytype-is-itemupdatefeed" id="when-a-subelement-of-channel-and-iffytype-is-itemupdatefeed" name="when-a-subelement-of-channel-and-iffytype-is-itemupdatefeed" class="anchorlink"></a>When a subelement of <code>channel</code> AND <a href="#iffy-type"><code>iffy:type</code></a> is <code>ItemUpdateFeed</code></h3> <h3><a href="#when-a-subelement-of-channel-and-iffytype-is-itemupdatefeed" id="when-a-subelement-of-channel-and-iffytype-is-itemupdatefeed" name="when-a-subelement-of-channel-and-iffytype-is-itemupdatefeed" class="anchorlink"></a>When a subelement of <code>channel</code> AND <a href="#iffy-type"><code>iffy:type</code></a> is <code>ItemUpdateFeed</code></h3>
591 <p>SHOULD include an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> with <code>rel</code> attribute set to <code>related</code>, pointing to the same resource as the <code>link</code> element of the item whose updates are being announced.</p> <p>SHOULD include an <a href="https://datatracker.ietf.org/doc/html/rfc4287#section-4.2.7"><code>atom:link</code></a> with <code>rel</code> attribute set to <code>related</code>, pointing to the same resource as the <code>link</code> element of the item whose updates are being announced.</p>
592 <h4><a href="#example-11" id="example-11" name="example-11" class="anchorlink"></a>Example:</h4> <h4><a href="#example-10" id="example-10" name="example-10" class="anchorlink"></a>Example:</h4>
593 <pre><code class="language-xml"> <channel> <pre><code class="language-xml"> <channel>
594 <!-- other channel elements --> <!-- other channel elements -->
595 <iffy:synthetic> <iffy:synthetic>
608 </ul> </ul>
609 <h3><a href="#when-a-subelement-of-item-and-iffytype-is-updateannouncement" id="when-a-subelement-of-item-and-iffytype-is-updateannouncement" name="when-a-subelement-of-item-and-iffytype-is-updateannouncement" class="anchorlink"></a>When a subelement of <code>item</code> AND <a href="#iffy-type"><code>iffy:type</code></a> is <code>UpdateAnnouncement</code></h3> <h3><a href="#when-a-subelement-of-item-and-iffytype-is-updateannouncement" id="when-a-subelement-of-item-and-iffytype-is-updateannouncement" name="when-a-subelement-of-item-and-iffytype-is-updateannouncement" class="anchorlink"></a>When a subelement of <code>item</code> AND <a href="#iffy-type"><code>iffy:type</code></a> is <code>UpdateAnnouncement</code></h3>
610 <p>In addition to <code>iffy:type</code>, MUST contain an <a href="#iffy-update"><code>iffy:update</code></a> element, which in turn MUST contain an <a href="#iffy-initial"><code>iffy:initial</code></a> element describing the initial state of the updated post.</p> <p>In addition to <code>iffy:type</code>, MUST contain an <a href="#iffy-update"><code>iffy:update</code></a> element, which in turn MUST contain an <a href="#iffy-initial"><code>iffy:initial</code></a> element describing the initial state of the updated post.</p>
611 <h4><a href="#example-12" id="example-12" name="example-12" class="anchorlink"></a>Example:</h4> <h4><a href="#example-11" id="example-11" name="example-11" class="anchorlink"></a>Example:</h4>
612 <pre><code class="language-xml"><item> <pre><code class="language-xml"><item>
613 <pubDate>Thu, 20 Jun 2024 13:10:00 -0400</pubDate> <pubDate>Thu, 20 Jun 2024 13:10:00 -0400</pubDate>
614 <guid isPermalink="true"> <guid isPermalink="true">
657 <p>Marks what kind of synthetic item its parent is. Currently known values include</p> <p>Marks what kind of synthetic item its parent is. Currently known values include</p>
658 <ul> <ul>
659 <li> <li>
660 <p><code>UpdateAnnouncement</code> — A synthetic item marking an update of an older item in the feed (or that once would have been in the feed)</p></li> <p><code>UpdateAnnouncement</code> — A synthetic item marking an update of an older item in the feed (or that once would have been in the feed)</p>
661 </li>
662 <li> <li>
663 <p><code>UpdateCumulation</code> — A synthetic item describing an aggregation of updates, which may include updates of multiple items, and multiple updates for each item.</p></li> <p><code>UpdateCumulation</code> — A synthetic item describing an aggregation of updates, which may include updates of multiple items, and multiple updates for each item.</p>
664 </li>
665 </ul> </ul>
666 <p>Please see known containing elements, including</p> <p>Please see known containing elements, including</p>
667 <ul> <ul>
778 <div class="entry-footer"> <div class="entry-footer">
779 <div class="post-metainfo"> <div class="post-metainfo">
780 <div class="updated-note"> <div class="updated-note">
781 <a href="index.html#major-updates">Last major update at 2024-12-22 @ 10:40 AM EST</a> <a href="index.html#major-updates">Last major update at 2025-08-30 @ 06:50 PM EDT</a>
782 </div> </div>
783 <div> <div>
784 <a href="index.html" class="pubtime">04:10 AM EDT</a> <a href="index.html" class="pubtime">04:10 AM EDT</a>
801 <div id="update-history" class="update-history"> <div id="update-history" class="update-history">
802 <h3 class="update-history-title"><a id="major-updates" href=""></a>Major revisions:</h3> <h3 class="update-history-title"><a id="major-updates" href=""></a>Major revisions:</h3>
803 <ul> <ul>
804 <li><span class="update-timestamp"><i>2024-12-22 @ 10:40 AM EST</i></span> — Document <code>iffy:item-ref</code> and <code>iffy:in-reply-to</code>. (<a href="index-diff-c1c3071b0ac3127c2969b24e26d439510fdc8c96-to-current.html">diff</a>)</li> <li><span class="update-timestamp"><i>2025-08-30 @ 06:50 PM EDT</i></span> — Revise definition of curation, so it has only three types: all, selection, and single. iffy:recent becomes a query under selection. (<a href="index-diff-7f272e9b81c08396eb5e1f9e2209e6977a2f39af-to-current.html">diff</a>)</li>
805 <li><span class="update-timestamp"><i> <a href="index-oldcommit-7f272e9b81c08396eb5e1f9e2209e6977a2f39af.html">2024-12-22 @ 10:40 AM EST</a></i></span> — Document <code>iffy:item-ref</code> and <code>iffy:in-reply-to</code>. (<a href="index-diff-c1c3071b0ac3127c2969b24e26d439510fdc8c96-to-7f272e9b81c08396eb5e1f9e2209e6977a2f39af.html">diff</a>)</li>
806 <li><span class="update-timestamp"><i> <a href="index-oldcommit-c1c3071b0ac3127c2969b24e26d439510fdc8c96.html">2024-11-15 @ 01:10 AM EST</a></i></span> — Document <code>iffy:curation</code>, and curation type elements <code>iffy:all</code>, <code>iffy:recent</code>, <code>iffy:selection</code>, <code>iffy:single</code>. (<a href="index-diff-5fcd99373d2d940a0c6e1468979be59e2d6bcced-to-c1c3071b0ac3127c2969b24e26d439510fdc8c96.html">diff</a>)</li> <li><span class="update-timestamp"><i> <a href="index-oldcommit-c1c3071b0ac3127c2969b24e26d439510fdc8c96.html">2024-11-15 @ 01:10 AM EST</a></i></span> — Document <code>iffy:curation</code>, and curation type elements <code>iffy:all</code>, <code>iffy:recent</code>, <code>iffy:selection</code>, <code>iffy:single</code>. (<a href="index-diff-5fcd99373d2d940a0c6e1468979be59e2d6bcced-to-c1c3071b0ac3127c2969b24e26d439510fdc8c96.html">diff</a>)</li>
807 <li><span class="update-timestamp"><i> <a href="index-oldcommit-5fcd99373d2d940a0c6e1468979be59e2d6bcced.html">2024-11-02 @ 05:15 PM EDT</a></i></span> — Clarifications of iffy:provenance and iffy:update-history. (<a href="index-diff-34d8dab8f187c6d9512615dbb83c95395aa49a3b-to-5fcd99373d2d940a0c6e1468979be59e2d6bcced.html">diff</a>)</li> <li><span class="update-timestamp"><i> <a href="index-oldcommit-5fcd99373d2d940a0c6e1468979be59e2d6bcced.html">2024-11-02 @ 05:15 PM EDT</a></i></span> — Clarifications of iffy:provenance and iffy:update-history. (<a href="index-diff-34d8dab8f187c6d9512615dbb83c95395aa49a3b-to-5fcd99373d2d940a0c6e1468979be59e2d6bcced.html">diff</a>)</li>
808 <li><span class="update-timestamp"><i> <a href="index-oldcommit-34d8dab8f187c6d9512615dbb83c95395aa49a3b.html">2024-07-01 @ 02:40 PM EDT</a></i></span> — Major revision of <code>iffy:synthetic</code>, generalize <code>iffy:initial</code>, <code>iffy:update</code>, <code>iffy:update-history</code>, define <code>iffy:uid</code>. (<a href="index-diff-0df7787c056ab2b983e2de4d107c2fa477b7c8f4-to-34d8dab8f187c6d9512615dbb83c95395aa49a3b.html">diff</a>)</li> <li><span class="update-timestamp"><i> <a href="index-oldcommit-34d8dab8f187c6d9512615dbb83c95395aa49a3b.html">2024-07-01 @ 02:40 PM EDT</a></i></span> — Major revision of <code>iffy:synthetic</code>, generalize <code>iffy:initial</code>, <code>iffy:update</code>, <code>iffy:update-history</code>, define <code>iffy:uid</code>. (<a href="index-diff-0df7787c056ab2b983e2de4d107c2fa477b7c8f4-to-34d8dab8f187c6d9512615dbb83c95395aa49a3b.html">diff</a>)</li>
816 <li><span class="update-timestamp"><i> <a href="index-oldcommit-394986cb8d9c57f567d324e691a44d50102101ce.html">2024-05-13 @ 04:10 AM EDT</a></i></span> — Initial publication.</li> <li><span class="update-timestamp"><i> <a href="index-oldcommit-394986cb8d9c57f567d324e691a44d50102101ce.html">2024-05-13 @ 04:10 AM EDT</a></i></span> — Initial publication.</li>
817 </ul> </ul>
818 <div class="update-history-note"> <div class="update-history-note">
819 Timestamps represent "major", substantative revisions. There may have been subsequent typo fixes and language reworkings within a major revision, after the time displayed. For a more complete and fine-grained update history, you can view the <a href="https://github.com/swaldman/tech.interfluidity.com/commits/main/">git repository commit history</a>. The most recent minor modification of this entry occurred 2025-01-05 @ 11:03 PM EST. Timestamps represent "major", substantative revisions. There may have been subsequent typo fixes and language reworkings within a major revision, after the time displayed. For a more complete and fine-grained update history, you can view the <a href="https://github.com/swaldman/tech.interfluidity.com/commits/main/">git repository commit history</a>. The most recent minor modification of this entry occurred 2025-08-30 @ 06:50 PM EDT.
820 </div> </div>
821 </div> </div>
822</div><!-- after-article --></div>
823<!-- after-article -->
824 </div> </div>
825 <div id="right-sidebar"> <div id="right-sidebar">
826 </div> </div>
827 </div> </div>
828 </body> </body>
829</html></html>