The Wolverine release of RSS Bandit has entered its final stretch; the bug count is under 15 from a high of over 50, the codebase is frozen except for critical fixes, and translations have started to trickle in. It is looking like the final version number for Wolverine will be v1.3.0.25 but don't quote me on that just yet.

Torsten and I have started talking about what we'd like to see in the following release, currently codenamed Nightcrawler. Over the next few weeks I'll be sharing some of our thoughts on where we'd like to see RSS Bandit go and eliciting feedback from our users. The first topic I have in mind is building a richer extensibility model. Torsten and Phil have discussed this issue in their blogs in the posts Fighting Ads and  Building a Better Extensibility Model For RSS Bandit respectively. As Phil wrote

Currently, the only plug-in model supported by RSS Bandit is the IBlogExtension interface. This is a very limited interface that allows developers to write a plug-in that adds a menu option to allow the user to manipulate a single feed item.

The ability to interact with the application from such a plug-in is very limited as the interface doesn't define an interface to the application other than a handle. (For info on how to write an IBlogExtension plug-in, see this article.)

Despite the limitations of IBlogExtension, it has led to some interesting plugins such as my plugin for posting links to del.icio.us from RSS Bandit.  This was actually a feature request which I fulfilled without the user having to wait for the next version of RSS Bandit. I'd like to be able to fulfill more complex feature requests without having users wait for the next version. Given the small number of IBlogExtension plugins I've seen come from our user base I'm pretty sure that it is quite likely that a richer plugin model would just end up mostly being used by Phil, Torsten and myself.  However I'd still like to get some feedback from our users about where they'd like to see more extensibility. Below are some of the extensibility points we've discussed along with usage scenarios and possible risks. I'd like to know which ones our users are interested in and would consider writing plugins with.

Feed Preprocessing

Plugins will be able to process RSS items just after they have been downloaded but before they are stored in RSS Bandit's in-memory and on-disk caches. This is basically what Torsten describes in his post Fighting Ads.

Use Case/Scenario: A user can write a plugin that assigns scores to news items according to the user's interests (e.g. a Bayesian filter) then annotates each news item with its score. For example, for me posts containing 'XML' or 'MSN Spaces' would be assigned a score of 5 while every other post could be assigned a score of 3. Then I could create a newspaper style that either grouped posts by their ranking or even filtered out posts that didn't have a certain score.

Another potential use case is pre-processing each news item to filter out ads as Torsten did in his example.  

Risks: My main concern with this approach is that badly written plugins could harm cause problems with the normal functioning of RSS Bandit. For example, if a plugin got stuck in an infinite loop it could hang the entire application since we'd never get back news items from the pre-processing step. Given that this is an instance of the halting problem I know we can't solve it in a general way so I may just have to acept the risks.

Pluggable protocols

Every once in a while, users ask for RSS Bandit to support other data formats and protocols than just RSS & Atom over HTTP. For example, I'd like us to support USENET newsgroups while I've seen a couple of requests that we should be able to support subscribing to POP3 mail boxes.

Ideally here we'd have a plugn infrastructure that allowed one to plugin both the parser and the protocol handler for a given format. The plugin would also specify the URI scheme used by the newly supported format so that RSS Bandit would know to dispatch requests using that plugin

Use Case/Scenario: In the case of USENET support the user would provide a plugin that knew how to parse messages in the RFC 822 format and how to fetch messages using NNTP. The USENET plugin would also register itself as the handler for the nntp and news URI schemes. The user could then subscribe to newsgroups by specifying a URL such as news://news.microsoft.com/microsoft.public.xml in the new feed dialog.  

Risks: Same as with Feed Preprocessing.

Hosted Winforms Applications

A user could add a .NET Winforms application  to RSS Bandit. This application would appear as a tab within the main Window and all its functionality could be used from RSS Bandit. There would also be some hooks for the application to register itself within the RSS Bandit main menu as well as mechanisms to pass information back and forth between the hosted application and RSS Bandit.

