idnits 2.17.1
draft-nottingham-atompub-feed-history-11.txt:
Checking boilerplate required by RFC 5378 and the IETF Trust (see
https://trustee.ietf.org/license-info):
----------------------------------------------------------------------------
** It looks like you're using RFC 3978 boilerplate. You should update this
to the boilerplate described in the IETF Trust License Policy document
(see https://trustee.ietf.org/license-info), which is required now.
-- Found old boilerplate from RFC 3978, Section 5.1 on line 15.
-- Found old boilerplate from RFC 3978, Section 5.5, updated by RFC 4748 on
line 623.
-- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 634.
-- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 641.
-- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 647.
Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt:
----------------------------------------------------------------------------
No issues found here.
Checking nits according to https://www.ietf.org/id-info/checklist :
----------------------------------------------------------------------------
No issues found here.
Miscellaneous warnings:
----------------------------------------------------------------------------
== The copyright year in the IETF Trust Copyright Line does not match the
current year
-- The document seems to lack a disclaimer for pre-RFC5378 work, but may
have content which was first submitted before 10 November 2008. If you
have contacted all the original authors and they are all willing to grant
the BCP78 rights to the IETF Trust, then this is fine, and you can ignore
this comment. If not, you may need to add the pre-RFC5378 disclaimer.
(See the Legal Provisions document at
https://trustee.ietf.org/license-info for more information.)
-- The document date (June 25, 2007) is 6142 days in the past. Is this
intentional?
Checking references for intended status: Proposed Standard
----------------------------------------------------------------------------
(See RFCs 3967 and 4897 for information about using normative references
to lower-maturity documents in RFCs)
-- Possible downref: Non-RFC (?) normative reference: ref. '3'
-- Possible downref: Non-RFC (?) normative reference: ref. '4'
-- Obsolete informational reference (is this intentional?): RFC 4346 (ref.
'6') (Obsoleted by RFC 5246)
-- Obsolete informational reference (is this intentional?): RFC 2617 (ref.
'7') (Obsoleted by RFC 7235, RFC 7615, RFC 7616, RFC 7617)
Summary: 1 error (**), 0 flaws (~~), 1 warning (==), 11 comments (--).
Run idnits with the --verbose option for more detailed information about
the items above.
--------------------------------------------------------------------------------
2 Network Working Group M. Nottingham
3 Internet-Draft June 25, 2007
4 Intended status: Standards Track
5 Expires: December 27, 2007
7 Feed Paging and Archiving
8 draft-nottingham-atompub-feed-history-11
10 Status of This Memo
12 By submitting this Internet-Draft, each author represents that any
13 applicable patent or other IPR claims of which he or she is aware
14 have been or will be disclosed, and any of which he or she becomes
15 aware will be disclosed, in accordance with Section 6 of BCP 79.
17 Internet-Drafts are working documents of the Internet Engineering
18 Task Force (IETF), its areas, and its working groups. Note that
19 other groups may also distribute working documents as Internet-
20 Drafts.
22 Internet-Drafts are draft documents valid for a maximum of six months
23 and may be updated, replaced, or obsoleted by other documents at any
24 time. It is inappropriate to use Internet-Drafts as reference
25 material or to cite them other than as "work in progress."
27 The list of current Internet-Drafts can be accessed at
28 http://www.ietf.org/ietf/1id-abstracts.txt.
30 The list of Internet-Draft Shadow Directories can be accessed at
31 http://www.ietf.org/shadow.html.
33 This Internet-Draft will expire on December 27, 2007.
35 Copyright Notice
37 Copyright (C) The IETF Trust (2007).
39 Abstract
41 This specification defines three types of syndicated Web feeds that
42 enable publication of entries across one or more feed documents.
43 This includes "paged" feeds for piecemeal access, "archived" feeds
44 that allow reconstruction of the feed's contents, and feeds that are
45 explicitly "complete".
47 Table of Contents
49 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
50 1.1. Notational Conventions . . . . . . . . . . . . . . . . . . 3
51 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
52 2. Complete Feeds . . . . . . . . . . . . . . . . . . . . . . . . 4
53 3. Paged Feeds . . . . . . . . . . . . . . . . . . . . . . . . . 5
54 4. Archived Feeds . . . . . . . . . . . . . . . . . . . . . . . . 6
55 4.1. Publishing Archived Feeds . . . . . . . . . . . . . . . . 9
56 4.2. Consuming Archived Feeds . . . . . . . . . . . . . . . . . 9
57 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10
58 6. Security Considerations . . . . . . . . . . . . . . . . . . . 10
59 7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 11
60 7.1. Normative References . . . . . . . . . . . . . . . . . . . 11
61 7.2. Informative References . . . . . . . . . . . . . . . . . . 11
62 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 12
63 Appendix B. Use in RSS 2.0 . . . . . . . . . . . . . . . . . . . 12
65 1. Introduction
67 Syndicated Web feeds (using such formats as Atom [1]) are often split
68 up into multiple documents to save bandwidth, allow "sliding window"
69 access, or for other purposes.
71 This specification formalizes two types of feeds that can span one or
72 more feed documents; "paged" feeds and "archived" feeds.
73 Additionally, it defines "complete" feeds to cover the case when a
74 single feed document explicitly represents all of the feed's entries.
76 Each has different properties and trade-offs:
78 o Complete feeds contain the entire set of entries in one document,
79 and can be useful when it isn't desirable to "remember"
80 previously-seen entries.
81 o Paged feeds split the entries among multiple temporary documents.
82 This can be useful when entries in the feed are not long-lived or
83 stable, and the client needs to access an arbitrary portion of
84 them, usually in close succession.
85 o Archived feeds split them among multiple permanent documents, and
86 can be useful when entries are long-lived and it is important for
87 clients to see every one.
89 The semantics of a feed that combines these types is undefined by
90 this specification.
92 Although they refer to Atom normatively, the mechanisms described
93 herein can be used with similar syndication formats; see Appendix B
94 for one such use.
96 1.1. Notational Conventions
98 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
99 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
100 document are to be interpreted as described in RFC 2119 [2].
102 This specification uses XML Namespaces [3] to uniquely identify XML
103 element names. It uses the following namespace prefix for the
104 indicated namespace URI;
106 "fh": "http://purl.org/syndication/history/1.0"
108 1.2. Terminology
110 In this specification, "feed document" refers to an Atom Feed
111 Document or similar syndication instance document. It may contain
112 any number of entries, and may or may not be a complete
113 representation of the logical feed.
115 A "logical feed" is the complete set of entries associated with a
116 feed (as contrasted with a feed document, which may contain a subset
117 of them).
119 "Head section" refers to a document's feed-wide metadata container;
120 e.g., the child elements of the atom:feed element in an Atom Feed
121 Document.
123 This specification uses terms from the XML Infoset [4]. However,
124 this specification uses a shorthand; the phrase "Information Item" is
125 omitted when naming Element Information Items. Therefore, when this
126 specification uses the term "element," it is referring to an Element
127 Information Item in Infoset terms.
129 This specification also uses Atom link relations to identify
130 different types of links; see the Atom specification [1] for
131 information about their syntax, and the IANA link relation registry
132 for more information about specific values.
134 Note that URI references in link relation values may be relative, and
135 when they are used they must be absolutised, as described in Section
136 5.1 of [5].
138 2. Complete Feeds
140 A complete feed is a feed document that contains all of the entries
141 of a logical feed; any entry not actually in the feed document SHOULD
142 NOT be considered to be part of that feed.
144 For example, a feed that represents a ranking that varies over time
145 (such as "Top Twenty Records" or "Most Popular Items") should not
146 have newer entries displayed alongside older ones. By marking this
147 type feeds as complete, old entries are discarded when it is
148 refreshed.
150 The fh:complete element, when present in a feed's head section,
151 indicates that the feed document it occurs in is a complete
152 representation of the logical feed's entries. It is an empty
153 element; this specification does not define any content for it.
155 Example: Atom-formatted Complete Feed
157
158
160 NetMovies Queue
161 The DVDs you'll receive next.
162
163
164
166 2003-12-13T18:30:02Z
167
168 John Doe
169
170 urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6
171
172 Casablanca
173
174 urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a
175 2003-12-13T18:30:02Z
176 Here's looking at you, kid...
177
178
180 This specification does not address duplicate entries in complete
181 feeds.
183 3. Paged Feeds
185 A paged feed is a set of linked feed documents that together contain
186 the entries of a logical feed, without any guarantees about the
187 stability of the documents' contents.
189 Paged feeds are lossy; that is, it is not possible to guarantee that
190 clients will be able to reconstruct the contents of the logical feed
191 at a particular time. Entries may be added or changed as the pages
192 of the feed are accessed, without the client becoming aware of them.
194 Therefore, clients SHOULD NOT present paged feeds as coherent or
195 complete, or make assumptions to that effect.
197 Paged feeds can be useful when the number of entries is very large,
198 infinite, or indeterminate. Clients can "page" through the feed,
199 only accessing a subset of the feed's entries as necessary.
201 For example, a search engine might make query results available as a
202 paged feed, so that queries with very large result sets do not
203 overwhelm the server, the network, or the client.
205 The feed documents in a paged feed are tied together with the
206 following link relations:
208 o "first" - A URI that refers to the furthest preceding document in
209 a series of documents.
210 o "last" - A URI that refers to the furthest following document in a
211 series of documents.
212 o "previous" - A URI that refers to the immediately preceding
213 document in a series of documents.
214 o "next" - A URI that refers to the immediately following document
215 in a series of documents.
217 Paged feed documents MUST have at least one of these link relations
218 present, and should contain as many as practical and applicable.
220 Example: Atom-formatted Paged Feed
222
223
224 Example Feed
225
226
227
228 2003-12-13T18:30:02Z
229
230 John Doe
231
232 urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6
233
234 Atom-Powered Robots Run Amok
235
236 urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a
237 2003-12-13T18:30:02Z
238 Some text.
239
240
242 This specification does not address duplicate entries in paged feeds.
244 4. Archived Feeds
246 An archived feed is a set of feed documents that can be combined to
247 accurately reconstruct the entries of a logical feed.
249 Unlike paged feeds, archived feeds enable clients to do this without
250 losing entries. This is achieved by publishing a single subscription
251 document and (potentially) many archive documents.
253 A subscription document is a feed document that always contains the
254 most recently added or changed entries available in the logical feed.
256 Archive documents are feed documents that contain less recent entries
257 in the feed. The set of entries contained in an archive document
258 published at a particular URI SHOULD NOT change over time. Likewise,
259 the URI for a particular archive document SHOULD NOT change over
260 time.
262 The following link relations are used to tie subscription and
263 archived feeds together:
265 o "prev-archive" - A URI that refers to the immediately preceding
266 archive document.
267 o "next-archive" - A URI that refers to the immediately following
268 archive document.
269 o "current" - A URI that, when dereferenced, returns a feed document
270 containing the most recent entries in the feed.
272 Subscription documents and archive documents MUST have a "prev-
273 archive" link relation, unless there are no preceding archives
274 available. Archive documents SHOULD also have a "next-archive" link
275 relation, unless there are no following archives available.
277 Archive documents SHOULD indicate their associated subscription
278 documents using the "current" link relation.
280 Archive documents SHOULD also contain an fh:archive element in their
281 head sections to indicate that they are archives. fh:archive is an
282 empty element; this specification does not define any content for it.
284 Example: Atom-formatted Subscription Document
286
287
288 Example Feed
289
290
291
293 2003-12-13T18:30:02Z
294
295 John Doe
296
297 urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6
298
299 Atom-Powered Robots Run Amok
300
301 urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a
302 2003-12-13T18:30:02Z
303 Some text.
304
305
307 Example: Atom-formatted Archive Document
309
310
312 Example Feed
313
314
315
316
318 2003-11-24T12:00:00Z
319
320 John Doe
321
322 urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6
323
324 Atom-Powered Robots Scheduled To Run Amok
325
326 urn:uuid:cdef5c6d5-gff8-4ebb-assa-80dwe44efkjo
327 2003-11-24T12:00:00Z
328 Some text from an old, different entry.
329
330
331 In this example, the feed archives are split into monthly chunks, and
332 the subscription document points to the most recent complete archive
333 "http://example.org/2003/11/index.atom" using the "prev-archive"
334 relation. That document, in turn points to the previous archive
335 "http://example.org/2003/10/index.atom", and so on. Note that the
336 "2003/11" archive does not have a "next-archive" relation, because it
337 is the most recent complete archive; although another archive
338 ("2003/12") may be under construction, it would be an error to link
339 to it before completion.
341 4.1. Publishing Archived Feeds
343 The requirement that archive documents be stable allows clients to
344 safely assume that if they have retrieved one in the past, it will
345 not meaningfully change in the future. As a result, if an archive
346 document's contents are changed, some clients may not become aware of
347 it.
349 Therefore, if a publisher requires a change to be visible to all
350 users (e.g., correcting factual errors), they should consider
351 publishing the revised entry in the subscription document, in
352 addition to (or instead of) the appropriate archive document.
353 Conversely, unimportant changes (e.g., spelling corrections) might be
354 only effected in archive documents.
356 Publishers SHOULD construct their feed documents in such a way as to
357 make duplicate removal unambiguous (see Section 4.2).
359 Publishers are not required to make all archive documents available;
360 they may refuse to serve (e.g., with HTTP status code 403 or 410), or
361 be unable to serve (e.g., with HTTP status code 404) an archive
362 document.
364 4.2. Consuming Archived Feeds
366 Typically, clients will "subscribe" to an archived feed by polling
367 the subscription document for recent changes. If URI contained in
368 the prev-archive link relation has not been processed in the past,
369 the client can "catch up" with any missed entries by dereferencing it
370 and adding the contained entries to the logical feed. This process
371 should be repeated recursively until the client encounters a prev-
372 archive link relation that has been processed, the end of the archive
373 is indicated by a missing prev-archive link relation, or an error is
374 encountered.
376 If duplicate entries are found, clients SHOULD consider only the most
377 recently updated entry to be part of the logical feed. If duplicate
378 entries have the same update time-stamp, or none is available, the
379 entry sourced from the most recently updated feed document SHOULD
380 replace all other duplicates of that entry.
382 In Atom-formatted archived feeds, two entries are duplicates if they
383 have the same atom:id element. The update time of an entry is
384 determined by its atom:updated element, and likewise the update time
385 of a feed document is determined by its feed-level atom:updated
386 element.
388 Clients SHOULD warn users when they are not able to reconstruct the
389 entire logical feed (e.g., by alerting the user that an archive
390 document is unavailable, or displaying pseudo-entries that inform the
391 user that some entries may be missing).
393 5. IANA Considerations
395 This specification defines the following new relations, to be added
396 to the Link Relations registry:
398 o Attribute Value: prev-archive
399 o Description: A URI that refers to the immediately
400 preceding archive document.
401 o Expected display characteristics: none
402 o Security considerations: See [ this document ]
404 o Attribute Value: next-archive
405 o Description: A URI that refers to the immediately
406 following archive document.
407 o Expected display characteristics: none
408 o Security considerations: See [ this document ]
410 Additionally, the "previous," "next" and "current" link relations
411 should be updated to refer to this document.
413 6. Security Considerations
415 Feeds using this mechanism have the same security considerations as
416 Atom [1]. Encryption and authentication security services can be
417 obtained by encrypting and/or signing the feed, as described in [1],
418 and may also be obtained through channel-based mechanisms (e.g., TLS
419 [6], HTTP authentication [7]) and/or transport (e.g., IPSec [8]).
421 Feeds using these mechanisms could be crafted in such a way as to
422 cause a client to initiate excessive (or even an unending sequence
423 of) network requests, causing denial of service (either to the
424 client, the target server, and/or intervening networks). Clients can
425 mitigate this risk by requiring user intervention after a certain
426 number of requests, or by limiting requests either according to a
427 hard limit, or with heuristics. Servers can mitigate this risk by
428 denying requests that they consider abusive (e.g., by closing the
429 connection, or generating an error).
431 Clients should be mindful of resource limits when storing feed
432 documents. To reiterate, they are not required to always store or
433 reconstruct the feed when conforming to this specification; they only
434 need inform the user when the reconstructed feed is not complete.
436 This specification does not define what it means when a logical
437 feed's component feed documents have different security mechanisms
438 applied.
440 7. References
442 7.1. Normative References
444 [1] Nottingham, M. and R. Sayre, "The Atom Syndication Format",
445 RFC 4287, December 2005.
447 [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
448 Levels", BCP 14, RFC 2119, March 1997.
450 [3] Bray, T., Hollander, D., and A. Layman, "Namespaces in XML", W3C
451 REC REC-xml-names-19990114, January 1999.
453 [4] Cowan, J. and R. Tobin, "XML Information Set (Second Edition)",
454 W3C REC REC-xml-infoset-20040204, February 2004.
456 [5] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform
457 Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986,
458 January 2005.
460 7.2. Informative References
462 [6] Dierks, T. and E. Rescorla, "The Transport Layer Security (TLS)
463 Protocol Version 1.1", RFC 4346, April 2006.
465 [7] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S.,
466 Leach, P., Luotonen, A., and L. Stewart, "HTTP Authentication:
467 Basic and Digest Access Authentication", RFC 2617, June 1999.
469 [8] Kent, S. and K. Seo, "Security Architecture for the Internet
470 Protocol", RFC 4301, December 2005.
472 [9] Winer, D., "RSS 2.0 Specification", 2005.
474 Appendix A. Acknowledgements
476 The author would like to thank the following people for their
477 contributions, comments and help: Danny Ayers, Thomas Broyer, Lisa
478 Dusseault, Stefan Eissing, David Hall, Bill de Hora, Vidya Narayanan,
479 Aristotle Pagaltzis, John Panzer, Dave Pawson, Garrett Rooney, Robert
480 Sayre, James Snell, Henry Story, Franklin Tse.
482 Any errors herein remain the author's, not theirs.
484 Appendix B. Use in RSS 2.0
486 As previously noted, while this specification's extensions are
487 described in terms of the Atom feed format, they are also useful in
488 similar formats. This informative appendix demonstrates how they can
489 be used in an RSS 2.0-formatted [9] feed.
491 In RSS 2.0-formatted feeds, two entries are duplicates if they have
492 the same guid element. The update time of an entry is not defined by
493 RSS 2.0, but the feed-level update time can be determined by the
494 lastBuildDate element, if present.
496 RSS 2.0-formatted Complete Feed
498
499
501
502 NetMovies Queue
503 http://netmovies.example.org/
504 The DVDs you'll receive next.
505
506
507 Casablanca
508 http://netmovies.example.org/movies/Casablanca
509 Here's looking at you, kid...
510
511 Tue, 03 Jun 2003 09:39:21 GMT
512 urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a
514
515
516
517 RSS 2.0-formatted Paged Feed
519
520
522
523 Liftoff News
524 http://liftoff.example.net/
525 Liftoff to Space Exploration.
526
528
529 Star City
530 http://liftoff.example.net/2003/06/news-starcity
531 How do Americans get ready to work with Russians
532 aboard the International Space Station? They take a crash course
533 in culture, language and protocol at Russia's Star City.
534
535 Tue, 03 Jun 2003 09:39:21 GMT
536 http://liftoff.example.net/2003/06/03/starcity
537
538
539
541 RSS 2.0-formatted Subscription Document
543
544
545
546 Liftoff News
547 http://liftoff.example.net/
548 Liftoff to Space Exploration.
549
552
553 Star City
554 http://liftoff.example.net/2003/06/news-starcity
555 How do Americans get ready to work with Russians
556 aboard the International Space Station? They take a crash course
557 in culture, language and protocol at Russia's Star City.
558
559 Tue, 03 Jun 2003 09:39:21 GMT
560 http://liftoff.example.net/2003/06/03/starcity
561
562
563
564 RSS 2.0-formatted Archive Document
566
567
569
570 Liftoff News
571 http://liftoff.example.net/
572 Liftoff to Space Exploration.
573 Fri, 30 May 2003 11:06:42 GMT
574
575
577
580
581 Upcoming Eclipse
582 http://liftoff.example.net/2003/05/30/eclipse
583 Sky watchers in Europe, Asia, and parts of
584 Alaska and Canada will experience a partial eclipse of the Sun
585 on Saturday, May 31st.
586 Fri, 30 May 2003 11:06:42 GMT
587 http://liftoff.example.net/2003/05/30/eclipse
588
589
590 The Engine That Does More
591 http://liftoff.example.net/2003/05/27/vasmir
592 Before man travels to Mars, NASA hopes to
593 design new engines that will let us fly through the Solar
594 System more quickly. The proposed VASIMR engine would do
595 that.
596 Tue, 27 May 2003 08:37:32 GMT
597 http://liftoff.example.net/2003/05/27/vasmir
598
599
600
602 Author's Address
604 Mark Nottingham
606 EMail: mnot@pobox.com
607 URI: http://www.mnot.net/
609 Full Copyright Statement
611 Copyright (C) The IETF Trust (2007).
613 This document is subject to the rights, licenses and restrictions
614 contained in BCP 78, and except as set forth therein, the authors
615 retain all their rights.
617 This document and the information contained herein are provided on an
618 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
619 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
620 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
621 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
622 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
623 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
625 Intellectual Property
627 The IETF takes no position regarding the validity or scope of any
628 Intellectual Property Rights or other rights that might be claimed to
629 pertain to the implementation or use of the technology described in
630 this document or the extent to which any license under such rights
631 might or might not be available; nor does it represent that it has
632 made any independent effort to identify any such rights. Information
633 on the procedures with respect to rights in RFC documents can be
634 found in BCP 78 and BCP 79.
636 Copies of IPR disclosures made to the IETF Secretariat and any
637 assurances of licenses to be made available, or the result of an
638 attempt made to obtain a general license or permission for the use of
639 such proprietary rights by implementers or users of this
640 specification can be obtained from the IETF on-line IPR repository at
641 http://www.ietf.org/ipr.
643 The IETF invites any interested party to bring to its attention any
644 copyrights, patents or patent applications, or other proprietary
645 rights that may cover technology that may be required to implement
646 this standard. Please address the information to the IETF at
647 ietf-ipr@ietf.org.
649 Acknowledgement
651 Funding for the RFC Editor function is provided by the IETF
652 Administrative Support Activity (IASA).