Wow, what a week. I find it hard to describe the feeling that we've been having on the WinFS team this week. It's almost like we've all been keeping a great secret that we're just dying to share, and now we finally can.
For those of you that didn't get a chance to check out the channel 9 video yet, I'm Shishir Mehrotra and I run the product planning team for WinFS. My job basically splits into 3 parts: doing forward-looking research for where WinFS should be heading, working with partners to help them understand and build on WinFS, and managing the team that builds a lot of the cool WinFS demo apps. In terms of demo apps, we had a couple of them (LifeJournal and StoreSpy) featured in the Channel9 video, and I have some neat surprises up my sleeve for apps we're going to show at PDC. If you want to see the surprises, don't miss my PDC talk. :-)
Ok enough of the shameless plug, let's return to WinFS. So why are we psyched about WinFS? Is it the technical thrill? Sure that's some of it - there really is some incredible work going into creating WinFS. But for me personally, I get most excited by the potential for brand new applications enabled by this relational filesystem.
A couple weeks back, I was sitting down with one of the Microsoft recruiters (Mary) and she was showing me her computer. I was amazed. See, Mary's problem is that she can have days where she has 5 candidates on campus simultaneously in different interview loops that consist of 6+ interviewers each. She also has a long list of candidates that are coming for loops in the next week, all of which require immediate attention. So the net of it is: Mary's mailbox is a nightmare. Throughout the day, she’s getting bombarded by email. She'll get a mail that a candidate missed his interview shuttle and needs to be picked up. Or a candidate got lost and wandered into BillG's office accidentally. So all day long, she sits at her computer and adds followup flags to her mail, just trying to stay one step ahead of the onslaught.
Enter WinFS. Now she goes into her recruiting app and builds a query. She calls it "candidates that are interviewing today". She comes back to her email, and selects "mail related to <people>” and selects “candidates that are interviewing today" as <people>. She sets her mail app to color that set of messages bright red. And that's it. Each day, the list of "candidates that are interviewing today" gets automatically adjusted, and the right messages in her email are now marked red. And the best part is that the mail app and the recruiting app don’t need to know about each other – they just store items and queries in the filesystem and the other app picks them up and uses them.
So what's WinFS enabling here? Let's work backwards through the scenario. First, the ability to build that query - "mail related to candidates that are interviewing today" - is only enabled by the fact that WinFS has a real query processor. That's not a full-text, keyword search, but one that requires at least two joins between "tables", and requires knowing what “today” means. That's cool, but a query processor needs to know about relationships in order to be effective. So that's the second piece, WinFS has an information model that supports expressing relationships. In this case, there are two important relationships: one between a candidate and an interview loop, and one between a person and an email message. Great, but how does all this data get into my filesystem and get shared between these two apps? That's our third piece - WinFS allows applications to store data that is much richer than just files. I know, that's confusing - a file system that stores more than files? But yes, it's a relational filesystem, so in addition to storing files, WinFS allows you to define new "item types" that aren't files at all. So in this example, all four of the main item types - mail, contacts, interview loops, and queries - are non-file item types.
But the main point (saving the best for last) is the fourth piece: WinFS is a platform. At the heart, it’s a database engine providing a way to model relationships and store non-file data, making it a great data store for applications. That means that you can take your existing filesystem concepts and build them on a platform that offers you so much more.
Hopefully you're as excited about scenarios like that as I am. A big portion of my job is trying to predict the new applications that folks will build on WinFS. Thankfully, since Beta 1 is now released, I can start to hear your ideas directly! So don’t be shy… who’s got the best idea for an application using WinFS?
Author: Shishir Mehrotra