Use Case/Scenario: One would be able to host blog posting clients such as IMHO in RSS Bandit. The blog client would be distributed and updated independently of RSS Bandit.

Risks: This would be a great deal of work for questionable pay off.

Pluggable Storage

RSS Bandit currently caches feeds as RSS files on disk, specifically at the location C:\Documents and Settings\[username]\Application Data\RssBandit\Cache. It should be possible to specify other data storage sources and formats such as a relational database or Atom feeds.

Use Case/Scenario: A user can write a plugin that stores all RSS Bandit's feeds in a local Access database so that data mining can be done on the data.

Another use case is writing them to disk but in a different format than RSS. For example, one could write them to disk using the format used by another application so that the user could use both applications but have them share a single feed cache.

Risks: The same as with Feed Preprocessing.


 

Categories: RSS Bandit

March 5, 2005
@ 04:49 PM

Yesterday, in a meeting to hash out some of the details of MSN Spaces API an interesting question came up. So far I've been focused on the technical details of the API (what methods should we have? what protocol should it use? etc) as well as the scheduling impact but completely overlooked a key aspect of building developer platform. I hadn't really started thinking about how we planned to support developers using our API. Will we have a website? A mailing list? Or a newsgroup? How will people file bugs? Do we expect them to navigate to http://spaces.msn.com and use the feedback form?

Besides supporting developers, we will need a site to spread awareness of the existence of the API. After noticing the difference in the media response to the ability to get search results as RSS feeds from MSN Search and the announcement of the Yahoo! Search Developer Network it is clear to me that simply having great functionality and blogging about it isn't enough. To me, getting MSN Search results as RSS feeds gives me at least two things over Yahoo's approach. The first is that developers don't have to register with MSN as they have to with Yahoo! since they need to get application IDs. The second is that since the search results are an RSS feed, they not only can be consumed programmatically but can be consumed by regular users with off the shelf RSS readers. However I saw more buzz about YSDN than about the MSN Search feeds from various corners. I suspect that the lack of "oomph" in the announcement is the cause of this occurence.

Anyway, getting back to how we should support developers who want to use the MSN Spaces APIs, I'd be very interested to hear from developers of blogging tools as to what they'd like to see us do here.

Update: Jeroen van den Bos reminds me that MSN Search RSS feeds are only licensed for personal use. I need to ping the MSN Search folks about that.

Update: Mike Torres points out that both Yahoo (see YSDN FAQ) and Google (see Google API FAQ) have similar restrictions in their terms of use. It would be good to see MSN leading the way here. We've already gone one step better by not requiring developers to register and get application IDs. We should be able to the loosen the terms of use as well.


 

Categories: MSN

In his post Maybe a better posting api is needed  James Robertson writes

I've had harsh words to say about Atom in the past, but that was mostly over the feed format. I haven't looked at the posting API yet - maybe I should. The Blogger API and the MetaqWebLog API are simply nightmares. There doesn't seem to be any standard way for client tools to interact with a server - I was debugging the interaction between a client and my server last night via IRC. Even better - the client was set to use the MetaWebLog api, but was sending requests to blogger.apiNameHere names. Sheesh. There was also an interesting difference in api points - I had implemented 'getUserBlogs', and the client was sending 'getUsersBlogs'. A quick Google search turned up references to both. Sigh.

I implemented both names, pointing to the same method. I had to map blogger names over to MetaWebLog entry points, at least for the tool being tested last night - who knows what oddness will turn up next. What a complete mess...

I've been similarly stunned by the complete and utter mess the state of weblogging APIs is in. As I mentioned in my post What Blog Posting APIs are supported by MSN Spaces? one of my duties at work is to investigate the options and design the blogging API story for MSN Spaces. In doing this, I have discovered all the issues James Robertson brought up and more. Mark Pilgrim has an ApacheCon presentation entitled The Atom API which highlights some of the various issues. One of the lowlights from his presentation is the fact that the MetaWeblog API spec significantly contradicts itself by stating that the data model of structs passed between client and server is based on RSS 2.0 then includes examples of requests and responses that show that it clearly isn't.

