Windows RSS chapter complete
My blog's been silent since Wednesday because I've been devoting every evening hour and all weekend to finishing the new chapter 6 on the Windows RSS platform for RSS and Atom in Action. I finished about 20 minutes ago and I'm ready to hand the chapter off to the editors. I think it's the longest chapter in the book (but I won't know until it is typeset). Here's the outline as it stands today:
- Windows RSS platform overview
- Browse, search and subscribe with IE7
- Windows RSS platform components
- The Feeds API
- The Common Feed List
- The Feed Store
- The Download Manager
- Microsoft's newsfeed list and sharing extensions
- Managing subscriptions with the Common Feed List
- Manging subscriptions
- Keeping track of what's been read
- Getting started with the Common Feed List
- Adding the Feeds API to your project
- Walking the feed folder hierarchy
- Ceating subscriptions
- Newsfeed update interval
- Download enclosures or not?
- Monitoring events
- Parsing newsfeeds with the Feeds API
- Simple newsfeed parsing example
- Parsing extension elements and funky RSS
- The Common Feed Format
- Parsing item summaries with the Feeds API
- Windows RSS platform newsfeed extensions
- The Common Feed (CF) extensions
- The Simple List Extensions (SLX)
- The Simple Sharing Extensions (SSE)
- Summary
Next up is the new chapter 7 on parsing feeds with ROME.
Tags: topic:[ie7], topic:[rss], topic:[atom], topic:[vista], topic:[rome]
Tags:
Blogging
Please host the Windows RSS Feed Normalizer
Sam Ruby: It seems self evident to me that the Microsoft Feed API is going to be important enough that people are going to want to make sure that their feeds work well with this new platform.The Feed Normalizer makes it easy for you to see how the Windows RSS platform normalizes your feed, or any feed for that matter. Let's help the Microsoft Feeds API live up to it's package name, which, by the way, is Microsoft.Feeds.Interop.However, not everybody is in a position where they have ready access to a machine running Windows XP Service Pack 2 (SP2) with IE7Beta 2 Preview loaded on it.
So, to make life easier, Iâve converted Dave Johnsonâs program to a web application, and Iâm looking for volunteers to host it. If you are in aposition to help with a public server, please leave a comment herewith your URL.
Maybe some of the RSS Team bloggers would like to help?
Tags: topic:[ie7], topic:[rss], topic:[atom], topic:[vista]
Tags:
Microsoft
Data loss sucks
James Snell: IE7âs feed reader support isnât all that bad, but if MS wants developers to use it as a foundation to build new, interesting applications, MS needs to get out the way and provide an implementation that letâs developers work with the data as it exists out on the web. Normalizing subscribed feeds to their version of RSS is troublesome at best.Tags: topic:[ie7], topic:[rss], topic:[atom], topic:[vista]
Tags:
Microsoft
Surprise visitor at the meet-up
Congressman Brad Miller (house.gov/bradmiller) and his campaign manager PJ Puryear showed up at Cafe Cyclo tonight for the Raleigh blog meet-up to learn more about blogging and connect with fellow bloggers. How cool is that! I don't think he expected to run into a bunch of geeky tech bloggers, but despite that we had a great time talking blog search and RSS and politics (apparently, everybody present was a democrat). And, I made sure to get in a word or two about the evils of DRM and the broadcast flag. Check out Josh's and Bill's blogs for more about the evening.
Also... I almost forgot to mention that I got to take a behind the scenes look at the IBM DeveloperWorks Roller implementation. Bill logged in and showed me around. They're still on Roller 2.0, so they don't have comment management/moderation, but they do have tagging and they've made a couple of small layout changes to the editor/admin UI.
Also... I almost forgot to mention that I got to take a behind the scenes look at the IBM DeveloperWorks Roller implementation. Bill logged in and showed me around. They're still on Roller 2.0, so they don't have comment management/moderation, but they do have tagging and they've made a couple of small layout changes to the editor/admin UI.
Raleigh bloggers meet-up 6:30PM tonight at Cafe Cyclo
I forgot to post the reminder this morning, but what the heck it's not too late. Join us at Cafe Cyclo in Cameron Village to talk blogs, podcasts and whatever else is on your mind. We meet at 6:30PM and usually break up around 9PM. Josh has the details.
Tags:
Blogging
Today's links [March 21, 2006]
- Moonwatcher Visionaries: Bill Gates on RSS at Mix06
"The importance of Microsoft's strong adoption of RSS cannot be overstated." - Windows RSS Platform to Ship Without Secure Feed Support
"As Attensa and NewsGator let out a collective sigh of relief." - Atom as a Case Study
Tim Bray explains why and how Atom feed format and protocol was created (adapted from his ETech talk) - NewsGator to sync to Windows RSS platform
Users will be able to subscribe to feeds in IE7, sync and view items from the feed in NewsGator
Tags:
Links
FeedsManager.Bastardize()*
OK, I've got the latest IE7 build, the one Microsoft is handing out at MIX06. It took me a bit longer than I had expected to change my examples to compile with the new Feeds API included in the new build. They changed the Feeds namespace to Microsoft.Feeds.Interop and made a bunch of other little changes. So all I have for you tonight is one little example of weirdness.
Let's say you have a feed that uses the RSS 2.0 <description> element to hold a short summary of each item and the funky <content:encoded> element to hold the full content of each item (just like Dave Winer's Wordpress feed does). When the Feeds API reads your feed, it converts it to a normalized (but currently not valid, due to some bugs) form of RSS 2.0 that uses a mix of RSS and Atom 1.0 elements. For funky RSS elements, it uses Atom. So you end up with something like this:
Item contains
<description>
Short summary of item content
</description>
<content:encoded>
Full content of the item
</content:encoded>
Short summary of item content
</description>
<content:encoded>
Full content of the item
</content:encoded>
Feed API normalizes to
<atom:summary type="html">
Short summary of item content
</atom:summary>
<description>
Full content of the item
</description>
The old switcharoo, eh?Short summary of item content
</atom:summary>
<description>
Full content of the item
</description>
Here's a more complete example: a source feed in RSS 2.0 format and the same feed in Feeds API normalized normalized format. I've also got an Atom example: source and normalized.
That's pretty weird alright, but they're on the right track. They're using Atom elements to model RSS. Now, if they'd just follow that line of thinking to it's logical conclusion and use Atom as the normalized feed format, they might actually be able to please the assholes and protect the morons of this world.
Tags: topic:[rss], topic:[atom], topic:[feeds], topic:[ie7], topic:[vista], topic:[mix06]
* The title of this post refers to the FeedsManager.Normalize() method which takes an Atom 0.3, Atom 1.0, RSS 1.0 or RSS 2.0 feed and normalizes it to Feeds API RSS 2.0 format. To be clear about this, I'm using this little C# program to get at the normalized feeds:
using System;
using System.Xml;
using System.IO;
using Microsoft.Feeds.Interop;
namespace BlogApps_Chapter06 {
class Normalize {
static void Main(string[] args) {
string url = args[0];
FeedsManager fm = new FeedsManagerClass();
IFeedFolder rootFolder = (IFeedFolder)fm.RootFolder;
IFeed feed = null;
if (!fm.IsSubscribed(url)) {
feed = (IFeed)rootFolder.CreateFeed(url, url);
} else {
feed = (IFeed)fm.GetFeedByUrl(url);
}
feed.Download();
string xml = feed.Xml(feed.itemCount,
FEEDS_XML_SORT_PROPERTY.FXSP_PUBDATE,
FEEDS_XML_SORT_ORDER.FXSD_ASCENDING,
FEEDS_XML_FILTER_FLAGS.FXFF_ALL,
FEEDS_XML_INCLUDE_FLAGS.FXIF_CF_EXTENSIONS);
StreamWriter sw = new StreamWriter(File.OpenWrite(args[1]));
sw.Write(xml);
sw.Close();
}
}
}
Tags:
Microsoft
New build of IE7 is available
I spent the weekend writing about IE7 and the Microsoft Feeds API -- and my chapter is due at the end of the week, so this is perfect timing for a new build. I'll re-run my experiments with the new one and tell you about some other "interesting" findings later tonight. The closer I look, the funkier it gets.
Tags:
Microsoft
Re: Experimenting with the MS Feeds API
I'm seeing lots of interest in my MS Feeds API post yesterday, sparked by links from Sam Ruby, Dave Winer and Randy Morin. Some people might have gotten the impression that I was criticizing the decisions Microsoft made in mapping RSS elements and extension elements to the Feeds API object model. I wasn't.
I think Microsoft made pretty good choices, given the simplified object model that they're working with. If somebody is using funky RSS, then they mean it. For example, if somebody declares the Content Module namespace and uses the <content:encoded> namespace in their feed, then that's probably the content that they want folks to use. I think that's the philosophy Microsoft used in making those decisions, except for prefering <pubDate> over <dc:date>, which I don't understand.
The problem is, the Feeds API object model is a little too simple. Like RSS 2.0, it doesn't model the common things that bloggers do like having both a summary and content for each item, or having name and/or e-mail address for each author. That's why people use extensions like the <content:encoded> and <dc:creator> (or prefer Atom, which does a better job of modeling those common things). I hope Microsoft will fix this by improving the object model and if they do, they won't have to make as many choices about which elements to use.
Snarkstream
Robert writes that my snarky "get a clue" comment about Google and Atom in my del.icio.us bookmark collection is inappropriate, constitutes harassment and is "the sort of behavior the Atom community is supposedly above." Has he got a point? Do I owe Google an apology?
Tags:
Blogging
Experimenting with the MS Feeds API
The Windows RSS platform includes a Feeds API that parses all forms of RSS and Atom to a simplified object model.
For example, an Item object has an Author property and not an author name, author e-mail and author URI which are all possible in Atom. And, an Item object has a Description field and not description and content (as in Wordpress feeds) or summary and content (as in Atom feeds).
So, how does the Feeds API decide how to map elements to this simplified object model? I did some C# experiments and here are some of my findings. Note that the Feeds API is beta software and will certainly change for the better (I hope) by the time it is released in IE7 and Windows Vista.
Item contains |
Feeds API returns |
<dc:creator>dave</dc:creator> | item.Author = "dave" |
<author>dave@example.com</author> | item.Author = "dave@example.com" |
<author>dave@example.com</author> <dc:creator>dave</dc:creator> |
item.Author = "dave" (prefers funky RSS) |
<description>my desc</description> <content:encoded>my content</content:encoded> |
item.Description = "my content" (prefers funky RSS) |
<pubDate> Thu, 9 Mar 2006 23:13:04 -0500 </pubdate> |
item.Date = "3/10/2006 4:13:04 AM" (uses GMT) |
<pubDate> Thu, 9 Mar 2006 23:13:04 -0500 </pubdate> <dc:date> 2004-08-19T11:54:37-08:00 </dc:date> |
item.Date = "3/10/2006 4:13:04 AM" (prefers core RSS element) |
<atom:summary>my summary</atom:summary> <atom:content>my content</atom:content> |
item.Description = "my content" |
First, it's interesting that those funky RSS elements that Winer dislikes are preferred over the core RSS elements in important places. And second, what if you're not happy with Microsoft's mapping choices in this area?
For example, how do you get both description and content from those Wordpress feeds? Wordpress (and Typepad) uses the <description> element as a summary and the funky <content:encoded> element for the full content (see Winer's own Wordpress.com feed for example). You've got to parse the XML yourself. The Feeds API tries to makes that easy by providing both the XML for the entire feed and the XML fragment for each item, but I think most developers would prefer to have a more complete object model.
See also: What's up with the Windows RSS Platform
Tags: topic:[rss], topic:[atom], topic:[feeds], topic:[ie7], topic:[vista]
The never ending story of RSS and Atom in Action
You know last week, when I said the book was ready to go to the printers and would be available this week as an e-book? We'll, I was wrong.
While we waited for Atom protocol to stabilize, things changed in the world of C# and Java feed APIs. Microsoft introduced the Windows RSS platform and a pre-release of the Windows Feeds API is available in the IE7 beta. And ROME has come along way too; now with Atom format 1.0 support and a growing list of extension modules. We decided that we just couldn't publish a book on RSS and Atom without covering the Windows RSS platform and ROME in-depth. So now I'm under the gun again, writing away into the wee hours of the night. I should be done by April 14th and, with luck, the book will be out in late May, just in time for JavaOne. That explains my sudden interest in the Windows RSS platform.
The kids hate it, but I think it's for the best. Manning will have the very first book that covers the Atom protocol (with a working client and server), the Windows RSS platform and ROME in-depth. It'll definitely be worth the wait.
Tags: topic:[atom], topic:[rss], topic:[ie7], topic:[atom protocol]
Today's links [March 13, 2006]
- Windows RSS Platform
Niall Kennedy also blogged about Windows RSS plaform this past weekend - Common Feed Errors
Sam Ruby posts "An analysis of a weekâs work of click-throughs on Feed Validator"
Tags:
Links
JGRASS

- The JGRASS documentation page at HydroloGIS.com
- Abstract of a JGRASS talk by John Preston and others
Tags:
Java
What's up with the Windows RSS platform?
The Windows RSS Platform (or Feeds API) is the feed handling engine that powers the new RSS features in IE7. It will also be included in Windows Vista for use by other applications. Note that here, RSS is a generic term meant to include both RSS and Atom -- the Feeds API supports both. The Feeds API is packaged in a DLL called msfeeds.dll and available to programmers as a set of dual-interface COM objects. Here are the features exposed via the Feeds API.
- Common feed list: list of feeds for current user, organized as folder hierarchy.
- Feed store: local cache of feeds, feeds available via abstract object model
- Download engine: for managing and monitoring large enclosure downloads
- RSS sharing extensions: new XML elements to support bi-directional sync via RSS
The Feeds API gives you access to the current user's feed subscription list, a feed parser that can handle any form of RSS and Atom as well as the IE7 podcast download engine. The parser parses feeds to an abstract object model designed to represent any sort of feed. It handles funky RSS and in some cases prefers the funky elements (e.g. <content:escape> over <description>).
Here are some of the references I've been using to understand the API:
Feeds API docs, specs and whitepapers from Microsoft
- The Feeds API documentation at MSDN Library
- The Simple Sharing Extensions (SSE) for RSS and OPML specification
- The Simple List Extentions for RSS specification
- Simple Sharing Extensions for RSS tutorial (in Vista only?)
- RSS Support in Longhorn - good overview
- PDC05 presentation about RSS in Windows Vista
Microsoft employee blogs about the RSS platform
- The Windows RSS Platform described on the Microsoft RSS Team Blog
- The Windows RSS Platform ala carte from the Microsoft RSS Team Blog
- A blog about the RSS Simple Sharing Extensions from Microsoft's Jack Ozzie
- Related: Ray Ozzie's blog post Wiring the Web
- FeedBandit developer Dare Obasanjo's feedback on Windows RSS Platform
- Windows Live Mail Desktop Beta (RSS feeds and "blog-it" feature)
Other blogs about it
- Newsgator's Nick Bradbury's feedback on Windows RSS Platform
- PDC'05 blog about the above Windows RSS Platform presentation
- Jim Mathies built an aggregator in a weekend with the RSS platform
- A simple windows RSS store viewer and exploration of msfeeds.dll implementation
- John Udell interviews Microsoft's Amar Ghandi about the RSS platform
Update2: added reference to Simple List Extensions
Update3: added link to RSS in Windows Vista presentaton
Tags: topic:[atom], topic:[rss], topic:[ie7], topic:[atom protocol]
Spring weekend
Since the book was supposed to be finished by Friday (more on that later), Andi and her friends left town for a girls beach weekend at Topsail Island. So the boys and I have been fending for ourselves and enjoying a beautiful early spring weekend with temps in the high 70s.
On Friday night we went to dinner early, around 5:30PM, hoping to get an outside table at Mellow Mushroom. The patio was packed with after-workers and college kids, so we settled for an inside table. After eating half a pie and a small hill of black olives, we took a long walk around the Glenwood South area stopping for ice cream at Turkish Delights.

Today, I strapped the bikes on the back of the van and we drove down to Meredith College to ride the NC Museum of Art trail. The kids love the bike bridge. Fortunately, Leo at three is still light enough to ride in the bike seat. We took a ride, crossed the bridge and then walked through some of the outdoor pieces, that's one in the (Treo phone) photo above. After that, we went inside to walk through the European collection. It was a quick walk. Alex and Linus are old enough to appreciate the paintings, but Leo no so much. Then we made our way home. All and all a very nice way to spend a warm spring afternoon.
On Friday night we went to dinner early, around 5:30PM, hoping to get an outside table at Mellow Mushroom. The patio was packed with after-workers and college kids, so we settled for an inside table. After eating half a pie and a small hill of black olives, we took a long walk around the Glenwood South area stopping for ice cream at Turkish Delights.

Today, I strapped the bikes on the back of the van and we drove down to Meredith College to ride the NC Museum of Art trail. The kids love the bike bridge. Fortunately, Leo at three is still light enough to ride in the bike seat. We took a ride, crossed the bridge and then walked through some of the outdoor pieces, that's one in the (Treo phone) photo above. After that, we went inside to walk through the European collection. It was a quick walk. Alex and Linus are old enough to appreciate the paintings, but Leo no so much. Then we made our way home. All and all a very nice way to spend a warm spring afternoon.
Tags:
family
Ning's Atom protocol based API
The other week, we got the news that the Lucene search engine team chose Atom protocol for it's new Lucene-WS web services interface. Now, Web 2.0 darling Ning.com has joined the Atom protocol club with the Ning Atom API. Is Atom protocol generic enough to become the standard for REST based web services? Via Sam Ruby.
Tags:
Blogging
eWeek: Sun's Open-Source Roller Keeps Blogs Rolling
Daryl Taft of eWeek interviewed me a couple of weeks ago and the resulting article Sun's Open-Source Roller Keeps Blogs Rolling was published today. The article covers Roller history, Apache Roller status, RSS and Atom in Action, the Blogapps project of RSS and Atom utilities and even mentions my year and a half honeymoon in Jamaica as a GRASS consultant. I'm very happy to get some more publicity for Roller and for the book, which will be officiallly complete tomorrow, available in e-book form next week and hopefully printed later this month.
Tags:
Roller
« Previous page | Main | Next page »