RSS2
From The Socknet
This page describes a specification for discovery of RSS 2.0 feeds via the services function and defines a new RSS extention.
Contents |
Example 1
Bob wants to stay as up to date as possible with his brother Andrew. Bob wants to see if Andrew has any RSS newsfeeds, so he instructs his RSS newsfeed reader to see what newsfeeds Andrew makes.
The newsfeed reader (which has been specially programmed to be able to access the Socknet) asks Andrew's provider for any services that support the http://blogs.law.harvard.edu/tech/rss protocol. It responds with the list. The newsfeed reader shows them to Bob. Bob discovers that Andrew has a newsfeed which is about Andrew's favorite Sci-Fi books.
(1)
GET http://andrewsopenid.com/
...
<link rel="socknet.provider"
href="http://andrews-provider.com/users/http%3A%2F%2Fandrewsopenid.com%2F/" />
...
Note: In this example, the program is not a service or provider, so it cannot include a from field in the call.
(2)
POST services
{ protocol: "http://blogs.law.harvard.edu/tech/rss"
}
->
{ protocols: { "http://blogs.law.harvard.edu/tech/rss":
{ public_data: { urls: [ "http://andrewsblog.com/index.rss",
"http://fsu.edu/students/andrew/bookreviews.xml"
]
}
}
}
}
Example 2
Andrew joins the group The Smiths on xfamily.com. xfamily.com accesses Andrew's provider and asks for a list of all the services which support http://blogs.law.harvard.edu/tech/rss. xfamily.com remembers the results and, from now on, will republish all of Andrew's RSS items in the RSS feed for The Smiths group.
In this example, the requestor is a service that the user uses, so it may get more information if it uses a POST.
The Specification
The protocol's name is http://blogs.law.harvard.edu/tech/rss .
The protocol's public_data should be in the format:
{ urls: ["URL to the feed"]
}
This protocol may or may not be related to a service. See Service Discovery for an explanation of the format when a protocol is not related to a service.
That's all there is to this specification. RSS clients already know the rules for the RSS 2.0 newsfeed format.
Importing Newsfeeds
Providers should consider offering a feature to "import" newsfeeds that are posted elsewhere on blogs and photosites, etc. They should also include a choice to determine if the data should be made public or private. Public ones should be accessible through Service Discovery. Private ones should only be shown to the user himself.
If a user imports a newsfeed, there is a potential for introducing duplicate messages. The following RSS extension has been created so that this duplication can be detected.
RSS Extension
This section officially introduces a new RSS extension in the namespace http://socknet.net/data. The guid node is found in an RSS item node (/rss/channel/item).
It contains a structure mirroring the JSON structures used for GUID's in the Socknet.
Example:
<rss>
<channel>
...
<item>
...
<socknet:guid xmlns:socknet="http://socknet.net/data">
<socknet:openid>http://exampleuser.com/</socknet:openid>
<socknet:id>34</socknet:id>
</socknet:guid>
</item>
</channel>
</rss>
Considerations
- If no guid field is provided in an RSS feed, then the GUID is the RSS link URL. Providers may check the page indicated by the link tag to determine if it includes a Socknet GUID as described in the Sharing docs.
- An imported newsfeed that the user considers "public" will generally be one that he produces. One that he considers "private" will generally be one that someone else produces. It's a smart idea to use the "I produce this"/"I read this" terminology instead of the public/private which is more obtuse.
- A similar (or even the same) set of rules could be applied to Atom newsfeeds. TODO: Someone should look into this.

