


Network Working Group                                           D. Winer
Internet-Draft
Expires: November 10, 2006                                    J. Palfrey
                                                                 Berkman
                                                      M. Nottingham, Ed.
                                                             May 9, 2006


                  The "application/rss+xml" media type
                   draft-nottingham-rss-media-type-01

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 on November 10, 2006.

Copyright Notice

   Copyright (C) The Internet Society (2006).

Abstract

   This document defines the "application/rss+xml" media type.


1.  Notational Conventions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",



Winer, et al.           Expires November 10, 2006               [Page 1]

Internet-Draft    The "application/rss+xml" media type          May 2006


   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].


2.  Introduction

   RSS is a lightweight, multipurpose, extensible metadata description
   and syndication format.  It is currently used for a number of
   applications, including news and other headline syndication, weblog
   syndication, and the propogation of software update lists.

   There are a number of revisions of the RSS format in use.  This memo
   defines a media type, application/rss+xml, that is intended for use
   with RSS 2.0, but may be used with other versions of RSS.


3.  Registration

   MIME media type name: application
   MIME subtype name: rss+xml
   Required parameters: none
   Optional parameters:
      "charset": This parameter has identical semantics to the charset
         parameter of the "application/xml" media type as specified in
         RFC 3023 [RFC3023].
      "revision": This optional parameter indicates the version of RSS
         used; the value is specified by the target RSS version.  It MAY
         be an XML namespace (e.g., "http://purl.org/rss/1.0/" for RSS
         1.0), or a revision number (e.g., "2.0").
         Note that it is a hint only.
   Encoding considerations: Identical to those of "application/xml" as
      described in RFC 3023 [RFC3023], section 3.2.
   Security considerations: Shares the security considerations as
      described in RFC 3023 [RFC3023], section 10.
   Interoperability considerations: There are no known interoperability
      issues.
   Published specification: See Appendix A.
   Applications that use this media type: Some RSS applications (e.g.,
      aggregators and content producers) use this media type.

   Additional information:
   Magic number: There is no one series of bytes that can be used to
      identify the beginning of an RSS file.
   File extension: .rss







Winer, et al.           Expires November 10, 2006               [Page 2]

Internet-Draft    The "application/rss+xml" media type          May 2006


   Macintosh File Type code: TEXT
   Fragment identifiers: Identical to that of "application/xml" as
      described in RFC 3023 [RFC3023], section 5.
   Base URI: As specified in RFC 3023 [RFC3023], section 6.
   Person and email address to contact for further information: The
      author of this memo.
   Intended usage: COMMON
   Author/Change controller: The author of this memo.

4.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC3023]  Murata, M., St. Laurent, S., and D. Kohn, "XML Media
              Types", RFC 3023, January 2001.


Appendix A.  RSS Specification (non-normative)

   This appendix incorporates a copy of the RSS 2.0 specification for
   reference only; it does not supercede it.

   RSS 2.0 Specification

       Contents

     * What is RSS?
     * Sample files
     * About this document
     * Required channel elements
     * Optional channel elements
     * Elements of <item>
     * Comments
     * Extending RSS
     * Roadmap
     * License and authorship

   What is RSS?

   RSS is a Web content syndication format.

   Its name is an acronym for Really Simple Syndication.

   RSS is a dialect of XML. All RSS files must conform to the XML
   1.0 specification, as published on the World Wide Web Consortium
   (W3C) website.




Winer, et al.           Expires November 10, 2006               [Page 3]