My personal favorite bit of information that can only be discovered by trial and error is the existence of the blogger.deletePost method which isn't listed in the Blogger API documentation but is supported by a number of blog posting clients and weblog servers.

I can't believe that anyone who wants to write a client or server that uses the standard weblogging APIs has to go through this crap. It almost makes me want to go join in the atom-protocol discussions. Almost.


 

March 2, 2005
@ 12:40 PM

In the post Another totally obvious factoid Dave Winer writes

Okay, we don't know for a fact that Google is working on an operating system, but the tea leaves are pretty damned clear. Why else would they have hired Microsoft's operating system architect, Mark Lucovsky? Surely not to write a spreadsheet or word processor.

Considering that after working on operating systems Mark Lucovsky went on to become the central mind behind Hailstorm, it isn't clear cut that Google is interested in him for his operating systems knowledge. It will be interesting to see if after pulling of what Microsoft couldn't by getting the public to accept AutoLink when they rejected SmartTags, Google will also get the public to accept their version of Hailstorm.

I can already hear the arguments about how Google's Hailstorm would be just like a beloved butler whose job it was to keep an eye on your wallet, rolodex and schedule so you don't have to worry about them. Positive perception in the market place is a wonderful thing.


 

Categories: Technology

In the article entitled Wonder Why MSN Didn't Think of This?  Mary Jo Foley writes

Or, maybe it has but just has yet to announce it…. On Monday, AOL announced a beta of AIM Sync, a tool that effectively turns Microsoft's Outlook e-mail client into a massive AOL Instant Messaging buddy list.

The implication here is that similar integration of instant messaging presence information does not exist between Outlook and MSN Messenger. This is actually incorrect. This feature exists today in Outlook 2003 and is called the Person Names Smart Tag. Below is a screenshot of my email inbox showing the feature in action.

email inbox shoing mike champion's online status

In fact, this feature is a cause of a common annoyance among users of MSN Messenger and Outlook. Many people have complained that they can't close MSN Messenger if Outlook is running. This is the feature responsible for that behavior. Disabling it removes the dependency between both applications.  

It's good to see yet another of our competitors learning from our innovations.


 

Categories: MSN

March 1, 2005
@ 04:01 PM

The past two months was hectic for me at work but things have started to calm down. It's been great learning about the MSN communications infrastructure and working on the design for our next generation of communications services for end users. Of course, now my extracurricular activities have begun to pile up. Below is a brief list of things I plan to begin and/or complete before the end of the month

I'm sure there is something I've forgotten from this list. Anyway, I am pretty excited about everything on the above list and even moreso about work especially since most of the extracurricular stuff is related to my day job. I guess that turns the Sex & Cash Theory on its head.


 

Categories: Ramblings

Every once in a while I check out the forums on Channel 9 to see what the conversations are happening between Microsoft and its customers. Today I found a post entitled MSNFOUND is so sad... which is in reference to the MSN.:FOUND website. The comments on the site on the Chanel 9 forums seems to be universally negative. Looking a little further, I notice that checking the Bloglines citations for http://www.msnfound.com also results in numerous blog postings about the site whose feedback is primarily negative.

The reasons for this are unsurprising. They were listed in Robert Scoble's blog posting where he lambasted the creators of the site and asked for them to be fired. I agree with most of what Robert wrote in his post. I'd only add one thing, please don't hold this against us. We aren't as stupid as our marketing people make us look.


 

Categories: Life in the B0rg Cube | MSN

For the second time in two months I was contacted by a reporter about my blog. Howard Wen has written an article in InternetWeek entitled Blogging About Work is Risky Business on some of the concerns around blogging and the workplace. I referred him to our PR folks for answers to most of his questions but did have some words to say about what guidelines I use when deciding what to post. From the article

For the employee blogger, finding out what one's company policy is toward blogging would be the first step. If the company doesn't have one, or has one that is not exactly clear about the matter of blogging, it may be best to practice a little paranoia.

