RssCloud Atom Extension

Status of this Document

Version: 0.92 DRAFT
Editor: Mason Lee <http://masonlee.org&gt;
Updated: 2009-09-23

Change log:

0.92 – 2009-09-23. Updated link to RSS spec.
0.91 – 2009-09-16. Changed namespace proposal to rssboard.org and updated editor’s notes.
0.9 – 2009-09-11. Original proposal and request for comments.

Abstract

This document defines the XML schema for an rssCloud declaration usable in XML formats other than RSS, with specific attention to Atom.

1. Overview

RSS 2.0 specifies an optional <cloud> element that can be used to indicate the rssCloud ping hub for a channel. Because RSS 2.0 has no XML namespace, however, direct reuse of its elements can often be difficult and sometimes impossible. To allow alternative XML publishing formats such as Atom to more easily make use of RssCloud’s ping hub architecture, this document declares an equivalent <rss:cloud> element definition rooted in a URI namespace.

The specification here adopts without modification the original RSS 2.0 <cloud> element base name, attribute names, element structure, and semantics. The rssCloud protocol is not modified here except perhaps indirectly by the implication that rssCloud hubs may forward update pings for resources other than RSS.

1.1. References

“RSS 2.0” is defined at http://cyber.law.harvard.edu/rss/rss.html.

The “rssCloud” protocol is described at http://rsscloud.org/walkthrough.html. EDITOR’S NOTE: What’s the best link for this?

“Atom” is defined at http://atompub.org/rfc4287.html.

2. Technical Specification

2.1. Namespace

The XML namespace URI for the XML data described in this specification is:

http://rssboard.org/2009/xsd/rss2.0

EDITOR’S NOTE: **This is not an approved URL- do not use.**. Rssboard.org has been discussing the creation of a namespace for RSS. Above is my suggestion. Waiting on feedback from them as to what and when an official namespace might be.

2.2. Namespaced rssCloud XML Publisher’s Schema


<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
 targetNamespace="http://rssboard.org/2009/xsd/rss2.0"
 elementFormDefault="qualified"
 attributeFormDefault="unqualified"
 version="0.9">

 <xs:element name="cloud">
  <xs:complexType>

   <xs:annotation>
    <xs:documentation>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 XML resources.</xs:documentation>
   </xs:annotation>
   <xs:attribute name="domain" type="xs:string" use="required"/>
   <xs:attribute name="port" type="xs:positiveInteger" use="required"/>
   <xs:attribute name="path" type="xs:string" use="required"/>
   <xs:attribute name="registerProcedure" type="xs:string"
use="required"/>

   <xs:attribute name="protocol" use="required"/>

    <xs:simpleType>
     <xs:restriction base="xs:string">
      <xs:enumeration value="xml-rpc"/>
      <xs:enumeration value="http-post"/>
      <xs:enumeration value="soap"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:attribute>
  </xs:complexType>
 </xs:element>
</xs:schema>

2.3. Use in Atom

Implementer MAY use one or more of the above namespaced <cloud> elements directly inside the <atom:feed> element.

2.4. Use in RSS

Implementer SHOULD use the existing non-namespaced RSS <cloud> element in RSS rather than this extension.

3. Examples

3.1. Atom Example

<feed xmlns="http://www.w3.org/2005/Atom"
 xmlns:rss="http://rssboard.org/2009/xsd/rss2.0">
  <rss:cloud domain="example.com" port="80"
   path="/?rsscloud=notify" registerProcedure=""
   protocol="http-post"/>

  <title>Example Feed</title>
  <link href="http://example.org/feed/" rel="self" />
  <link href="http://example.org/" />
  <id>urn:uuid:8f8f8f8f-adad-face-090909090909</id>
  <updated>2003-12-13T18:30:02Z</updated>
  <author>
    <name>John Doe</name>
    <email>johndoe@example.com</email>
  </author>
  <entry>
    <title>Atom-Powered Robots Run Amok</title>
    <link href="http://example.org/2003/12/13/atom03" />
    <id>urn:uuid:1225c695-cfb8-4ebb-80da344efa6a</id>
    <updated>2003-12-13T18:30:02Z</updated>
    <summary>Some text.</summary>
  </entry>

</feed>

EDITOR’S NOTE: Comments most welcome! –Mason

3 Responses to “RssCloud Atom Extension”

  1. Joseph Scott Says:

    I think this looks like a reasonable approach to adding rssCloud support to Atom. Might be worth waiting to move forward on this until any tweaks/adjustments to the original rssCloud details are made. Once folks are confident that the issues have been addressed your proposed extension could be updated and reviewed in more detail.

  2. Mason Lee Says:

    Hi, Joseph. Thanks for looking it over. (And thanks for RssCloudifying my wordpress blog!)

    I haven’t yet heard anyone suggest improvements to rssCloud that would affect this part of the spec, but actually I can think of two:

    1. The “registerProcedure” attribute should be optional.
    2. If multiple cloud elements are allowed for a single feed, each could have an optional “priority” int attribute to say, “This one is primary, this one is backup.” 10, 20, 30, etc.

    Neither seem strictly necessary though. Not as important as fixing the “same-IP” issue, which I was happy to hear on the BadHair.us podcast Dave agrees is worth consideration.

  3. Matt Terenzio Says:

    Hmm, didn’t see this until Dave just linked to it.

    Seems IP issue fix underway with the advent of the domain parameter.

    I guess you mean registerprocedure should be optional since it is empty on HTTP Post. Makes sense. No big deal.

    lastly, I believe there has been talk on PSHB list about the order of the hub elements in the document actually implicitly stating their priority.

    What do you think of that?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


%d bloggers like this: