One thing Microsoft gets is Platforms. Just about everything they do is a platform. Not for them the quick app. Oh no. It has to be extensible.
I'm writing this in Windows Live Writer. It supports plugins. Each Office application supports addins and both internal and external scripting. Explorer is built entirely out of extensions, as is Visual Studio.
Windows Desktop Search is one such platform. Not only is it a rather smashing search engine (and the evolution of the indexing service found way back in Windows NT 4) but it's also incredibly extensible.
There are three and a half ways of extending WDS. Firstly, you can create a COM object that implements the IFilter interface. This is how WDS can understand and index different file formats. And, if the item to be indexed isn't a file on a file system, you can create an object that implements ISearchProtocol and it's related interfaces. And finally, you can implement a preview for your file type.
(The half that's left over is a really interesting one, and something I intend to write up at some point - WDS will use any property handlers you have associated with a file type. This is something that is seriously under-documented (look for the line marked metadata handler), and looks like it's changed drastically under Vista.)
Now, I've got a plan. For a while now, I've wanted to change my feed reader from Sharpreader to, well, just about anything else to be honest (but that's for another post). IE7 came along with the Windows Feed Platform (another platform - see what I mean?) and so I've been meaning to migrate my feeds over here. This will happen in due course, but this and WDS together got me thinking - and not just me, either. Brandon LeBlanc asked the question I thought of, as did some unnamed wiki editor.
I'm going to try and write a search protocol for IE7's RSS feed platform, and just to make it more fun, I intend to blog each step in the process. We'll start at the very beginning - getting the project setup and figuring out where the documentation is.