Microsoft at its Mix’n’Match conference in Redmond, Wash. earlier this month gave the developer faithful an early look at a new technology called Feedsync, which combines subscription models like RSS with data synchronization. The result of Chief Software Architect Ray Ozzie’s in-house think tank, Feedsync works by combining the subscription model of web feeds with data that can be used to update things like calendars or contact information.
As the name suggests, the problem Feedsync solves is a simple but vexing one: keeping things synchronized. Instead of emailing my friends to tell them my new address, for example, with Feedsync I simply update my feed and everyone that subscribes to it instantly gets my contact information updated.
To use Feedsync, the publisher defines the current cache state (my current address, for example) as an “initial” feed. All changes to that data are provided as “update” feeds. Subscribers grab the initial feed, then focus on the update feed for subsequent changes.
Consumer Internet is changing its communication models
Technologies like Feedsync are another sign that the consumer Internet is moving from a traditional “request-and-response” model, in which users visit pages, to one in which data exchanges follow a wide range of patterns. In doing so, the public Internet is following in the footsteps of enterprise IT.
In the early nineties, corporate IT used a client-server computing model. In many ways, the web browser became the consumer version of client-server. Similarly, enterprises have relied on publish-and-subscribe models to move data around. Vendors like Tibco, as well as frameworks like the Java Messaging Service, let one application subscribe to a data source (such as a stock ticker).
But JMS and other message-oriented-middleware (MOM) frameworks deliver messages from point to point reliably. To do this, they deal with each subscriber directly. Feedsync is more focused on the problem of synchronizing distributed data caches, and based on the idea of the subscriber polling the publisher.
Feedsync has its limitations. As Java architect Jonathan Ginter points out, it lacks the ability for the data publisher to know whether a subscriber has received all of its updates — a hallmark of enterprise-class publish-and-subscribe models. So in Feedsync, delivery failure is the subscriber’s problem.
Also, the spec allows publishers to discard updates, so subscribers have to notice they’ve lost sync and then re-process the entire feed, which may be time-consuming and involve a lot of data transfer. Consequently, the current Feedsync specification is probably best suited to lightweight, occasional updates.
But Ginter likes the fact that it is based on open protocols, unlike other cache synchronization solutions such as Coherence.
Broad adoption of synchronization and subscription
There have been some ill-fated attempts to deliver consumer subscription applications already (Pointcast, I’m looking at you). But it was only with the adoption of RSS that consumer-grade subscription found its stride. Today, RSS feeds are broadly available on most sites, and soon protocols such as COMET, driven by companies like Kaazing, will take subscription to the next level by letting servers update clients in real time.
Feedsync builds on the ubiquity of subscriptions and adds to it synchronization. It bundles structured data, security and permissions into a feed that subscribers can use to stay in synch with a data publisher.
Most consumers have already seen structured data of this kind. Consider a calendar invite — those files ending in .ics, based on the iCalendar standard. You can open a calendar invite in a variety of applications, from Outlook to iCal to Google Calendar, and the application automatically creates (or updates) an event.
One of the biggest challenges with synchronization is the resolution of conflicts. When several disconnected people change a calendar event independently, for instance, then reconnect, chaos can ensue. Companies like Puma have made their name producing synchronization software, and anyone who’s ever pressed the Hotsync button on a Palm knows the frequency with which conflicts can arise.
Feedsync offers a combination of subscriptions to let consumers of data keep track of information they care about, and synchronization to cleanly update that information while resolving, rather than creating, conflicts. That alone makes it worth a look (its specification is available under a creative commons license at www.feedsync.org). But Feedsync also has protocols to handle the merging of changes, identifying collisions, and deleting data that may help it to survive where other approaches have stumbled.
A new building block for social networks
Beyond all of this technology, Feedsync is also a volley in the social network space, which gives it the potential to be far more disruptive.
When thinking about the fundamentals that make Facebook successful, many people focus on the social networking giant’s Social Graph — the map of user relationships it tracks. But Facebook has another trick that’s nearly as important: status updates.
By keeping track of what your friends are up to, Facebook stays novel and keeps its users engaged. It’s a feat that many of its competitors are racing to emulate, including Google with its OpenSocial feeds. Essentially, you subscribe to your friends.
With Feedsync, you can not only subscribe to your friends, you can also synchronize data (such as calendars, contacts, events, and so on) automatically. So instead of status updates that just inform, information stays up to date.
By adding synchronization to the idea of subscription, Microsoft has upped the ante for how consumers keep synchronized with the people in their social graph.