I suffered a deluge of information yesterday from my compatriot Tyler on the state of open protocols. My first challenge was to get a feel for the nomenclature and understand the differences between protocols, open source implementations, and specific server instances using those protocols. Only then can I help come up with a plan for how to incorporate the future state of the web information flow. Ideally we’d like to position Victus Media to utilize open message formats (Tyler’s on it).
This is by no means a complete list but it captures many of the topics we discussed yesterday (and it’s a cheat sheet for me to look back to):
- Open Web Foundation and the Open Web Foundation Discussion are dedicated towards providing a common working group for developing community specifications.
The Open Web Foundation is an attempt to create a home for community-driven specifications. Following the open source model similar to the Apache Software Foundation, the foundation is aimed at building a lightweight framework to help communities deal with the legal requirements necessary to create successful and widely adopted specification.
The foundation is trying to break the trend of creating separate foundations for each specification, coming out of the realization that we could come together and generalize our efforts. The details regarding membership, governance, sponsorship, and intellectual property rights will be posted for public review and feedback in the following weeks.
As we work out the fine details of the foundation, we invite and encourage individuals to come and join the discussion. To ask questions please visit our Q&A page. You are also invited to join the community and discuss ideas and specifications you would like to see developed within the foundation.
I’m attempting to get involved by getting feedback on a couple of protocol ideas I was batting around. One search like status that will attempt to deal with distributed search over federated servers, and the other meta protocols in the hopes of having a description language to generate protocols on the fly (I just found out this morning this idea may be patented)
- Pubsubhubbub or Push
A simple, open, server-to-server web-hook-based pubsub (publish/subscribe) protocol as an extension to Atom and RSS.
Parties (servers) speaking the PubSubHubbub protocol can get near-instant notifications (via webhook callbacks) when a topic (feed URL) they’re interested in is updated.
The protocol in a nutshell is as follows:
An feed URL (a “topic”) declares its Hub server(s) in its Atom or RSS XML file, via
. The hub(s) can be run by the publisher of the feed, or can be a community hub that anybody can use. (Atom and RssFeeds are supported)
A subscriber (a server that’s interested in a topic), initially fetches the Atom URL as normal. If the Atom file declares its hubs, the subscriber can then avoid lame, repeated polling of the URL and can instead register with the feed’s hub(s) and subscribe to updates.
The subscriber subscribes to the Topic URL from the Topic URL’s declared Hub(s).
When the Publisher next updates the Topic URL, the publisher software pings the Hub(s) saying that there’s an update.
The hub efficiently fetches the published feed and multicasts the new/changed content out to all registered subscribers.
The protocol is decentralized and free. No company is at the center of this controlling it. Anybody can run a hub, or anybody can ping (publish) or subscribe using open hubs.
To bootstrap this, we’ve provided an open source reference implementation of the hub (the hard part of the protocol) that runs on Google App Engine, and is open for anybody to use.
OStatus lets people on different social networks follow each other. It’s transparent to your friends, colleagues and family which software or service you use. They can get your status updates on their own sites and reply, like, or re-post your updates.
OStatus isn’t a new protocol; it applies some great protocols in a natural and reasonable way to make distributed social networking possible.
Activity Streams encode social events in standard Atom or RSS feeds.
PubSubHubbub pushes those feeds in realtime to subscribers across the Web.
Salmon notifies people of responses to their status updates.
Webfinger makes it easy to find people across social sites.
OStatus weaves these protocols together to make an easy-to-implement distributed social network.
Sites like Google Buzz, StatusNet, WordPress.com, and Tumblr have implemented some or all of these protocols today. We hope that defining the junctures where the protocols work together will encourage adoption of the entire suite.
The OStatus spec is a first step in this direction. We’re eager to work with other implementers to make it better, to smooth the rough edges, and to improve the overall experience.
WebFinger is about making email addresses more valuable, by letting people attach public metadata to them. That metadata might include:
public profile data
pointer to identity provider (e.g. OpenID server)
a public key
other services used by that email address (e.g. Flickr, Picasa, Smugmug, Twitter, Facebook, and usernames for each)
a URL to an avatar
profile data (nickname, full name, etc)
whether the email address is also a JID, or explicitly declare that it’s NOT an email, and ONLY a JID, or any combination to disambiguate all the addresses that look like firstname.lastname@example.org
or even a public declaration that the email address doesn’t have public metadata, but has a pointer to an endpoint that, provided authentication, will tell you some protected metadata, depending on who you authenticate as.
… but rather than fight about the exact contents of that file, WebFinger is about making that file discoverable at all. The community can explore and innovate within that discovery file later.
- ActivityStrea.ms and the mailing list, and wiki. There’s also a high level description.
an extension to the Atom feed format to express what people are doing around the web
The Activity Streams format has already been adopted by Facebook, MySpace, Windows Live, Opera, and many others.
An activity is a description of an action that was performed (the verb) at some instant in time by some actor with some social object (the object).
- DiSo Project
Silo free living.
Social networks are becoming more open, more interconnected, and more distributed. Many of us in the web creation world are embracing and promoting web standards – both client-side and server-side. Microformats, standard APIs, and open-source software are key building blocks of these technologies. This model can be described as having three sides: Information, Identity, and Interaction.
Diso (dee • soh) is an initiative to facilitate the creation of open, non-proprietary and interoperable building blocks for the decentralized social web.
Our first target is WordPress, bootstrapping on existing work and building out from there.
So what does that mean?
We’re building WordPress plugins that implement or build on:
microformats like XFN, hCard, XOXO — wp-contactlist, wp-profiles
OpenID — wp-contactlist, wp-openid-server
- Salmon Protocol, a Google code page and the mailing list
Unifying the Conversations
As updates and content flow in real time around the Web, conversations around the content are becoming increasingly fragmented into individual silos. Salmon aims to define a standard protocol for comments and annotations to swim upstream to original update sources — and spawn more commentary in a virtuous cycle. It’s open, decentralized, abuse resistant, and user centric.
- Identi.ca is a micro-blogging service based on the Free Software StatusNet tool