idnits 2.17.1 draft-nottingham-atompub-feed-history-07.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 on line 612. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 623. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 630. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 636. ** This document has an original RFC 3978 Section 5.4 Copyright Line, instead of the newer IETF Trust Copyright according to RFC 4748. ** This document has an original RFC 3978 Section 5.5 Disclaimer, instead of the newer disclaimer which includes the IETF Trust according to RFC 4748. 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 RFC 3978 Section 5.4 Copyright Line does not match the current year == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords -- however, there's a paragraph with a matching beginning. Boilerplate error? (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- 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 (September 12, 2006) is 6434 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) No issues found here. Summary: 3 errors (**), 0 flaws (~~), 2 warnings (==), 7 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group M. Nottingham 3 Internet-Draft September 12, 2006 4 Intended status: Standards Track 5 Expires: March 16, 2007 7 Feed Paging and Archiving 8 draft-nottingham-atompub-feed-history-07 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 March 16, 2007. 35 Copyright Notice 37 Copyright (C) The Internet Society (2006). 39 Abstract 41 This specification defines three types of syndicated feeds that 42 enable publication of entries across one or more feed documents. 44 Table of Contents 46 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 47 1.1. Notational Conventions . . . . . . . . . . . . . . . . . . 3 48 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 49 2. Complete Feeds . . . . . . . . . . . . . . . . . . . . . . . . 4 50 2.1. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 5 51 3. Paged Feeds . . . . . . . . . . . . . . . . . . . . . . . . . 6 52 3.1. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 7 53 4. Archived Feeds . . . . . . . . . . . . . . . . . . . . . . . . 8 54 4.1. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 10 55 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 13 56 6. Security Considerations . . . . . . . . . . . . . . . . . . . 14 57 7. Normative References . . . . . . . . . . . . . . . . . . . . . 14 58 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 15 59 Appendix B. Reconstructing Archived Feeds . . . . . . . . . . . . 15 61 1. Introduction 63 Syndicated Web feeds (using such formats as Atom [RFC4287] or RSS 64 2.0) are often split up into multiple documents to save bandwidth, 65 allow "sliding window" access, or for other purposes. 67 This specification formalizes two types of feeds that can span one or 68 more feed documents; "paged" feeds and "archived" feeds. 69 Additionally, it defines "complete" feeds to cover the case when a 70 single feed document explicitly represents all of the feed's entries. 72 These types are complementary; each has different properties and 73 trade-offs: 75 o Complete feeds contain the entire set of entries in one document, 76 and can be useful when it isn't desirable to "remember" 77 previously-seen entries. 78 o Paged feeds split the logical feed's entries among multiple 79 temporary documents. This can be useful when entries in the feed 80 are not long-lived or stable, and the client needs to access an 81 arbitrary portion of them, usually in close succession. 82 o Archived feeds split them among multiple permanent documents, and 83 can be useful when entries are long-lived and it is important for 84 clients to see every one. 86 Although they refer to Atom normatively, the mechanisms described 87 herein can be used with similar syndication formats, such as the 88 various flavors of RSS. 90 1.1. Notational Conventions 92 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 93 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 94 document are to be interpreted as described in BCP 14 [RFC2119], as 95 scoped to those conformance targets. 97 This specification uses XML Namespaces [W3C.REC-xml-names-19990114] 98 to uniquely identify XML element names. It uses the following 99 namespace prefix for the indicated namespace URI; 101 "fh": "http://purl.org/syndication/history/1.0" 103 1.2. Terminology 105 In this specification, "feed document" refers to an Atom Feed 106 Document, RSS document, or similar syndication instance document. It 107 may contain any number of entries (in RSS, items), and may or may not 108 be a complete representation of the logical feed. 110 A "logical feed" is the set of entries associated with a particular 111 feed (as contrasted with a feed document, which may contain a subset 112 of them). 114 "Head section" refers to the children of a feed document's document- 115 wide metadata container; e.g., the child elements of the atom:feed 116 element in an Atom Feed Document. 118 This specification uses terms from the XML Infoset 119 [W3C.REC-xml-infoset-20040204]. However, this specification uses a 120 shorthand; the phrase "Information Item" is omitted when naming 121 Element Information Items. Therefore, when this specification uses 122 the term "element," it is referring to an Element Information Item in 123 Infoset terms. 125 This specification also uses Atom link relations to identify 126 different types of links; see the Atom specification [RFC4287] for 127 information about their syntax, and the IANA link relation registry 128 for more information about specific values. 130 2. Complete Feeds 132 A complete feed is a feed document that contains all of the entries 133 of a logical feed; any entry not actually in the feed document SHOULD 134 NOT be considered to be part of that feed. 136 For example; a feed that represents a ranking that varies over time, 137 such as "Top Twenty Records" or "Most Popular Items" should not have 138 newer entries displayed alongside older ones. By marking them as 139 complete feeds, old entries are discarded when the feed is refreshed. 141 The fh:complete element, when present in a feed's head section, 142 indicates that the feed document it occurs in is a complete 143 representation of the logical feed's entries. 145 For example, 147 149 2.1. Examples 151 Atom-formatted Complete Feed 153 154 156 NetMovies Queue 157 The DVDs you'll receive next. 158 159 160 162 2003-12-13T18:30:02Z 163 164 John Doe 165 166 urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6 167 168 Casablanca 169 170 urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a 171 2003-12-13T18:30:02Z 172 Here's looking at you, kid... 173 174 175 RSS 2.0-formatted Complete Feed 177 178 180 181 NetMovies Queue 182 http://netmovies.example.org/ 183 The DVDs you'll receive next. 184 en-us 185 Tue, 10 Jun 2003 04:00:00 GMT 186 Tue, 10 Jun 2003 09:41:01 GMT 187 http://blogs.law.harvard.edu/tech/rss 188 Weblog Editor 2.0 189 editor@netmovies.example.org 190 webmaster@netmovies.example.org 191 192 193 Casablanca 194 http://netmovies.example.org/movies/Casablanca 195 Here's looking at you, kid... 196 197 Tue, 03 Jun 2003 09:39:21 GMT 198 urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a 199 200 201 203 3. Paged Feeds 205 A paged feed is a set of linked feed documents that together contain 206 the entries of a logical feed, without any guarantees about the 207 stability of the documents' contents. 209 Paged feeds are lossy; that is, it is not possible to guarantee that 210 clients will be able to reconstruct the contents of the logical feed 211 at a particular time. Some entries may be added or changed as the 212 pages of the feed are accessed, without the client becoming aware of 213 them. 215 Paged feeds can be useful when the number of entries is very large, 216 infinite, or indeterminate. Clients can "page" through the feed, 217 only accessing a subset of the feed's entries as necessary. 219 For example, a search engine might make query results available as a 220 paged feed, so that queries with very large result sets do not 221 overwhelm the server, the network, or the client. 223 The feed documents in a paged feed are tied together with the 224 following link relations: 226 o "first" - A URI that refers to the furthest preceding document in 227 a series of documents. 228 o "last" - A URI that refers to the furthest following document in a 229 series of documents. 230 o "previous" - A URI that refers to the immediately preceding 231 document in a series of documents. 232 o "next" - A URI that refers to the immediately following document 233 in a series of documents. 235 Paged feed documents MUST have at least one of these link relations 236 present, and SHOULD contain as many as practical and applicable. 238 Note that URI references in link relation values may be relative, and 239 when they are used they must be absolutised, as described in Section 240 5.1 of [RFC3986]. 242 3.1. Examples 244 Atom-formatted Paged Feed 246 247 248 Example Feed 249 250 251 252 2003-12-13T18:30:02Z 253 254 John Doe 255 256 urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6 257 258 Atom-Powered Robots Run Amok 259 260 urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a 261 2003-12-13T18:30:02Z 262 Some text. 263 264 265 RSS 2.0-formatted Paged Feed 267 268 270 271 Liftoff News 272 http://liftoff.nasa.gov/ 273 Liftoff to Space Exploration. 274 en-us 275 Tue, 10 Jun 2003 04:00:00 GMT 276 Tue, 10 Jun 2003 09:41:01 GMT 277 http://blogs.law.harvard.edu/tech/rss 278 Weblog Editor 2.0 279 editor@example.com 280 webmaster@example.com 281 295 297 4. Archived Feeds 299 An archived feed is a set of feed documents that can be combined to 300 accurately reconstruct the entries of a logical feed. 302 Unlike paged feeds, archived feeds enable clients to do this without 303 losing any entries. This is achieved by publishing a single 304 subscription document and (potentially) many archive documents. 306 A subscription document is a feed document that always contains the 307 most recently added or changed entries available in the logical feed 308 (often, the feed document that should be subscribed to). 310 Archive documents are feed documents that contain less recent entries 311 in the feed. The set of entries contained in an archive document 312 published at a particular URI SHOULD NOT change over time. Likewise, 313 the URI for a particular archive document SHOULD NOT change over 314 time. 316 These stability requirements allow clients to safely assume that if 317 they have retrieved an archive document from a particular URI once, 318 it will not meaningfully change in the future. As a result, if an 319 archive document's contents are changed, clients may not become aware 320 of it. 322 Therefore, if a publisher requires a change to be visible to all 323 users (e.g., correcting factual errors), they should consider 324 publishing the revised entry in the subscription feed, in addition to 325 (or instead of) the appropriate archive feed. Conversely, 326 unimportant changes (e.g., spelling corrections) might be only 327 effected in archive feeds. 329 Typically, a subscription feed will link to a set of archive 330 documents (also linked together) which contain progressively less 331 recent entries. 333 Clients can then "subscribe" to the feed, polling the subscription 334 document for recent changes. If a client has missed some entries, 335 the archives can be used to synchronise its state by fetching the 336 archive documents it has not yet seen. 338 The following link relations are used to tie subscription and 339 archived feeds together: 341 o "prev-archive" - A URI that refers to the immediately preceding 342 archive document. 343 o "next-archive" - A URI that refers to the immediately following 344 archive document. 345 o "current" - A URI that, when dereferenced, returns a feed document 346 containing the most recent entries in the feed. 348 Subscription documents and archive documents MUST have a "prev- 349 archive" link relation, unless there are no archives available. 351 Archive documents SHOULD have "next-archive" and "current" link 352 relations. 354 Note that URI references in link relation values may be relative, and 355 when they are used they must be absolutised, as described in Section 356 5.1 of [RFC3986]. 358 Archive document SHOULD also contain an fh:archive element in their 359 head sections, to indicate that they are archives. 361 For example, 363 365 Publishers are not required to make all archive documents available; 366 they may refuse to serve (e.g., with HTTP status code 403 or 410), or 367 be unable to serve (e.g., with HTTP status code 404) an archive 368 document. 370 Clients SHOULD warn users when they are not able to reconstruct the 371 complete, logical feed (e.g., by alerting the user that an archive 372 document is unavailable, or displaying pseudo-entries that inform the 373 user that some entries may be missing). 375 4.1. Examples 377 Atom-formatted Subscription Document 379 380 381 Example Feed 382 383 384 386 2003-12-13T18:30:02Z 387 388 John Doe 389 390 urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6 391 392 Atom-Powered Robots Run Amok 393 394 urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a 395 2003-12-13T18:30:02Z 396 Some text. 397 398 399 Atom-formatted Archive Document 401 402 404 Example Feed 405 406 407 408 410 2003-11-24T12:00:00Z 411 412 John Doe 413 414 urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6 415 416 Atom-Powered Robots Scheduled To Run Amok 417 418 urn:uuid:cdef5c6d5-gff8-4ebb-assa-80dwe44efkjo 419 2003-11-24T12:00:00Z 420 Some text from an old, different entry. 421 422 423 RSS 2.0-formatted Subscription Document 425 426 427 428 Liftoff News 429 http://liftoff.nasa.gov/ 430 Liftoff to Space Exploration. 431 en-us 432 Tue, 10 Jun 2003 04:00:00 GMT 433 Tue, 10 Jun 2003 09:41:01 GMT 434 http://blogs.law.harvard.edu/tech/rss 435 Weblog Editor 2.0 436 editor@example.com 437 webmaster@example.com 438 441 442 Star City 443 http://liftoff.nasa.gov/2003/06/news-starcity 444 How do Americans get ready to work with Russians 445 aboard the International Space Station? They take a crash course 446 in culture, language and protocol at Russia's 449 Tue, 03 Jun 2003 09:39:21 GMT 450 http://liftoff.nasa.gov/2003/06/03.html#item573 451 452 453 454 RSS 2.0-formatted Archive Document 456 457 459 460 Liftoff News 461 http://liftoff.nasa.gov/ 462 Liftoff to Space Exploration. 463 en-us 464 Tue, 30 May 2003 08:00:00 GMT 465 Tue, 30 May 2003 10:31:52 GMT 466 http://blogs.law.harvard.edu/tech/rss 467 Weblog Editor 2.0 468 editor@example.com 469 webmaster@example.com 470 471 473 476 477 Sky watchers in Europe, Asia, and parts of 478 Alaska and Canada will experience a partial eclipse of the Sun 479 on Saturday, May 31st. 480 Fri, 30 May 2003 11:06:42 GMT 481 http://liftoff.nasa.gov/2003/05/30.html#item572 482 483 484 The Engine That Does More 485 http://liftoff.nasa.gov/2003/05/news-VASIMR.asp 486 Before man travels to Mars, NASA hopes to 487 design new engines that will let us fly through the Solar 488 System more quickly. The proposed VASIMR engine would do 489 that. 490 Tue, 27 May 2003 08:37:32 GMT 491 http://liftoff.nasa.gov/2003/05/27.html#item571 492 493 494 496 5. IANA Considerations 498 The "previous", "next" and "current" link relations have been 499 previously registered, and no IANA action regarding them is required. 501 This specification defines the following link relations: 503 o Attribute Value: prev-archive 504 o Description: A URI that refers to the immediately 505 preceding archive document. 506 o Expected display characteristics: none 507 o Security considerations: See [ this document ] 509 o Attribute Value: next-archive 510 o Description: A URI that refers to the immediately 511 following archive document. 512 o Expected display characteristics: none 513 o Security considerations: See [ this document ] 515 6. Security Considerations 517 Feeds using the mechanisms described here could be crafted in such a 518 way as to cause a client to initiate excessive (or even an unending 519 sequence of) network requests, causing denial of service (either to 520 the client, the target server, and/or intervening networks). Clients 521 can mitigate this risk by requiring user intervention after a certain 522 number of requests, or by limiting requests either according to a 523 hard limit, or with heuristics. 525 Clients should be mindful of resource limits when storing feed 526 documents. To reiterate, they are not required to always store or 527 reconstruct the feed when conforming to this specification; they only 528 need inform the user when the reconstructed feed is not complete. 530 7. Normative References 532 [RFC2119] Bradner, S., "Key words for use in 533 RFCs to Indicate Requirement Levels", 534 BCP 14, RFC 2119, March 1997. 536 [RFC3986] Berners-Lee, T., Fielding, R., and L. 537 Masinter, "Uniform Resource 538 Identifier (URI): Generic Syntax", 539 STD 66, RFC 3986, January 2005. 541 [RFC4287] Nottingham, M. and R. Sayre, "The 542 Atom Syndication Format", RFC 4287, 543 December 2005. 545 [W3C.REC-xml-infoset-20040204] Cowan, J. and R. Tobin, "XML 546 Information Set (Second Edition)", 547 W3C REC REC-xml-infoset-20040204, 548 February 2004. 550 [W3C.REC-xml-names-19990114] Bray, T., Hollander, D., and A. 552 Layman, "Namespaces in XML", W3C 553 REC REC-xml-names-19990114, 554 January 1999. 556 Appendix A. Acknowledgements 558 The author would like to thank the following people for their 559 contributions, comments and help: Danny Ayers, Thomas Broyer, Stefan 560 Eissing, David Hall, Bill de Hora, Aristotle Pagaltzis, John Panzer, 561 Dave Pawson, Garrett Rooney, Robert Sayre, James Snell, Henry Story. 563 Any errors herein remain the author's, not theirs. 565 Appendix B. Reconstructing Archived Feeds 567 One algorithm for reconstructing an archived feed into a complete, 568 logical feed (S), give the subscription document (D) follows. 570 1. Create an empty list L. 571 2. Consider the URI of the last archive document successfully stored 572 to local store S as A. 573 3. Consider the set of entries in document D as E. 574 4. If the document D has a "prev-archive" link relation value P in 575 its head section, and P is not A, 576 1. Append P to L. 577 2. Dereference P and use the resulting feed document as D. 578 5. Repeat the previous step until no new P is found. 579 6. Add all of document D's entries to the local store S, replacing 580 any entries with the same identity. 581 7. Pop the last "prev-archive" link relation from L, dereference its 582 value and use the resulting feed document as D. 583 8. Repeat the previous two steps until L is empty. 584 9. Add the entries E to the local store S, replacing any entries 585 with the same identity. 587 In these instructions, the concept of an entry's identity is format- 588 specific; e.g., in Atom, it is conveyed by the atom:id element; in 589 RSS 2, it is indicated by the guid element. 591 Author's Address 593 Mark Nottingham 595 EMail: mnot@pobox.com 596 URI: http://www.mnot.net/ 598 Full Copyright Statement 600 Copyright (C) The Internet Society (2006). 602 This document is subject to the rights, licenses and restrictions 603 contained in BCP 78, and except as set forth therein, the authors 604 retain all their rights. 606 This document and the information contained herein are provided on an 607 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 608 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET 609 ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, 610 INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE 611 INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 612 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 614 Intellectual Property 616 The IETF takes no position regarding the validity or scope of any 617 Intellectual Property Rights or other rights that might be claimed to 618 pertain to the implementation or use of the technology described in 619 this document or the extent to which any license under such rights 620 might or might not be available; nor does it represent that it has 621 made any independent effort to identify any such rights. Information 622 on the procedures with respect to rights in RFC documents can be 623 found in BCP 78 and BCP 79. 625 Copies of IPR disclosures made to the IETF Secretariat and any 626 assurances of licenses to be made available, or the result of an 627 attempt made to obtain a general license or permission for the use of 628 such proprietary rights by implementers or users of this 629 specification can be obtained from the IETF on-line IPR repository at 630 http://www.ietf.org/ipr. 632 The IETF invites any interested party to bring to its attention any 633 copyrights, patents or patent applications, or other proprietary 634 rights that may cover technology that may be required to implement 635 this standard. Please address the information to the IETF at 636 ietf-ipr@ietf.org. 638 Acknowledgement 640 Funding for the RFC Editor function is provided by the IETF 641 Administrative Support Activity (IASA).