FeedSync for Atom and RSS, previously Simple Sharing Extensions, are extensions to RSS and Atom feed formats designed to enable the bi-directional synchronization of information by using a variety of data sources. Initially developed by Ray Ozzie, Chief Software Architect at Microsoft, it is now maintained by Jack Ozzie, George Moromisato, Matt Augustine, Paresh Suthar and Steven Lees. Dave Winer, the designer of the UserLand Software RSS specification variants, has given input for the specifications.
The last version of FeedSync for Atom and RSS specification is 1.02. FeedSync for Atom and RSS is licensed under the Creative Commons Attribution-ShareAlike License (version 2.5) and the Microsoft Open Specification Promise.
The scope of FeedSync for Atom and RSS is to define the minimum extensions necessary to enable loosely cooperating applications to use Atom and RSS feeds as the basis for item sharing – that is, the bi-directional, asynchronous synchronization of new and changed items amongst two or more cross-subscribed feeds.
Note that while much of FeedSync is currently defined in terms of Atom and RSS feeds, at its core what FeedSync strictly requires is: A flat collection of items to be synchronized A set of per-item sync metadata that is maintained at all endpoints A set of algorithms followed by all endpoints to create, update, merge, and conflict resolve all items
This means that FeedSync can be implemented by almost any programming language have its metadata represented in many structured data formats.
Examples
RSS feed
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:sx="http://feedsync.org/2007/feedsync">
<channel>
<title>To Do List</title>
<description>A list of items to do</description>
<link> https://www.example.com/something/foo/bar/ </link>
<sx:sharing since="2005-02-13T18:30:02Z" until="2005-05-23T18:30:02Z" > <sx:related link="[http://example.com/all.xml]{ { dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}" type="complete" /> <sx:related link="[http://example.com/B.xml]{ { dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}" type="aggregated" title="To Do List (Jacks Copy)" /> </sx:sharing> <item> <title>Buy groceries</title> <description>Get milk, eggs, butter and bread</description> <sx:sync id="item_1_myapp_2005-05-21T11:43:33Z" updates="3"> <sx:history sequence="3" when="2005-05-21T11:43:33Z" by="JEO2000"/> <sx:history sequence="2" when="2005-05-21T10:43:33Z" by="REO1750"/> <sx:history sequence="1" when="2005-05-21T09:43:33Z" by="REO1750"/> </sx:sync> </item> </channel> </rss>
Atom feed
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:sx="http://feedsync.org/2007/feedsync"> <title>To Do List</title> <subtitle>A list of items to do</subtitle> <link rel="self" href="http://example.com/partial.xml"/{ { dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}> <author> <name>Ray Ozzie</name> </author> <updated>2005-05-21T11:43:33Z</updated> <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0aaa</id> <sx:sharing since="2005-02-13T18:30:02Z" until="2005-05-23T18:30:02Z" > <sx:related link="[http://example.com/all.xml]{ { dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}" type="complete" /> <sx:related link="[http://example.com/B.xml]{ { dead link|date=December 2016 |bot=InternetArchiveBot |fix-attempted=yes }}" type="aggregated" title="To Do List (Jacks Copy)" /> </sx:sharing> <entry> <title>Buy groceries</title> <content>Get milk, eggs, butter and bread</content> <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0aa0</id> <author> <name>Ray Ozzie</name> </author> <updated>2005-05-21T11:43:33Z</updated> <sx:sync id="item_1_myapp_2005-05-21T11:43:33Z" updates="3"> <sx:history sequence="3" when="2005-05-21T11:43:33Z" by="JEO2000"/> <sx:history sequence="2" when="2005-05-21T10:43:33Z" by="REO1750"/> <sx:history sequence="1" when="2005-05-21T09:43:33Z" by="REO1750"/> </sx:sync> </entry> </feed>