| Line | 394986cb8d9c57f567d324e691a44d50102101ce | 13de0232319ceab2f830591c318089d18cbec78d |
| 1 | <!DOCTYPE html> | <!DOCTYPE html> |
| 2 | <html> | <html> |
| 3 | <head> | <head> |
| ⋮ | ⋮ | ⋮ |
| 13 | <link rel="stylesheet" href="../../css/highlightjs/steve-night-owl.css"><!-- theme for highlight.js --> | <link rel="stylesheet" href="../../css/highlightjs/steve-night-owl.css"><!-- theme for highlight.js --> |
| 14 | <script src="../../js/highlight/highlight.min.js"></script> | <script src="../../js/highlight/highlight.min.js"></script> |
| 15 | <script>hljs.highlightAll();</script> | <script>hljs.highlightAll();</script> |
| 16 | | <script> |
| 17 | | document.addEventListener("DOMContentLoaded", function() { |
| 18 | | const regex = /(^.*)\-oldcommit\-[0-9A-Fa-f]+\.html/; |
| 19 | | const match = window.location.pathname.match(regex); |
| 20 | | if (match) { |
| 21 | | const b = document.querySelector("body"); |
| 22 | | const tb = document.getElementById("top-banner"); |
| 23 | | b.classList.add("old-draft"); |
| 24 | | tb.innerHTML = "You are looking at an old, superceded version of this page. For the current version, please <a href=\"" + match[1] + ".html\">click here</a>."; |
| 25 | | } |
| 26 | | }); |
| 27 | | </script> |
| 28 | <title>The 'iffy' XML namespace</title> | <title>The 'iffy' XML namespace</title> |
| 29 | </head> | </head> |
| 30 | <body> | <body> |
| 31 | | <div id="top-banner"></div> |
| 32 | <div id="header"> | <div id="header"> |
| 33 | <div id="rss-link-container"> | <div id="rss-link-container"> |
| 34 | <a id="rss-link" href="../../feed/index.rss"><span class="outer">(</span><span class="middle">(</span><span class="inner">(</span><span class="bullet">•</span><span class="inner">)</span><span class="middle">)</span><span class="outer">)</span></a> | <a id="rss-link" href="../../feed/index.rss"><span class="outer">(</span><span class="middle">(</span><span class="inner">(</span><span class="bullet">•</span><span class="inner">)</span><span class="middle">)</span><span class="outer">)</span></a> |
| ⋮ | ⋮ | ⋮ |
| 49 | <h1><a href="index.html">The 'iffy' XML namespace</a></h1> | <h1><a href="index.html">The 'iffy' XML namespace</a></h1> |
| 50 | <hr class="below-title"> | <hr class="below-title"> |
| 51 | </div> | </div> |
| 52 | | <div class="update-prepend"> |
| 53 | | ➣ <em> This post was meaningfully revised at 2024-05-24 @ 12:25 AM EDT. The previous revision is <a href="index-oldcommit-394986cb8d9c57f567d324e691a44d50102101ce.html">here</a>. </em> |
| 54 | | <hr> |
| 55 | | </div> |
| 56 | <div class="entry-body"> | <div class="entry-body"> |
| 57 | <div class="flexmark markdown"> | <div class="flexmark markdown"> |
| 58 | <p>I want to do a lot of things with RSS that require extensions of RSS (as the RSS spec <a href="https://www.rssboard.org/rss-specification#extendingRss">foresees</a>).</p> | <p>I want to do a lot of things with RSS that require extensions of RSS (as the RSS spec <a href="https://www.rssboard.org/rss-specification#extendingRss">foresees</a>).</p> |
| ⋮ | ⋮ | ⋮ |
| 64 | <p><strong>Table of Contents</strong></p> | <p><strong>Table of Contents</strong></p> |
| 65 | <ul> | <ul> |
| 66 | <li><a href="#iffy-completeness"><code>iffy:completeness</code></a></li> | <li><a href="#iffy-completeness"><code>iffy:completeness</code></a></li> |
| 67 | <li><a href="#iffy-original-guid"><code>iffy:original-guid</code></a></li> | |
| 68 | <li><a href="#iffy-provenance"><code>iffy:provenance</code></a></li> | <li><a href="#iffy-provenance"><code>iffy:provenance</code></a></li> |
| 69 | <li><a href="#iffy-when-updated"><code>iffy:when-updated</code></a></li> | |
| 70 | </ul> | </ul> |
| 71 | <hr> | <hr> |
| 72 | <p><a id="iffy-completeness" href=""></a><strong>Element — <code>iffy:completeness</code></strong></p> | <p><a id="iffy-completeness" href=""></a><strong>Element — <code>iffy:completeness</code></strong></p> |
| ⋮ | ⋮ | ⋮ |
| 111 | </code></pre> | </code></pre> |
| 112 | </div> | </div> |
| 113 | <hr> | <hr> |
| 114 | <p><a id="iffy-original-guid" href=""></a><strong>Element — <code>iffy:original-guid</code></strong></p> | |
| 115 | <div class="iffy-element-desc"> | |
| 116 | <p><strong>Solely an item level element</strong></p> | |
| 117 | <p>IF AND ONLY IF an item contains an <code>atom:updated</code> element AND the <code>guid</code> of this item has been modified from the original, pre-update item in order to encourage feed consumers to surface the update, THEN the <a href="https://www.rssboard.org/rss-specification#ltguidgtSubelementOfLtitemgt"><code>guid</code></a> of the original post MUST be included in an <code>iffy:original-guid</code> element so that aware consumers can tie the update back to the original.</p> | |
| 118 | <p><strong>Example:</strong></p> | |
| 119 | <pre><code class="language-xml"><?xml version='1.0' encoding='UTF-8'?> | |
| 120 | | |
| 121 | <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/"> | |
| 122 | <channel> | |
| 123 | <title>tech — interfluidity</title> | |
| 124 | <iffy:when-updated>Resurface</iffy:when-updated> | |
| 125 | <!-- other channel-level elements --> | |
| 126 | <item> | |
| 127 | <title>Names too on the nose</title> | |
| 128 | <guid isPermalink="false"> | |
| 129 | https://tech.interfluidity.com/2024/04/09/names-too-on-the-nose/index.html#updated-2024-04-14T05:55:00Z | |
| 130 | </guid> | |
| 131 | <link>https://tech.interfluidity.com/2024/04/09/names-too-on-the-nose/index.html</link> | |
| 132 | <iffy:original-guid>https://tech.interfluidity.com/2024/04/09/names-too-on-the-nose/index.html</iffy:original-guid> | |
| 133 | <atom:updated>2024-04-14T05:55:00Z</atom:updated> | |
| 134 | <!-- other item-level elements --> | |
| 135 | </item> | |
| 136 | </channel> | |
| 137 | </rss> | |
| 138 | </code></pre> | |
| 139 | </div> | |
| 140 | <hr> | |
| 141 | <p><a id="iffy-provenance" href=""></a><strong>Element — <code>iffy:provenance</code></strong></p> | <p><a id="iffy-provenance" href=""></a><strong>Element — <code>iffy:provenance</code></strong></p> |
| 142 | <div class="iffy-element-desc"> | <div class="iffy-element-desc"> |
| 143 | <p><strong>When an item level element</strong></p> | <p><strong>When an item level element</strong></p> |
| ⋮ | ⋮ | ⋮ |
| 174 | </code></pre> | </code></pre> |
| 175 | </div> | </div> |
| 176 | <hr> | <hr> |
| 177 | <p><a id="iffy-when-updated" href=""></a><strong>Element — <code>iffy:when-updated</code></strong></p> | |
| 178 | <div class="iffy-element-desc"> | |
| 179 | <p><strong>May be both a channel and item level element. Item-level specification overrides channel-level specification.</strong></p> | |
| 180 | <p>Contains one of the following three values:</p> | |
| 181 | <ol> | |
| 182 | <li><code>Ignore</code></li> | |
| 183 | <li><code>Resurface</code></li> | |
| 184 | <li><code>Reannounce</code></li> | |
| 185 | </ol> | |
| 186 | <p><code>iffy:when-updated</code> suggests how feed consumers should handle items containing <code>atom:updated</code> elements.</p> | |
| 187 | <ul> | |
| 188 | <li><code>Ignore</code> suggests that feed consumers simply ignore the notification. Feed consumers should update any cache of the item contents (as they should do in the absence of an <code>atom:updated</code> tag.</li> | |
| 189 | <li><code>Resurface</code> suggests that consumers that present multiple items in reverse-chronological order should present the new item, sorted at its update time rather than its initial publication date. Consumers that "announce" items one at a time (such a e-mail newsletter gateways, Mastodon / Twitter / SMS notifiers) should not re-notify the item.</li> | |
| 190 | <li><code>Reannounce</code>, like <code>Resurface</code>, suggests that consumers that present multiple items in reverse-chronological order should present the new item, sorted at its update time rather than its initial publication date. However, <code>Reannounce</code> suggests consumers that "announce" items one at a time (such as e-mail newsletter gateways, Mastodon / Twitter / SMS) notifiers SHOULD re-notify the item.</li> | |
| 191 | </ul> | |
| 192 | <p><strong>Implementation Notes:</strong></p> | |
| 193 | <ul> | |
| 194 | <li>Currently, very few feed consumers handle <code>iffy:when-updated</code>.</li> | |
| 195 | <li>To give effect to these values, it is recommended that, at levels <code>Resurface</code> and <code>Reannounce</code>, items be given updated <a href="https://www.rssboard.org/rss-specification#ltguidgtSubelementOfLtitemgt"><code>guid</code></a> values, so that existing consumers perceive them as distinct items.</li> | |
| 196 | <li>Naive announcement consumers, however, will then treat all <code>atom:updated</code> events as <code>Reannounce</code>, until they are explicitly modified to support this tag.</li> | |
| 197 | <li>Announcing consumers are much rarer and fewer than multiple-item-presenting consumers, so hopefully this will not be too great a burden. Ideally, eventually, feed consumers will widely support this tag and there will be no need for the "hack" of switching <code>guid</code> values.</li> | |
| 198 | <li><em>Implementations that modify <code>guid</code> values when updated MUST also provide the <code>iffy:original-guid</code> element!</em> | |
| 199 | <ul> | |
| 200 | <li><em>See <a href="#iffy-original-guid"><code>iffy:original-guid</code></a></em></li> | |
| 201 | </ul></li> | |
| 202 | </ul> | |
| 203 | <p><strong>Example:</strong></p> | |
| 204 | <pre><code class="language-xml"><?xml version='1.0' encoding='UTF-8'?> | |
| 205 | | |
| 206 | <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/"> | |
| 207 | <channel> | |
| 208 | <title>tech — interfluidity</title> | |
| 209 | <iffy:completeness>Content</iffy:completeness> | |
| 210 | <iffy:when-updated>Resurface</iffy:when-updated> | |
| 211 | <!-- other channel-level elements --> | |
| 212 | <item> | |
| 213 | <title>Ceci n'est pas un post</title> | |
| 214 | <guid isPermalink="true">https://tech.interfluidity.com/2024/04/09/ceci/index.html</guid> | |
| 215 | <link>https://tech.interfluidity.com/2024/04/09/ceci/index.html</link> | |
| 216 | <atom:updated>2024-04-14T05:55:00Z</atom:updated> | |
| 217 | <iffy:when-updated>Ignore</iffy:when-updated> | |
| 218 | </item> | |
| 219 | </channel> | |
| 220 | </rss> | |
| 221 | </code></pre> | |
| 222 | </div> | |
| 223 | <hr> | |
| 224 | </div> | </div> |
| 225 | </div> | </div> |
| 226 | <div class="entry-footer"> | <div class="entry-footer"> |
| 227 | <div class="post-metainfo"> | <div class="post-metainfo"> |
| 228 | <a href="index.html">04:10 AM EDT</a> | <a href="index.html">04:10 AM EDT</a> |
| 229 | <div class="updated-note"> | <div class="updated-note"> |
| 230 | Last major update at 2024-05-21 @ 12:25 AM EDT | <a href="index.html#major-updates">Last major update at 2024-05-24 @ 12:25 AM EDT</a> |
| 231 | </div> | </div> |
| 232 | </div> | </div> |
| 233 | </div> | </div> |
| 234 | </article> | </article> |
| 235 | <div class="after-article"> | <div class="after-article"> |
| 236 | | <div class="update-history"> |
| 237 | | <h3 class="update-history-title"><a id="major-updates" href=""></a>Major revisions:</h3> |
| 238 | | <ul> |
| 239 | | <li><span class="update-timestamp"><i>2024-05-24 @ 12:25 AM EDT</i></span> — Drop tags <code>iffy:when-updated</code> and <code>iffy:original-guid</code>, bad appraoch to updates. (See revision <a href="index-oldcommit-394986cb8d9c57f567d324e691a44d50102101ce.html">previous</a>.)</li> |
| 240 | | </ul> |
| 241 | | <div class="update-history-note"> |
| 242 | | 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>. |
| 243 | | </div> |
| 244 | | </div> |
| 245 | <div class="prev-top-next"> | <div class="prev-top-next"> |
| 246 | <div class="prev"> | <div class="prev"> |
| 247 | <a href="../../2024/04/09/names-too-on-the-nose/index.html">← Names too on the nose</a> | <a href="../../2024/04/09/names-too-on-the-nose/index.html">← Names too on the nose</a> |
| ⋮ | ⋮ | ⋮ |
| 259 | </div> | </div> |
| 260 | </body> | </body> |
| 261 | </html> | </html> |