"I've had my blog postings appear in such publications as the Wall Street Journal," Microsoft employee Dare Obasanjo says. "So the exhortation to treat blog posts as if they could appear on the cover of a national newspaper is something I keep in mind whenever I write my blog."

Obasanjo keeps two blogs, one on the Microsoft developer network and another on a personal server for non-work-related topics.

I also sent him a link to some of Robert Scoble's blogging guidelines but I guess they didn't make it past editing. My original quote was longer and began with the principle that one should treat one's blog postings as if they were going to appear on the cover of a national newspaper. You never know which one of your posts some reporter or A-list blogger is going to decide to bring to prominence by quoting or linking to it so one should never put anything on their public weblog they wouldn't be comfortable with being read by their friends, family, coworkers as well as thousands of total strangers.

Speaking of reporters, I recently noticed that my blog post on Google Toolbar's AutoLink feature was referenced in the eWeek article Google's Tool Bar Links Stir Debate. Like I said, you never know if or when one of your posts could end up as fodder for a news stories so always think before you post.


 

Categories: Life in the B0rg Cube

As a user of Microsoft products and an employee of the company, I am of two minds about its entrance into the anti-spyware and anti-virus arenas. I agree with the sentiments Michael Gartenburg of Jupiter Research shared in his post Microsoft and Security - Demand if they do and demand if they don't

It's tough to be Microsoft. On one hand, folks insist that security, spyware and virus are issues that they must own. On the other hand, when they do own it and respond, they get dinged for it. Microsoft's decision to get into the business and make these tools available should be lauded. Security is a tough issue that I've written about before and users need to also take on a share of the responsibility of keeping their systems safe. The fact is, even with good solutions on the market, not enough users are protecting their systems and if Microsoft entering the game can help change that, it's a good thing.

Given that spyware is quite likely the most significant problem facing users of Windows I believe that Microsoft has a responsibility to its customers to do something about it. Others may disagree. For example, Robert X. Cringely attacks Microsoft for its recent announcements about getting in the anti-spyware market in his post Killing Us With Kindness: At Microsoft, Even Good Deeds Are Predatory. He writes

How can giving away software tools be bad? Look at how Microsoft is doing it. Their anti-virus and anti-spyware products are aimed solely at users of Windows XP SP2. This has very different effects on both the user base and the software industry. For users, it says that anyone still running Windows 98, ME, or 2000 has two alternatives -- to upgrade to XP/SP2 or to rely on non-Microsoft anti-virus and anti-spyware products. Choosing to upgrade is a 100+ million-unit windfall for Microsoft. That's at least $10 billion in additional revenue of which $9 billion is profit -- all of it coming in the next 12 months.That $10 billion, by the way, comes from you and me, and comes solely because of Microsoft's decision to offer "free" software.

Of course, you can decide not to upgrade to XP/SP2 and rely instead on third-party products to protect your system. But Microsoft has set the de facto price point for such products at zero, zilch, nada. By doing this, they have transferred their entire support obligation for these old products to companies like Symantec and Network Associates without transferring to those companies any revenue stream to make it worth their trouble. Maybe Peter Norton will say, "Screw this, I'm not going to support all these millions of people for nothing." Well, that's Symantec (not Microsoft) apparently forcing users into the same upgrade from which Microsoft (not Symantec) gains all the revenue.
...
Look how this decision transforms Microsoft. By choosing to no longer support a long list of products (is that even legal?), hundreds and perhaps thousands of developers will be switching to new duties. If this were any other company, I would predict layoffs, but a key strategy for Microsoft is hiring the best people simply to keep them from working elsewhere, so I don't think layoffs are likely. What IS likely is an exodus of voluntary departures. What's also likely is that those hundreds or thousands of reassigned developers will be moved to some other doomsday product -- something else for us to eagerly anticipate or fear.

Cringely seems to be confusing supporting old versions of Windows with providing applications that run on current versions of Windows. Windows 98, Windows 98 SE and Windows Millenium are old versions of Windows whose support life cycle was supposed to end about a year ago but was extended by Microsoft. At the current time, Microsoft will continue to provide critical security updates for these operating systems but new applications won't be targetting them but instead will target the current version of Windows for the desktop which is Windows XP.

