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> |