An Introduction to FeedSync

Synchronization for the Web

The creation of FeedSync was catalyzed by the observation that RSS and Atom feeds were exploding on the web, and that by harnessing their inherent simplicity we might enable the creation of a “decentralized data bus” among the world’s web sites. Just like RSS and Atom, FeedSync feeds can be synchronized to any device or platform.

Previously known as Simple Sharing Extensions, FeedSync was originally designed by Ray Ozzie in 2005 and has been developed by Microsoft with input from the Web community. The initial specification, FeedSync for Atom and RSS, describes how to synchronize data through Atom and RSS feeds.

The FeedSync specification is available under the Creative Commons Attribution-Share Alike License and the Microsoft Open Specification Promise.

Synchronization enables Software-plus-Services

Data synchronization is a key enabling feature for the software plus services world.

End users increasingly expect and want access to their data from servers, clients, and devices. They expect the data to always be up to date no matter where they access it, and users must never lose data in the process, or see duplicated items.

There are plenty of examples today of the value users find in synchronization: Microsoft Outlook’s cached mode, the New York Times Reader, and many more. But these examples are all tight couplings between one particular service and one particular software application. FeedSync lays the foundation for a common synchronization infrastructure between any service and any application.

FeedSync makes your stuff yours

FeedSync network diagram Everyone has data that they want to share: contact lists, calendar entries, blog postings, and so on. This data must be up-to-date, real-time, across any of the programs, services, or devices you choose to use and share with.

Too often today data is “locked up” in proprietary applications and services or on various devices. As an open extension to RSS and Atom, FeedSync enables you to “unlock” your data—making it easy to synchronize the data you choose to any other authorized FeedSync-enabled service, computer, or mobile device. FeedSync enables many compelling scenarios:

  • Collaboration over the web using synchronized feeds
  • Roaming data to multiple client devices
  • Publishing reference data and updates in an open format that can be synchronized easily

The diagram above shows how a hypothetical end user, Steve, uses FeedSync enabled services and clients to maintain his schedule. Steve can synchronize his calendar information to his laptop and mobile phone; with two-way synchronization through the Calendar service at the center of the diagram, all of his devices stay up to date.

Steve can use the FeedSync-enabled Invite service on the left to invite friends to a party. Because the Invite service uses FeedSync, any changes to the invite flow to the other nodes. Steve can change the party location from his mobile phone, and that info flows back into the Invite service, which can notify all of the party guests of the change. Steve didn’t have to manually copy the changes back and forth.

Even better, because FeedSync enables multi-master topologies, Steve’s laptop can pick up schedule changes either from the Invite service, or from the Calendar service. There’s a true “mesh” where Steve’s data can flow to any of the endpoints. That means that a change from the Invite service can flow through the Calendar service and out to Steve’s smart phone, without Steve’s laptop ever being powered on. FeedSync clearly identifies the changes so there’s never any duplication or confusion, even if Steve’s laptop receives the same change info from both services.

Steve can also publish a subset of his calendar more broadly using a FeedSync feed. Consumers of the publish-only feed can only see a subset of the calendar, and don’t have permission to make changes. Because of the FeedSync information in the feed, though, they are reliably notified of updates to Steve’s shared calendar. And unlike current feeds, when Steve deletes an item from the calendar, the item is deleted on everyone’s calendar.

What does FeedSync add to RSS and Atom?

RSS and Atom were designed as notification mechanisms, to alert clients that some new resource is available on a server. This is a great fit for simple applications like blogging.

But those feed formats are not a natural fit for representing collections of resources that change, such as a contact list, or a collection of calendar items. Atom Publishing Protocol is designed for resource collections, but it is a client-server protocol and isn’t suitable (by itself) for multi-master scenarios.

FeedSync extends RSS and Atom so that FeedSync-enabled RSS and Atom feeds can be used for reliable, efficient content replication and multi-master data synchronization.

One of the great benefits of FeedSync is that it doesn’t attempt to replace technologies like RSS, Atom, or Atom Publishing Protocol. Instead, FeedSync is a simple set of extensions that enhances the RSS or Atom feeds that people are already using today.

Any platform, any device

FeedSync provides a common way for services to add synchronization capability to their existing Atom and RSS feeds, which can then be consumed by software or other services on any device or platform.

FeedSync has been developed over the past two years with input from the internet community. The FeedSync spec itself has been licensed via a Creative Commons license. Microsoft encourages a diversity of FeedSync implementations.