Microsoft's anti-spyware and anti-virus applications are not an operating system upgrade but instead new applications targetting the current versions of Windows. Even if they were, Windows 98, Windows SE and Windows Millenium are past the stage in their support life cycle where they'd be eligible for such upgrades anyway. Given that Robert X. Cringely is quite familiar with the ways of the software industry I'm surprised that he expects a vendor of shrinkwrapped software to be providing new features to seven year old versions of their software when current versions exist. This practice is extremely uncommon in the software industry. I personally have never heard of such an instance by any company.


 

While playing Magic:The Gathering with Michael Brundage and a bunch of former co-workers last week he informed me that he had updated his Working At Microsoft essay given some comments and feedback he had seen. Some excerpts from the additions to his essay are included below

Unreality

As a parent, I've come to understand that there's a wide gray area between overprotecting your children and creating a nuturing environment in which they can develop. I think Microsoft struggles with a similar problem with its employees. Microsoft provides its employees with a nuturing environment in which they can be most productive. But like children, these employees also need to be grounded in reality and exposed to ideas that can be disruptive or even disturbing. Otherwise a sheltered monoculture can develop that's unhealthy for everyone involved.

It's hard for people who don't work at Microsoft's main campus to understand just how unreal the experience of working there can become. Some employees forget that most of the world doesn't have broadband wireless networking, high-end consumer electronics, luxury vehicles, and enough money that they don't need to live on a budget. Some employees spend so much time using Microsoft products, that they forget about the competition and/or lose touch with typical customers' needs

...

Microsoft's Not Evil

The reality is that Microsoft is made up of mostly honest, earnest, hardworking people. People with families. People with hardships. People with ordinary and extraordinary lives. People who make wise and foolish decisions. Some employees are bad apples, and some leaders make poor decisions (which their employees may or may not support). Both usually meet with failure. All the Microsoft employees I know are internally driven to "succeed," where success sometimes means outselling the competition but always means doing your personal best and improving people's lives with your work.

Although groups don't have intentions, it's true that group policies reward some kinds of behavior over others. So perhaps "Microsoft is evil" is shorthand for "Microsoft's policies are evil."

The thing is, I haven't seen any evidence of that on the inside and I'm usually very critical of these things. For as long as I've worked at Microsoft, ethics have been a real part of employee performance reviews. It's not just talk, but the way work goes each day. Most product designs revolve around addressing specific customer needs. No one ever says "Hey, let's go ruin company P" or other things that could be construed as "evil." Instead, it's "customers Q and R are having trouble with this, and I have an idea how we could fix it..." and other positive, constructive statements.

If anything, Microsoft seems to have the opposite problem, in which employees sometimes design or cut a feature or product without fully appreciating the huge impact their decision can have outside the company. When the media goes wild with knee-jerk reactions for or against something Microsoft did, often the employees responsible for the decision are caught off-guard by the disproportionate public attention.

I came to similar conclusions about Microsoft employees a year or two ago. The main problem with Microsoft employees is not that they are out to 'cut of the air supply' of their competitors. Instead it is that they often make decisions without awareness of the impact their decisions will have on the software industry as a whole. I have often been surprised to realize that some program manager for some new feature or component in some Microsoft product has failed to realize that the entrance of Microsoft in that space could potentially put partners or competitors out of business. This isn't to say that the execs don't realize that Microsoft entering markets usually decimates competition but that a lot of the rank and file guys implementing these decisions or coming up with some of these ideas often don't realize the impact of their actions.

One of the reasons I like working at MSN is that we aren't under any illusions about these issues. We aren't "adding a new feature to Visual Studio to make developers more productive" or "adding some new functionality to Windows to make it more useful for end users" which also happens to have been a thriving ISV market until we decided to enter it. Instead we are directly competing with folks like Yahoo, Google or AOL for a particular market. This situation definitely sits a lot better with me.


 

Categories: Life in the B0rg Cube