There are thousands of companies and organizations using StatusNet for a private network either hosted or inside their firewall. We think that's great; it's one of the cloud plans we're offering, and our StatusNet Enterprise Network provides commercial support for the software.
But we also want our software to be valuable for the public social Web. That's the network effect at work: the value of a communications technology goes up by the square of the number of people on it. The problem here is that as Open Source software we expect thousands or even millions of sites running our software; we'd need to have a protocol to link this network of networks together.
When I first designed StatusNet in the Spring of 2008, there were no distributed social networking protocols. So, I made one up. OpenMicroBlogging (OMB) 0.1 used a Webhooks pattern and integrated OAuth for authorization, but it was designed for microblogging in 2008. It pushed plain text messages one way, from publishers to subscribers, without much context involved.
OMB did the job well enough, but the world's changed a lot since then. We expect much more two-way interaction and rich context from status updates than we did in 2007 and 2008. OMB didn't handle linking people you mention, or passing along HTML versions of notices, or lat/long values for notices, or replies to people who aren't subscribed to you. Our team was reluctant to enhance OMB for these and other features; it was really made more as a statement of purpose than a long-term protocol.
Luckily for us, there have been a number of advances in the distributed social Web in the last two years. In Fall of 2009, we started re-designing OMB. We abandoned any attempt at backwards compatibility, so we were really able to come up with a system built of shiny new components that make more sense.
These components are:
- Atom or RSS for feeds. These standard feed formats make it easy to include rich information like location, thread context, and HTML formatting in status updates.
- PubSubHubbub for real-time. PubSubHubbub (or PuSH) is an HTTP-based protocol for pushing feed entries from publishers to subscribers. It lets people on different servers receive status updates in real-time (or "real-enough time").
- Salmon for replies. Salmon is an excellent, distributed, secure protocol for sending messages "upstream" -- from subscribers to publishers. And since it uses Atom or RSS elements to structure those messages, it's easy to include lots of rich data in these messages.
- ActivityStreams for social events. There is a lot of information in a social network that's not explicitly a status update: follows, faves, repeats ("retweets"). We use ActivityStreams to encode these events, which then either flow through PuSH out to a network of subscribers, or get posted through salmon to the recipients. This lets sites on both sides keep track of followers and friends with a minimum of data transfer.
- Webfinger for discovery. We needed an easy way for people to say, "Follow me!" Webfinger gives people identities available across the Internet that look like email addresses. We use this for discovering people on the network; you can follow me at firstname.lastname@example.org.
Putting these pieces together, we were able to make the new, distributed social networking system that's part of StatusNet 0.9.0. It's great; flexible and simple and high-performance and fun and easy to use.
We wanted more sites to implement these protocols so the network becomes even more valuable. Some parts have been implemented already by sites like Google Buzz, LiveJournal, WordPress.com, and Tumblr. We want to make sure that sites that have taken those first few steps make the next ones to build a truly distributed social Web.
So we've put a name on this suite of protocols: OStatus. We want people who are looking for a way to distribute status updates to know that there's an easy, standard way to go. We think that the more OStatus participants, the better the network becomes.
We've published the OStatus suite's definition as OStatus 1.0 Draft 1. It's not a long spec; it depends on the great work that's been done on the component protocols, with a teensy bit of glue to make everything even out right. We think it's a natural and obvious way to use these protocols together, and we hope to see more sites on the OStatus network moving forward.
What comes next?
- We're going to be working on the spec to make it easier to understand and implement.
- We'll be soliciting feedback from the upstream protocols' communities to make sure we got things right.
- We'll be reaching out to sites that seem like good candidates for OStatus implementation to let them know how things go.
- We'll continue to improve the StatusNet implementation of OStatus to make it more compliant and to show off the features of the protocol.
We hope that people interested in distributed social networking and distributed status updates continue to engage with OStatus. We're optimistic about its growth.