The Internet is a mess these days.
Conversations are distributed and fragmented; a blog post's comments will almost surely appear on a number of sites other than the author's blog. Considering factors from Facebook shares, likes, and posts to comments on Google Reader or even content curators such as Hacker News, site owners have found it increasingly difficult over the past year or so to efficiently and effectively collect all the sentiments, media, entities, and data associated with any given piece of content. Salmon is a protocol that addresses this specific issue, and engineer John Panzer has begun an open-source project to help unify the conversations of the synaptic web.
Wrote Panzer on his blog, "A few days ago at the Real Time Web Summit, we had a session about Salmon, a protocol for re-aggregated distributed conversations around web content. I was hoping for some feedback and to generate some interest, and I was overwhelmed by the positive reactions."
In order to increase the visibility of aggregated content and interactions to the original source of web content, content creators can include a Salmon link in RSS or Atom feeds. Readers or aggregators then realize the feed is Salmon-enabled and remembers the URL. When a user comments to the feed item, the aggregator then posts a version of the comment to the endpoint. Panzer and others cite real-time notification protocol PubSubHubbub as the ideal push mechanism for this process.
According to the protocol summary, "The usual result is for the salmon to be published along with other comments on the source's web page. Note that sources are not obligated to actually publish the salmon - they may moderate them, spam block them, aggregate, or analyze them instead. However, if the source does publish the salmon in a comment feed, it has to maintain certain fields to make the protocol work end-to-end."
In an influential blog post, Louis Gray writes, "PubSubHubbub essentially works as a middle-man conduit, taking information from a data's source passing along changed data to downstream destination sites. The proposed Salmon Protocol would similarly watch both source and destination sites for comments, and upon discovering new comments, it would send the new comments to the site which is lacking the full conversation. If multiple downstream destinations are designated, the Salmon Protocol will also populate these multiple sites."
Right now, the project site contains the Python/Google AppEngine source code for the Salmon demo. Writes Panzer, "I also intend to host the actual spec text there for the moment, along with the reference implementation code, and develop both in parallel based on discussions on the mailing list."
Interested developers are encouraged to join the mailing list and contribute to the conversation.