Internet-Draft    The "application/rss+xml" media type          May 2006


   A summary of RSS version history.

   At the top level, a RSS document is a <rss> element, with a
   mandatory attribute called version, that specifies the version of
   RSS that the document conforms to. If it conforms to this
   specification, the version attribute must be 2.0.

   Subordinate to the <rss> element is a single <channel> element,
   which contains information about the channel (metadata) and its
   contents.

   Sample files

   Here are sample files for: RSS 0.91, 0.92 and 2.0.

   Note that the sample files may point to documents and services
   that no longer exist. The 0.91 sample was created when the 0.91
   docs were written. Maintaining a trail of samples seems like a
   good idea.

   About this document

   This document represents the status of RSS as of the Fall of
   2002, version 2.0.1.

   It incorporates all changes and additions, starting with the
   basic spec for RSS 0.91 (June 2000) and includes new features
   introduced in RSS 0.92 (December 2000) and RSS 0.94 (August
   2002).

   Change notes are here.

   First we document the required and optional sub-elements of
   <channel>; and then document the sub-elements of <item>. The
   final sections answer frequently asked questions, and provide a
   roadmap for future evolution, and guidelines for extending RSS.

   Required channel elements

   Here's a list of the required channel elements, each with a brief
   description, an example, and where available, a pointer to a more
   complete description.

   Element    Description                              Example

   title      The name of the channel. It's how   GoUpstate.com
              people refer to your service. If    News Headlines
              you have an HTML website that



Winer, et al.           Expires November 10, 2006               [Page 4]

Internet-Draft    The "application/rss+xml" media type          May 2006


              contains the same information as
              your RSS file, the title of your
              channel should be the same as
              the title of your website.

   link       The URL to the HTML website         http://www.
              corresponding to the channel.       goupstate.com/

   description  Phrase or sentence describing     The latest news from
                the channel.                      from GoUpstate.com, a
                                                  Spartanburg Herald-
                                                  Journal Web site.

   Optional channel elements

   Here's a list of optional channel elements.

   Element        Description                         Example
   language       The language the channel is written en-us
                  in. This allows aggregators to
                  group all Italian language sites,
                  for example, on a single page. A
                  list of allowable values for this
                  element, as provided by Netscape,
                  is here. You may also use values
                  defined by the W3C.

   copyright      Copyright notice for content in the Copyright 2002,
                  channel.                            Spartanburg
                                                      Herald-Journal

   managingEditor Email address for person            geo@herald.com
                  responsible for editorial content.  (George Matesky)

   webMaster      Email address for person            betty@herald.com
                  responsible for technical issues    (Betty Guernsey)
                  relating to channel.

   pubDate        The publication date for the        Sat, 07 Sep 2002
                  content in the channel. For         00:00:01 GMT
                  example, the New York Times
                  publishes on a daily basis, the
                  publication date flips once every
                  24 hours. That's when the pubDate
                  of the channel changes. All
                  date-times in RSS conform to the
                  Date and Time Specification of RFC
                  822, with the exception that the



Winer, et al.           Expires November 10, 2006               [Page 5]

Internet-Draft    The "application/rss+xml" media type          May 2006


                  year may be expressed with two
                  characters or four characters (four
                  preferred).

   lastBuildDate  The last time the content of the    Sat, 07 Sep 2002
                  channel changed.                    09:42:31 GMT

   category    Specify one or more categories that <category>
               the channel belongs to. Follows the Newspapers
               same rules as the <item>-level      </category>
               category element. More info.

   generator   A string indicating the program     MightyInHouse
               used to generate the channel.       Content System v2.3

   docs        A URL that points to the            http://
               documentation for the format used   blogs.law.harvard.edu
               in the RSS file. It's probably a    /tech/rss
               pointer to this page. It's for
               people who might stumble across an
               RSS file on a Web server 25 years
               from now and wonder what it is.

   cloud       Allows processes to register with a <cloud
               cloud to be notified of updates to  domain="rpc.sys.com"
               the channel, implementing a         port="80"
               lightweight publish-subscribe       path="/RPC2"
               protocol for RSS feeds. More info   registerProcedure=
               here.                               "pingMe"
                                                   protocol="soap"/>

   ttl         ttl stands for time to live. It's a <ttl>60</ttl>
               number of minutes that indicates
               how long a channel can be cached
               before refreshing from the source.
               More info here.

   image       Specifies a GIF, JPEG or PNG image
               that can be displayed with the
               channel. More info here.

   rating      The PICS rating for the channel.

   textInput   Specifies a text input box that can
               be displayed with the channel. More
               info here.

   skipHours   A hint for aggregators telling them



