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