view Side-By-Side changes
Network Working Group M. Nottingham Internet-DraftFebruary 26,June 25, 2006 Expires:August 30,December 27, 2006Feed History: Enabling Incremental Syndication draft-nottingham-atompub-feed-history-05Extensions for Multi-Document Syndicated Feeds draft-nottingham-atompub-feed-history-06 Status of this Memo By submitting this Internet-Draft, each author represents that any applicable patent or other IPR claims of which he or she is aware have been or will be disclosed, and any of which he or she becomes aware will be disclosed, in accordance with Section 6 of BCP 79. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt. The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. This Internet-Draft will expire onAugust 30,December 27, 2006. Copyright Notice Copyright (C) The Internet Society (2006). Abstract This specificationdescribes a technique for feed publishers to give hints about the completenessdefines three types ofa feed, and a meanssyndicated feeds that enable publication ofretrieving "missed"entriesfrom a incremental feed.across one or more feed documents. Nottingham ExpiresAugust 30,December 27, 2006 [Page 1] Internet-Draft Feed HistoryFebruaryJune 2006 Table of Contents 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.TerminologyNotational Conventions . . . . . . . . . . . . . . . . . . . . 3 3. Terminology . . . . .3 3. Notational Conventions. . . . . . . . . . . . . . . . . . . . 4 4.Publishing IncrementalComplete Feeds . . . . . . . . . . . . . . . . . . . . . . . . 4 4.1. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 5 5.Publishing Non-IncrementalPaged Feeds . . . . . . . . . . . . . . .5. . . . . . . . . . 6 5.1. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 7 6.Reconstructing Feed StateArchived Feeds . . . . . . . . . . . . . . . . . .5 7.. . . . . . 8 6.1. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 10 7. IANA Considerations . . .7. . . . . . . . . . . . . . . . . . 13 8. Security Considerations . . . . . . . . . . . . . . . . . . .1014 9. Normative References . . . . . . . . . . . . . . . . . . . . .1114 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . .1115 Appendix B. Reconstructing Archived Feeds . . . . . . . . . . . . 15 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . .1216 Intellectual Property and Copyright Statements . . . . . . . . . .1317 Nottingham ExpiresAugust 30,December 27, 2006 [Page 2] Internet-Draft Feed HistoryFebruaryJune 2006 1. IntroductionSyndication documents (e.g., those in formatsSyndicated feeds of information (using such formats as Atom [RFC4287]andor RSS2.0 [1]) usually only contain the last several entries in a larger channel (or "feed") of information. Often, consuming software keeps copies2.0) are often split up into multiple documents to save bandwidth, allow "sliding window" access, or for other purposes. This specification defines three types ofall entriesfeeds thathave been previously seen, effectively keeping a history ofallow thefeed's contents. However, not all feeds benefitreconstruction of their state fromthis practice; in some, previous entriesone or more feed documents; "complete" feeds, "paged" feeds and "archived" feeds. These types arenot relevant tocomplementary; each has different properties and trade-offs: o Complete feeds contain thecurrent contentsentire set ofthe feed. For example, it's not desirable to keep history in this manner with a "top ten" feed; showing oldentrieswould imply that the previous numberin oneis now number eleven,document, andso forth. Feeds that encourage this practice have a different problem. If consuming software does not poll often enough, some entries maycan bemissed, causing themuseful when it isn't desirable tobe silently omitted. For some applications, this is a serious error on its own. Even in non-critical applications, this phenomenon"remember" previously-seen entries. o Paged feeds split the logical feed's entries among multiple temporary documents. This cancause publishers to make Feed Documents contain morebe useful when entriesthan reasonably necessary, just to assure that consumers have an amply large windowinwhich to reconstructthefeed's state. This specification describes a technique that allowsfeedpublishers to give hints as toare not long-lived or stable, and thecompletenessclient needs to access an arbitrary portion ofa feed document,them, usually in close succession. o Archived feeds split them among multiple permanent documents, anda means of retrieving "missed"can be useful when entriesfrom a partial, or incremental, feed by linking archives of the feed together. Althoughare long-lived and itrefersis important for clients toAtom normatively, the mechanism described herein can be used with similar syndication formats, such assee every one. See thevarious flavoursfeed type definitions below for examples ofRSS.use cases for each. 2.Terminology InNotational Conventions The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in thisspecification, "feed document" refers to an Atom Feed Document, RSSdocumentor similar syndication format instance document. It may contain any number of entries (in RSS, items), and may or may notare to bea complete representation of the logical feed. "Subscription document" refersinterpreted as described in BCP 14 [RFC2119], as scoped toa feed document that always containsthose conformance targets. This specification uses XML Namespaces [W3C.REC-xml-names-19990114] to uniquely identify XML element names. It uses themost recent entries available infollowing namespace prefix for thefeed (often, the feed document that should be subscribed to). "Archive document" refers to a feed document that is archived; i.e., the set of entries inside it does not change over time. Entries within an archive MAY themselves change, however. Nottingham Expires August 30, 2006 [Page 3] Internet-Draft Feed History February 2006 "Incremental feed" refers to a set of associated feed documents (namely, one subscription document and any number of archive documents) that can be combined to form a single, logical feed. Finally, "head section" refers to the children of a feed document's document-wide metadata container; e.g., the child elements of the atom:feed element in an Atom Feed Document. 3. Notational Conventions The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14, [RFC2119], as scoped to those conformance targets. This specification uses XML Namespaces [W3C.REC-xml-names-19990114] to uniquely identify XML element names. It uses the following namespace prefix for the indicated namespace URI; "fh": "http://purl.org/syndication/history/1.0" This specification uses terms fromindicated namespace URI; "fh": "http://purl.org/syndication/history/1.0" This specification uses terms from the XML Infoset [W3C.REC-xml- infoset-20040204]. However, this specification uses a shorthand; the phrase "Information Item" is omitted when naming Element Information Items. Therefore, when this specification uses the term "element," it is referring to an Element Information Item in Infoset terms. This specification also uses Atom link relations to identify Nottingham Expires December 27, 2006 [Page 3] Internet-Draft Feed History June 2006 different types of links; see the Atom specification [RFC4287] for information about their syntax, and the IANA link relation registry[2]for more information about specific values.4. Publishing Incremental Feeds Publishers who wishAlthough they refer tomake a feed available incrementally should: 1. Periodically remove the least recent entries from the subscription document, moving them into archive documents. 2. InAtom normatively, thesubscription document's head section, add a "previous" link relation, containing a URI reference tomechanisms described herein can be used with similar syndication formats, such as themost recent archive documents.various flavours of RSS. 3. Terminology Inarchive documents' head sections, add a "previous" link relation, containing a URI referencethis specification, "feed document" refers tothe next most recent archive (if any). Nottingham Expires August 30, 2006 [Page 4] Internet-Draftan Atom FeedHistory February 2006 4. In archive documents' head sections, add a "current" link relation, containing the subscription document's URI reference. Publishers are not required to make all archive documents available; they may refuse to serve (e.g., with HTTP status code 403),Document, RSS document, orbe unable to serve (e.g., with HTTP status code 404) an archivesimilar syndication instance document.PublishersIt mayalso duplicatecontain any number of entriesbetween the subscription document(in RSS, items), andthe most current archive document; i.e., theymayarchive current entries. Note that because consumers are not required to re-fetch archived feeds that they've previously stored, changes to entries in those documentsor may not beapparenta complete representation of the logical feed. "Head section" refers toall users. Therefore, ifthe children of apublisher requiresfeed document's document- wide metadata container; e.g., the child elements of the atom:feed element in an Atom Feed Document. A "logical feed" is the set of entries associated with achange to be visible toparticular feed (as contrasted with a feed document, which may contain a subset of them). 4. Complete Feeds A complete feed is a feed document that contains allusers (e.g., correcting factual errors), they should consider publishingof therevised entryentries in thesubscription feed,logical feed; any entry not actually inaddition to (or instead of)theappropriate archive feed. Conversely, unimportant changes (e.g., spelling corrections) mightfeed document SHOULD NOT beonly effected in archive feeds. 5. Publishing Non-Incremental Feeds Some consumerspresented as part of that feed. It is sometimes important to distinguish a complete feed, because clients may attempt to keep a history of feedentries, even without explicit hints that enable it. Because thisentries seen over time, presenting the aggregate as the feed's contents. This isundesirable forundesireable in somefeeds, this section defines an explicit means of indicating that history should not be kept.situations. Forexample,example; a feed that represents a ranking that varies over time, such as "Top Twenty Records" or "Most Popular Items" should not have newer entries displayed alongside older ones.The fh:complete element, when presentBy marking them as complete feeds, old entries are discarded when the feed is refreshed. The fh:complete element, when present in a feed's head section, indicates that thesubscriptionfeed document it occurs in is a complete representation of the logical feed's entries. For example, <fh:complete/>6. ReconstructingNottingham Expires December 27, 2006 [Page 4] Internet-Draft FeedState When presented with a feed document, a consumer MAY reconstructHistory June 2006 4.1. Examples Atom-formatted Complete Feed <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:fh="http://purl.org/syndication/history/1.0"> <title>NetTunes Queue</title> <description>The CDs you'll receive next.</description> <link href="http://example.org/"/> <fh:complete/> <link rel="self" href="http://nettunes.example.org/queue/index.atom"/> <updated>2003-12-13T18:30:02Z</updated> <author> <name>John Doe</name> </author> <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id> <entry> <title>A Rush of Blood to thefeed's state in a local store S by following these steps:Head</title> <link href="http://nettunes.example.org/Coldplay/rush"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> <summary>More jangly guitars from Coldplay...</summary> </entry> </feed> Nottingham ExpiresAugust 30,December 27, 2006 [Page 5] Internet-Draft Feed HistoryFebruaryJune 20061. IfRSS 2.0-formatted Complete Feed <?xml version="1.0"?> <rss version="2.0" xmlns:fh="http://purl.org/syndication/history/1.0"> <channel> <title>NetTunes Queue</title> <link>http://nettunes.example.org/</link> <description>The CDs you'll receive next.</description> <language>en-us</language> <pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate> <lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate> <docs>http://blogs.law.harvard.edu/tech/rss</docs> <generator>Weblog Editor 2.0</generator> <managingEditor>editor@nettunes.example.org</managingEditor> <webMaster>webmaster@nettunes.example.org</webMaster> <fh:complete/> <item> <title>A Rush of Blood to the Head</title> <link>http://nettunes.example.org/Coldplay/rush</link> <description>More jangly guitars from Coldplay... </description> <pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate> <guid>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</guid> </item> </channel> </rss> 5. Paged Feeds A paged feeddocument's head section containsis a"current" link relation value C, dereference C and use the resultingset of linked feeddocument as D. 2. Ifdocuments that contain thefh:complete element is present in D's head section: 1. Remove allentriespresentinlocal store S. 2. Add all ofthedocument D's entries to local store S. 3. Stop processing. 3. Otherwise: 1. Create an empty list L. 2. Considerlogical feed, without any guarantees about theURIstability of thelast archive document successfully storeddocuments' contents. Paged feeds are lossy; that is, it is not possible tolocal store S as A. 3. Considerguarantee that theentries in document Dclient will be able to reconstruct the logical feed asE. 4. Ifthedocument Dserver hasa "previous" link relation value P in its head section, and P is not A, 1. Append Ppublished it. Some entries may be added toL. 2. Dereference P and usetheresultingfeeddocumentasD. 5. Repeattheprevious step until no new P is found. 6. Add allpages ofdocument D's entries to the local store S, replacing any entries with the same identity. 7. Popthelast "previous" link relation from L, dereference its value and use the resultingfeeddocument as D. 8. Repeatare acccessed, without theprevious two steps until L is empty. 9. Addclient becoming aware of them. Paged feeds can be useful when the number of entriesE tois very large, infinite, or indeterminate. Clients can "page" through thelocal store S, replacing anyfeed, only accessing a subset of the feed's entries as necessary. For example, a search engine might make query results available as a paged feed, so that queries with very large result sets do not overwhelm thesame identity. Inserver, theinstructions above,network, or theconceptclient. Nottingham Expires December 27, 2006 [Page 6] Internet-Draft Feed History June 2006 The feed documents in a paged feed are tied together with the following link relations: o "first" - A URI that refers to the furthest preceding document in a series ofan entry's identity is format-specific; e.g.,documents. o "last" - A URI that refers to the furthest following document inAtom, it is conveyed bya series of documents. o "previous" - A URI that refers to theatom:id element;immediately preceding document inRSS 2, it is indicated bya series of documents. o "next" - A URI that refers to theguid element. Consumersimmediately following document in a series of documents. Paged feed documents MUST have at least one of these link relations present, and SHOULDwarn userscontain as many as practical and applicable. Note that URI references in link relation values may be relative, and when they are used they must be absolutised, as described in Section 5.1 of [RFC3986]. 5.1. Examples Atom-formatted Paged Feed <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>Example Feed</title> <link href="http://example.org/"/> <link rel="self" href="http://example.org/index.atom"/> <link rel="next" href="http://example.org/index.atom?page=2"/> <updated>2003-12-13T18:30:02Z</updated> <author> <name>John Doe</name> </author> <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id> <entry> <title>Atom-Powered Robots Run Amok</title> <link href="http://example.org/2003/12/13/atom03"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> <summary>Some text.</summary> </entry> </feed> Nottingham Expires December 27, 2006 [Page 7] Internet-Draft Feed History June 2006 RSS 2.0-formatted Paged Feed <?xml version="1.0"?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <title>Liftoff News</title> <link>http://liftoff.nasa.gov/</link> <description>Liftoff to Space Exploration.</description> <language>en-us</language> <pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate> <lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate> <docs>http://blogs.law.harvard.edu/tech/rss</docs> <generator>Weblog Editor 2.0</generator> <managingEditor>editor@example.com</managingEditor> <webMaster>webmaster@example.com</webMaster> <atom:link rel="next" href="http://liftof.nasa.gov/index.rss?page=2"/> <item> <title>Star City</title> <link>http://liftoff.nasa.gov/2003/06/news-starcity</link> <description>How donot haveAmericans get ready to work with Russians aboard thecomplete feed, or an errorInternational Space Station? They take a crash course in culture, language and protocol at Russia's <a href="http://howe.iki.rssi.ru/GCTC/gctc_e.htm">Star City</a>.</description> <pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate> <guid>http://liftoff.nasa.gov/2003/06/03.html#item573</guid> </item> </channel> </rss> 6. Archived Feeds An archived feed is a set of feed documents that can be combined to accurately reconstruct a logical feed. Unlike paged feeds, archived feeds enable clients to do this without losing any entries. This is achieved by publishing a single subscription document and (potentially) many archive documents. A subscription document isencountereda feed document that always contains the most recently added or changed entries available in thereconstruction process (e.g., by alertinglogical feed (often, theuserfeed document that should be subscribed to). Archive documents are feed documents that contain less recent entries in the feed. The set of entries contained in an archive documentis unavailable, or displaying pseudo-entries that informNottingham Expires December 27, 2006 [Page 8] Internet-Draft Feed History June 2006 published at a particular URI MUST NOT change over time. Likewise, theuserURI for a particular archive document MUST NOT change over time, so thatsomeclients can recognise it and associate it with the entriesmay be missing). Consumers MAY cache archive documents and/or usecontained therein. Typically, adifferent methodlogical feed will make a subscription feed available, and link it to a set ofreconstructingarchive documents (also linked together) which contain progressively less recent entries. Clients can then "subscribe" to the feed,as long aspolling theresult issubscription document for recent changes. If a client has missed some entries, thesame as that achievedarchives can be used to synchronise its state byfollowing these steps. In particular, consumers MAY usefetching the"first" and "next" link relations, if available,archive documents it has not yet seen. Note that because archive documents are considered stable, changes totraverse the feedentries ina different manner. However, such consumers MUST NOT require their presensethem may not be apparent toreconstructall users. Therefore, if afeed's state. When comparing URIspublisher requires a change todetermine if an archive has been successfully stored,be visible to all users (e.g., correcting factual errors), they should consider publishing thevalue ofrevised entry in the"self" link relation, if present, SHOULDsubscription feed, in addition to (or instead of) the appropriate archive feed. Conversely, unimportant changes (e.g., spelling corrections) might be only effected in archive feeds. The following link relations are usedasto tie archived feeds together: o "prev-archive" - A URI that refers to the immediately preceding archive document. o "next-archive" - A URIofthat refers to the immediately following archive document. o "current" - A URI that, when dereferenced, returns a feed documentit occurs in. Nottingham Expires August 30, 2006 [Page 6] Internet-Draft Feed History February 2006containing the most recent entries in the feed. Subscription documents and archive documents MUST have a "prev- archive" link relation, unless there are no archives available. Archive documents SHOULD have "next-archive" and "current" link relations. Note that URI references in link relation values may be relative, and when they are used they must be absolutised, as described in Section 5.1 of [RFC3986].This specification does not bestow any semantics on the ordering of entriesArchive document SHOULD also contain an fh:archive element ina feed; the only purpose of introducing ordering betweentheir head sections, to indicate that they themselves are archives. For example, <fh:archive/> Nottingham Expires December 27, 2006 [Page 9] Internet-Draft Feed History June 2006 Publishers are not required to make all archive documentsisavailable; they may refuse toallowserve (e.g., with HTTP status code 403 or 410), or be unable to serve (e.g., with HTTP status code 404) an archive document. Clients SHOULD warn users when they are not able to reconstruct the complete, logical feedto(e.g., by alerting the user that an archive document is unavailable, or displaying pseudo-entries that inform the user that some entries may bereconstructed. 7.missing). 6.1. ExamplesNon-Incremental Atom FeedAtom-formatted Subscription Document <?xml version="1.0" encoding="utf-8"?> <feedxmlns="http://www.w3.org/2005/Atom" xmlns:fh="http://purl.org/syndication/history/1.0">xmlns="http://www.w3.org/2005/Atom"> <title>Example Feed</title> <link href="http://example.org/"/><fh:complete/><link rel="self" href="http://example.org/index.atom"/> <link rel="prev-archive" href="http://example.org/2003/11/index.atom"/> <updated>2003-12-13T18:30:02Z</updated> <author> <name>John Doe</name> </author> <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id> <entry> <title>Atom-Powered Robots Run Amok</title> <link href="http://example.org/2003/12/13/atom03"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> <summary>Some text.</summary> </entry> </feed> Nottingham ExpiresAugust 30,December 27, 2006 [Page7]10] Internet-Draft Feed HistoryFebruaryJune 2006Incremental Atom Feed: Subscription Document <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>Example Feed</title> <link href="http://example.org/"/> <link rel="self" href="http://example.org/index.atom"/> <link rel="previous" href="http://example.org/2003/11/index.atom"/> <updated>2003-12-13T18:30:02Z</updated> <author> <name>John Doe</name> </author> <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id> <entry> <title>Atom-Powered Robots Run Amok</title> <link href="http://example.org/2003/12/13/atom03"/> <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id> <updated>2003-12-13T18:30:02Z</updated> <summary>Some text.</summary> </entry> </feed> Incremental Atom Feed:Atom-formatted Archive Document <?xml version="1.0" encoding="utf-8"?> <feed xmlns="http://www.w3.org/2005/Atom"> <title>Example Feed</title> <link rel="current" href="http://example.org/index.atom"/> <link rel="self" href="http://example.org/2003/11/index.atom"/> <linkrel="previous"rel="prev-archive" href="http://example.org/2003/10/index.atom"/> <updated>2003-11-24T12:00:00Z</updated> <author> <name>John Doe</name> </author> <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id> <entry> <title>Atom-Powered Robots Scheduled To Run Amok</title> <link href="http://example.org/2003/11/24/robots_coming"/> <id>urn:uuid:cdef5c6d5-gff8-4ebb-assa-80dwe44efkjo</id> <updated>2003-11-24T12:00:00Z</updated> <summary>Some text from an old, different entry.</summary> </entry> </feed> Nottingham ExpiresAugust 30,December 27, 2006 [Page8]11] Internet-Draft Feed HistoryFebruaryJune 2006IncrementalRSS2.0 Feed:2.0-formatted Subscription Document <?xml version="1.0"?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <title>Liftoff News</title> <link>http://liftoff.nasa.gov/</link> <description>Liftoff to Space Exploration.</description> <language>en-us</language> <pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate> <lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate> <docs>http://blogs.law.harvard.edu/tech/rss</docs> <generator>Weblog Editor 2.0</generator> <managingEditor>editor@example.com</managingEditor> <webMaster>webmaster@example.com</webMaster> <atom:linkrel="previous"rel="prev-archive" href="http://liftoff.nasa.gov/2003/05/index.rss"/> <item> <title>Star City</title> <link>http://liftoff.nasa.gov/2003/06/news-starcity</link> <description>How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's <a href="http://howe.iki.rssi.ru/GCTC/gctc_e.htm">Star City</a>.</description> <pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate> <guid>http://liftoff.nasa.gov/2003/06/03.html#item573</guid> </item> </channel> </rss> Nottingham ExpiresAugust 30,December 27, 2006 [Page9]12] Internet-Draft Feed HistoryFebruaryJune 2006IncrementalRSS2.0 Feed:2.0-formatted Archive Document <?xml version="1.0"?> <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <title>Liftoff News</title> <link>http://liftoff.nasa.gov/</link> <description>Liftoff to Space Exploration.</description> <language>en-us</language> <pubDate>Tue, 30 May 2003 08:00:00 GMT</pubDate> <lastBuildDate>Tue, 30 May 2003 10:31:52 GMT</lastBuildDate> <docs>http://blogs.law.harvard.edu/tech/rss</docs> <generator>Weblog Editor 2.0</generator> <managingEditor>editor@example.com</managingEditor> <webMaster>webmaster@example.com</webMaster> <atom:link rel="current" href="http://liftoff.nasa.gov/index.rss"/> <atom:linkrel="previous"rel="prev-archive" href="http://liftoff.nasa.gov/2003/04/index.rss"/> <item> <description>Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a partial eclipse of the Sun on Saturday, May 31st.</description> <pubDate>Fri, 30 May 2003 11:06:42 GMT</pubDate> <guid>http://liftoff.nasa.gov/2003/05/30.html#item572</guid> </item> <item> <title>The Engine That Does More</title> <link>http://liftoff.nasa.gov/2003/05/news-VASIMR.asp</link> <description>Before man travels to Mars, NASA hopes to design new engines thatwill let us fly throughwill let us fly through the Solar System more quickly. The proposed VASIMR engine would do that.</description> <pubDate>Tue, 27 May 2003 08:37:32 GMT</pubDate> <guid>http://liftoff.nasa.gov/2003/05/27.html#item571</guid> </item> </channel> </rss> 7. IANA Considerations The "previous", "next" and "current" link relations have been previously registered, and no IANA action regarding them is required. This specification defines the following link relations: Nottingham Expires December 27, 2006 [Page 13] Internet-Draft Feed History June 2006 o Attribute Value: prev-archive o Description: A URI that refers to the immediately preceding archive document. o Expected display characteristics: none o Security considerations: See [ this document ] o Attribute Value: next-archive o Description: A URI that refers to theSolar System more quickly. The proposed VASIMR engine would do that.</description> <pubDate>Tue, 27 May 2003 08:37:32 GMT</pubDate> <guid>http://liftoff.nasa.gov/2003/05/27.html#item571</guid> </item> </channel> </rss>immediately following archive document. o Expected display characteristics: none o Security considerations: See [ this document ] 8. Security Considerations Feeds using the mechanisms described here could be crafted in such a way as to cause aconsumerclient to initiate excessive (or even an unending sequence of) network requests, causing denial of service (either to theconsumer,client, the target server, and/or intervening networks).ConsumersClients can mitigate this risk by requiring user intervention after a certain number of requests, or by limiting requests eitherNottingham Expires August 30, 2006 [Page 10] Internet-Draft Feed History February 2006according to a hard limit, or with heuristics.ConsumersClients should be mindful of resource limits when storing feeddocuments; todocuments. To reiterate, they are not required to always store or reconstruct the feed when conforming to this specification; they only need inform the user when the reconstructed feed is not complete. 9. Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, January 2005. [RFC4287] Nottingham, M. and R. Sayre, "The Atom Syndication Format", RFC 4287, December 2005. [W3C.REC-xml-infoset-20040204] Cowan, J. and R. Tobin, "XML Information Set (Second Edition)", W3C REC REC-xml-infoset-20040204, February 2004. [W3C.REC-xml-names-19990114] Bray, T., Hollander, D., and A. Layman, "Namespaces in XML", W3C REC REC-xml-names-19990114, January 1999.[1] <http://blogs.law.harvard.edu/tech/rss> [2] <http://www.iana.org/assignments/link-relations>Nottingham Expires December 27, 2006 [Page 14] Internet-Draft Feed History June 2006 Appendix A. Acknowledgements The author would like to thank the following people for their contributions, comments and help: Danny Ayers, Thomas Broyer, Stefan Eissing, David Hall, Bill de Hora, Aristotle Pagaltzis, John Panzer, Dave Pawson, Garrett Rooney, Robert Sayre, James Snell, Henry Story. Any errors herein remain the author's, not theirs. Appendix B. Reconstructing Archived Feeds One algorithm for reconstructing an archived feed into a complete, logical feed (S), give the subscription document (D) follows. 1. Create an empty list L. 2. Consider the URI of the last archive document successfully stored to local store S as A. 3. Consider the set of entries in document D as E. 4. If the document D has a "prev-archive" link relation value P in its head section, and P is not A, 1. Append P to L. 2. Dereference P and use the resulting feed document as D. 5. Repeat the previous step until no new P is found. 6. Add all of document D's entries to the local store S, replacing any entries with the same identity. 7. Pop the last "prev-archive" link relation from L, dereference its value and use the resulting feed document as D. 8. Repeat the previous two steps until L is empty. 9. Add the entries E to the local store S, replacing any entries with the same identity. In these instructions, the concept of an entry's identity is format- specific; e.g., in Atom, it is conveyed by the atom:id element; in RSS 2, it is indicated by the guid element. Nottingham ExpiresAugust 30,December 27, 2006 [Page11]15] Internet-Draft Feed HistoryFebruaryJune 2006 Author's Address Mark Nottingham Email: mnot@pobox.com URI: http://www.mnot.net/ Nottingham ExpiresAugust 30,December 27, 2006 [Page12]16] Internet-Draft Feed HistoryFebruaryJune 2006 Intellectual Property Statement The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79. Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr. The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org. Disclaimer of Validity This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Copyright Statement Copyright (C) The Internet Society (2006). This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights. Acknowledgment Funding for the RFC Editor function is currently provided by the Internet Society. Nottingham ExpiresAugust 30,December 27, 2006 [Page13]17] ----