Winer, et al.           Expires November 10, 2006               [Page 6]

Internet-Draft    The "application/rss+xml" media type          May 2006


               which hours they can skip. More
               info here.

   skipDays    A hint for aggregators telling them
               which days they can skip. More info
               here.

   <image> sub-element of <channel>

   <image> is an optional sub-element of <channel>, which contains
   three required and three optional sub-elements.

   <url> is the URL of a GIF, JPEG or PNG image that represents the
   channel.

   <title> describes the image, it's used in the ALT attribute of
   the HTML <img> tag when the channel is rendered in HTML.

   <link> is the URL of the site, when the channel is rendered, the
   image is a link to the site. (Note, in practice the image <title>
   and <link> should have the same value as the channel's <title>
   and <link>.

   Optional elements include <width> and <height>, numbers,
   indicating the width and height of the image in pixels.
   <description> contains text that is included in the TITLE
   attribute of the link formed around the image in the HTML
   rendering.

   Maximum value for width is 144, default value is 88.

   Maximum value for height is 400, default value is 31.

   <cloud> sub-element of <channel>

   <cloud> is an optional sub-element of <channel>.

   It specifies a web service that supports the rssCloud interface
   which can be implemented in HTTP-POST, XML-RPC or SOAP 1.1.

   Its purpose is to allow processes to register with a cloud to be
   notified of updates to the channel, implementing a lightweight
   publish-subscribe protocol for RSS feeds.

   <cloud domain="rpc.sys.com" port="80" path="/RPC2"
   registerProcedure="myCloud.rssPleaseNotify" protocol="xml-rpc" />

   In this example, to request notification on the channel it



Winer, et al.           Expires November 10, 2006               [Page 7]

Internet-Draft    The "application/rss+xml" media type          May 2006


   appears in, you would send an XML-RPC message to rpc.sys.com on
   port 80, with a path of /RPC2. The procedure to call is
   myCloud.rssPleaseNotify.

   A full explanation of this element and the rssCloud interface is
   here.

   <ttl> sub-element of <channel>

   <ttl> is an optional sub-element of <channel>.

   ttl stands for time to live. It's a number of minutes that
   indicates how long a channel can be cached before refreshing from
   the source. This makes it possible for RSS sources to be managed
   by a file-sharing network such as Gnutella.

   Example: <ttl>60</ttl>

   <textInput> sub-element of <channel>

   A channel may optionally contain a <textInput> sub-element, which
   contains four required sub-elements.

   <title> -- The label of the Submit button in the text input area.

   <description> -- Explains the text input area.

   <name> -- The name of the text object in the text input area.

   <link> -- The URL of the CGI script that processes text input
   requests.

   The purpose of the <textInput> element is something of a mystery.
   You can use it to specify a search engine box. Or to allow a
   reader to provide feedback. Most aggregators ignore it.

     ----------------------------------------------------------------

   Elements of <item>

   A channel may contain any number of <item>s. An item may
   represent a "story" -- much like a story in a newspaper or
   magazine; if so its description is a synopsis of the story, and
   the link points to the full story. An item may also be complete
   in itself, if so, the description contains the text
   (entity-encoded HTML is allowed; see examples), and the link and
   title may be omitted. All elements of an item are optional,
   however at least one of title or description must be present.



Winer, et al.           Expires November 10, 2006               [Page 8]

Internet-Draft    The "application/rss+xml" media type          May 2006


   Element          Description              Example
   title            The title of the item.   Venice Film Festival
                                             Tries to Quit Sinking

   link             The URL of the item.     http://nytimes.com/2004/
                                             12/07FEST.html

   description      The item synopsis.       Some of the most heated
                                             chatter at the Venice
                                             Film Festival this week
                                             was about the way that
                                             the arrival of the stars
                                             at the Palazzo del Cinema
                                             was being staged.

   author           Email address of the author of
                    the item. More.

   category         Includes the item in one or more
                    categories. More.

   comments         URL of a page for comments
                    relating to the item. More.

   enclosure        Describes a media object that is
                    attached to the item. More.

   guid             A string that uniquely
                    identifies the item. More.

   pubDate          Indicates when the item was
                    published. More.

   source           The RSS channel that the item
                    came from. More.

   <source> sub-element of <item>

   <source> is an optional sub-element of <item>.

   Its value is the name of the RSS channel that the item came from,
   derived from its <title>. It has one required attribute, url,
   which links to the XMLization of the source.

   <source url="http://www.tomalak.org/links2.xml">Tomalak's
   Realm</source>

   The purpose of this element is to propagate credit for links, to



Winer, et al.           Expires November 10, 2006               [Page 9]

Internet-Draft    The "application/rss+xml" media type          May 2006


   publicize the sources of news items. It can be used in the Post
   command of an aggregator. It should be generated automatically
   when forwarding an item from an aggregator to a weblog authoring
   tool.

   <enclosure> sub-element of <item>

   <enclosure> is an optional sub-element of <item>.

   It has three required attributes. url says where the enclosure is
   located, length says how big it is in bytes, and type says what
   its type is, a standard MIME type.

   The url must be an http url.

   <enclosure
   url="http://www.scripting.com/mp3s/weatherReportSuite.mp3"
   length="12216320" type="audio/mpeg" />

   A use-case narrative for this element is here.

   <category> sub-element of <item>

   <category> is an optional sub-element of <item>.

   It has one optional attribute, domain, a string that identifies a
   categorization taxonomy.

   The value of the element is a forward-slash-separated string that
   identifies a hierarchic location in the indicated taxonomy.
   Processors may establish conventions for the interpretation of
   categories. Two examples are provided below:

   <category>Grateful Dead</category>

   <category domain="http://www.fool.com/cusips">MSFT</category>

   You may include as many category elements as you need to, for
   different domains, and to have an item cross-referenced in
   different parts of the same domain.

   <pubDate> sub-element of <item>

   <pubDate> is an optional sub-element of <item>.

   Its value is a date, indicating when the item was published. If
   it's a date in the future, aggregators may choose to not display
   the item until that date.



Winer, et al.           Expires November 10, 2006              [Page 10]

Internet-Draft    The "application/rss+xml" media type          May 2006


   <pubDate>Sun, 19 May 2002 15:21:36 GMT</pubDate>

   <guid> sub-element of <item>

   <guid> is an optional sub-element of <item>.

   guid stands for globally unique identifier. It's a string that
   uniquely identifies the item. When present, an aggregator may
   choose to use this string to determine if an item is new.

   <guid>http://some.server.com/weblogItem3207</guid>

   There are no rules for the syntax of a guid. Aggregators must
   view them as a string. It's up to the source of the feed to
   establish the uniqueness of the string.

   If the guid element has an attribute named "isPermaLink" with a
   value of true, the reader may assume that it is a permalink to
   the item, that is, a url that can be opened in a Web browser,
   that points to the full item described by the <item> element. An
   example:

   <guid
   isPermaLink="true">http://inessential.com/2002/09/01.php#a2
   </guid>

   isPermaLink is optional, its default value is true. If its value
   is false, the guid may not be assumed to be a url, or a url to
   anything in particular.

   <comments> sub-element of <item>

   <comments> is an optional sub-element of <item>.

   If present, it is the url of the comments page for the item.

   <comments>http://ekzemplo.com/entry/4403/comments</comments>

   More about comments here.

   <author> sub-element of <item>

   <author> is an optional sub-element of <item>.

   It's the email address of the author of the item. For newspapers
   and magazines syndicating via RSS, the author is the person who
   wrote the article that the <item> describes. For collaborative
   weblogs, the author of the item might be different from the



Winer, et al.           Expires November 10, 2006              [Page 11]

Internet-Draft    The "application/rss+xml" media type          May 2006


   managing editor or webmaster. For a weblog authored by a single
   individual it would make sense to omit the <author> element.

   <author>lawyer@boyer.net (Lawyer Boyer)</author>

   Comments

   RSS places restrictions on the first non-whitespace characters of
   the data in <link> and <url> elements. The data in these elements
   must begin with an IANA-registered URI scheme, such as http://,
   https://, news://, mailto: and ftp://. Prior to RSS 2.0, the
   specification only allowed http:// and ftp://, however, in
   practice other URI schemes were in use by content developers and
   supported by aggregators. Aggregators may have limits on the URI
   schemes they support. Content developers should not assume that
   all aggregators support all schemes.

   In RSS 0.91, various elements are restricted to 500 or 100
   characters. There can be no more than 15 <items> in a 0.91
   <channel>. There are no string-length or XML-level limits in RSS
   0.92 and greater. Processors may impose their own limits, and
   generators may have preferences that say no more than a certain
   number of <item>s can appear in a channel, or that strings are
   limited in length.

   In RSS 2.0, a provision is made for linking a channel to its
   identifier in a cataloging system, using the channel-level
   category feature, described above. For example, to link a channel
   to its Syndic8 identifier, include a category element as a
   sub-element of <channel>, with domain "Syndic8", and value the
   identifier for your channel in the Syndic8 database. The
   appropriate category element for Scripting News would be
   <category domain="Syndic8">1765</category>.

   A frequently asked question about <guid>s is how do they compare
   to <link>s. Aren't they the same thing? Yes, in some content
   systems, and no in others. In some systems, <link> is a permalink
   to a weblog item. However, in other systems, each <item> is a
   synopsis of a longer article, <link> points to the article, and
   <guid> is the permalink to the weblog entry. In all cases, it's
   recommended that you provide the guid, and if possible make it a
   permalink. This enables aggregators to not repeat items, even if
   there have been editing changes.

   If you have questions about the RSS 2.0 format, please post them
   on the RSS2-Support mail list, hosted by Sjoerd Visscher. This is
   not a debating list, but serves as a support resource for users,
   authors and developers who are creating and using content in RSS



Winer, et al.           Expires November 10, 2006              [Page 12]

Internet-Draft    The "application/rss+xml" media type          May 2006


   2.0 format.

   Extending RSS

   RSS originated in 1999, and has strived to be a simple, easy to
   understand format, with relatively modest goals. After it became
   a popular format, developers wanted to extend it using modules
   defined in namespaces, as specified by the W3C.

   RSS 2.0 adds that capability, following a simple rule. A RSS feed
   may contain elements not described on this page, only if those
   elements are defined in a namespace.

   The elements defined in this document are not themselves members
   of a namespace, so that RSS 2.0 can remain compatible with
   previous versions in the following sense -- a version 0.91 or
   0.92 file is also a valid 2.0 file. If the elements of RSS 2.0
   were in a namespace, this constraint would break, a version 0.9x
   file would not be a valid 2.0 file.

   Roadmap

   RSS is by no means a perfect format, but it is very popular and
   widely supported. Having a settled spec is something RSS has
   needed for a long time. The purpose of this work is to help it
   become a unchanging thing, to foster growth in the market that is
   developing around it, and to clear the path for innovation in new
   syndication formats. Therefore, the RSS spec is, for all
   practical purposes, frozen at version 2.0.1. We anticipate
   possible 2.0.2 or 2.0.3 versions, etc. only for the purpose of
   clarifying the specification, not for adding new features to the
   format. Subsequent work should happen in modules, using
   namespaces, and in completely new syndication formats, with new
   names.

   Last update: Sunday, January 30, 2005 at 6:14:58 PM.















Winer, et al.           Expires November 10, 2006              [Page 13]

Internet-Draft    The "application/rss+xml" media type          May 2006


Authors' Addresses

   Dave Winer

   Email: mailto:dwiner@cyber.law.harvard.edu


   John Palfrey
   The Berkman Center for Internet and Society at Harvard Law School

   Email: mailto:jpalfrey@law.harvard.edu


   Mark Nottingham (editor)

   Email: mailto:mnot@pobox.com



































Winer, et al.           Expires November 10, 2006              [Page 14]

Internet-Draft    The "application/rss+xml" media type          May 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.




Winer, et al.           Expires November 10, 2006              [Page 15]

