# Diff of /xml/iffy/index.html

## Revision 394986cb8d9c57f567d324e691a44d50102101ce => 13de0232319ceab2f830591c318089d18cbec78d

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>