This summer I joined other federated social Web implementors at the Federated Social Web Summit, it was a great, collaborative atmosphere where everyone was given space to share their implementation details and ideas for the future.

As an early implementor of StatusNet’s original Open Microblogging federation protocol, I was really interested to catch up on OStatus and find out about Diaspora and how it would work. The event did not disappoint, I sat next to Raffi from Diaspora and had a chance to talk protocols with Rob Dolin, Joseph Smarr, Tantek Çelik, Brett Slatkin, Evan Prodromou, Zach Copley, David Recordon and many more.

When the summit wrapped up, Evan, Dave and Tantek introduced an “acid test” for social network interoperability, the acid test was dubbed “SWAT0” (Social Web Acid Test Zero). To pass the test, two or more codebases would allow a user to tag another user in a photo, comment on the photo, and notify users of activity, all of this between two or more social networks using open standards.

Last summer I was briefly in the geek news when tr.im announced that they were closing their doors and FriendFeed was snapped up, I called in to the Bad Hair Day podcast and explained rp.ly, my open source tr.im replacement. Before the rssCloud meetup, Michael Sullivan (@sull) wrote a post “Conversations in the Cloud” and came up with the idea to use my rp.ly domain (sounds like “reply”) to create an RSS namespace: in.rp.ly/to.

As I thought about simple ways to achieve the acid test, I remembered Michael’s post. By late August I had a working version of the SWAT0 flow (before StatusNet’s Sept. 10 SWAT0 release) using StatusNet and OpenMicroBlogger. I’ve contributed to StatusNet before — I created the “Templonica” plugin. So I already had a place to publish my StatusNet/inReplyTo commits: Gitorious.

Joe Gregorio’s Comment API is closely related to TrackBack and PingBack, I combined that with the <channel> element’s <textInput> tag for the first version, then I talked to Michael and started working on a namespace (see below). The purpose of the inReplyTo namespace is to allow aggregators and readers to notify the feed origin about comments that are “in Reply To” the original.

Here’s an example: Bob wants to reply to Alice (she’s using a different blogging service than he is). When he publishes a reply to his own feed, his application reads her feed’s inReplyTo elements and uses the information to ping her channel-level form handler. The details of this interaction are described in a new namespace — inReplyTo (1).

Bob’s reply will have a <comments> item-level element in his feed, a link to Alice’s post that he replied to. When Alice’s application uses WebFinger to discover and read Bob’s feed, it can use the <comments> element to associate Bob’s reply with the appropriate thread, or her application could show all replies in a tab, even from people she’s not subscribed to.

If you are interested in participating in defining or implementing the inReplyTo protocol, contact @sull or @brianjesse.

############################
####### inReplyTo #########
############################

Extension: inReplyTo

Extension Name: inReplyTo

Purpose: Applications can automatically send comment notifications by pinging the channel’s inReplyTo form handler url.

Declaration: The name space for inReplyTo is defined at http://in.rp.ly/to

<rss version=”2.0″ xmlns:inReplyTo=”http://in.rp.ly/to”>

Elements: All elements are sub-elements of the <channel> tag.

<inReplyTo:url> The url of the form handler

<inReplyTo:user> An identifier of the user being replied to

Applications append the inReplyTo url with the guid and other attributes to identify the item being commented on. It can then ping the combined url when a new comment is created.

Example:

<inReplyTo:user>Alice@aliceweb.org</inReplyTo:user>
<inReplyTo:url>http://aliceweb.org/.well-known/inReplyTo/</inReplyTo:url>

When a comment is created, the application combines the channel’s inReplyTo url (http://aliceweb.org/.well-known/inReplyTo/) with the item guid and other inReplyTo elements, and POSTs a request to the combined url: (http://aliceweb.org/.well-known/inReplyTo/?item=http://aliceweb.org/posts/12&user=Alice@aliceweb.org)

############################
############################

Social Web Acid Test Zero from Brian Hendrickson on Vimeo.

Categories: Feeds

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts

Feeds

we need to create the data web

Later today i’ll share my ideas about 2-way feeds, OpenMicroBlogger and StatusNet. In 2008 I implemented the Open Microblogging 0.1 specification, in 2009 I migrated the OpenMicroBlogger federation feature to rssCloud because there was good Read more…

Feeds

a #wp plug-in for mashing up Buzz, Facebook, Twitter and RSS

(this is a post I wrote about a tool called rssLike – it was published on the Structal blog: http://blog.structal.org/2010/06/activitystrea-ms-po-co-in-real-time-rsslike-is-a-wp-plug-in-for-mashing-up-buzz-facebook-twitter-and-rss/) Hi, thanks for stopping by to learn more about @rssLike. rssLike is a standards-based Like Read more…