Dave Winer’s Morning Coffee Notes podcast is a recent addition to my listen-list. Dave’s podcast is wacky, entertaining and informative; I’ll even forgive him for that horrible Turkey in the Straw MIDI song he played over and over a couple of episodes back. As I have blogged previously, I spend more time listening to podcasts than reading blogs; there’s just more depth and richness to a podcast and time-shifting is huge for me. This holds true for Dave’s work; I read Scripting News only occasionally, but listen to all Morning Coffee Notes episodes.
Anyway, in Dave’s 19 November 2005 episode, he mentioned the new Simple Sharing Extensions (SSE) for RSS and OPML, a proposal from Microsoft heavily influenced by their new CTO, Ray Ozzie. In a nutshell, where RSS and OPML are about one-way information publishing (read-only from publisher to subscriber), SSE enables synchronized read-write connections—replication—among distributed applications via extended RSS and OPML syntax. And as its name would suggest, SSE manages to pull this off in a reasonably simple way.
If anybody understands replication, it’s Ray Ozzie. Back in 1989, with funding from Lotus’ Mitch Kapor, Ozzie founded Iris Associates and created Notes. Notes was a ground-breaking product in many areas—it was the first major commercial product to embed RSA security technology—but replication was probably its biggest innovation. The Notes replication engine allowed occasionally-connected users to collaboratively edit rich, semi-structured data. When Notes was released back in the early 1990s, there was no commercial Internet (not even a dial-up flavor), and corporations often had many offices that weren’t on the corporate WAN. So Notes had to enable distributed replication over a mixture of dial-up networking and corporate WAN infrastructure. No small feat, especially given the hardware and operating systems available at the time.
To support replication, each chunk of semi-structured data (called a “note”) in a Notes database contained a globally-unique identifier known as a UUID. This, combined with intelligent timestamping, versioning, and conflict resolution mechanisms, made Notes’ asynchronous replication possible.
Eventually Lotus bought Iris, and IBM bought Lotus, and finally Ray Ozzie moved on to found Groove Networks. With Groove, replication was again a cornerstone feature. But where Notes required dedicated server infrastructure, Groove took a page from the peer-to-peer book and enabled replication directly between peers with no servers. Under the hood, though, Groove still has the same basic elements that make replication possible: UUID equivalents, timestamping, versioning, and conflict resolution.
So when I looked at the SSE spec, I saw many familiar elements:
- Within each replicated RSS item or OPML outline there’s a <synch> element with a globally unique id attribute, which serves as the foundation for replication.
- <synch> has <history> and <update> children elements that log and timestamp updates. <synch> also includes a version attribute. This combination enables an SSE application to determine the winner and loser in any replicated update.
- Finally, <synch> has a conflict attribute to flag conflicts when they occur.
There’s a bit more to SSE than this, but not much; it really is pretty simple.
SSE’s potential is staggering. As Ray Ozzie describes it, SSE could become the “RSS of synchronization,” and he identifies synchronization of shared calendars and contact lists as possible early SSE targets. But it’s even bigger than this: once SSE is widely adopted, we’ll be able to “remix with updates.” Imagine something like this craigs-list-on-google-maps application, but with updates synchronizing in both directions. And a hundred other scenarios we haven’t yet thought of. Very powerful.
I’ve been along for the whole Ray Ozzie ride, first as a Lotus Notes business partner in the mid-90s, and more recently as a Groove user and implementer. I was worried when Microsoft invested in Groove, and disappointed when Microsoft bought the company. Ozzie was selling out, I thought; another good guy assimilated by the borg. Ozzie being named Microsoft CTO was surprising; but I just couldn’t picture Ozzie, who I remember as soft-spoken and somewhat shy, having much influence around the likes of Steve Ballmer, the poster child of brash.
But SSE has me reconsidering my Ozzie-sold-out stance, and wondering if we might see a (slightly!) kinder, gentler Microsoft thanks to Ozzie’s influence. Here are a couple of good signs:
- Rather than trying to jam a fully-baked standard down the world’s throat, Microsoft first did some reaching out. Ray Ozzie called to Dave Winer to discuss Microsoft’s initial SSE concept, which applied to RSS only. As a result of their conversation, SSE was extended to OPML, which I feel more than doubles its usefulness: OPML can represent almost any hierarchically structured data.
- Microsoft released the SSE spec under the Creative Commons Attribution ShareAlike license.
I hope to see the SSE spec finalized and adopted soon, and am looking forward to building some remix-with-updates webapps.