What a week


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

Comments (16)

  1. Vince Averello says:

    I’m one of the Outlook MVPs and I was curious how mail items & such fit into WinFS. Does Beta 1 work with the current (Outlook 2003) version of Outlook or do you need the Office 12 release?

  2. Kazi says:

    Indeed, an Outlook plug-in would be a nice feature. It would help a lot for spreading WinFS. I think, it’s not impossible, because if I open the "Mail" Control Panel applet "Data Files" section, it asks for Outlook storage type. There should be a new Outlook storage plugin which stores data in WinFS directly. Is this possible?

  3. Miguel Gago says:

    I guess Windows Explorer will be replaced by a Relational Explorer similar to a Pivot Table?

  4. Ben Winzenz says:

    I’ve downloaded and installed WinFS, but I’m having a lot of trouble trying to figure out what, if anything, can currently take advantage of it. Maybe I need to go back and watch the entire video on Channel 9, but there isn’t much in the way of documentation of what WinFS can be used for currently. I’m not sure how I can beta test something when I don’t know how to use it. Any help here?

  5. Murray says:

    Looking at the Beta 1 docs it only describes a managed API for programming WinFS. Will an unmanaged API be provided when WinFS officially ships? As an ISV, a managed API is not enough. We have huge applications built in C++ for Windows and they will never be ported to the CLR, there is just no value in doing that. I imagine most MS applications are in the same boat, since Outlook is not a CLR based application, how will it interact with WinFS?

  6. I’ve seen a bit of the WinFS demo video, but I’m still not sure of what I’m seeing. Let me ask you this. With WinFS, could I create a a query that would look at my Microsoft Great Plains SQL Server database and tell who I need to call because their payment is due? Or tell me what employees are due for their performance reviews?

  7. With WinFS could I do a query that would look at my Microsoft Great Plains SQL Server database and give me a list of customers to call for payment each day?

  8. Eirik Hoem says:

    I’ve just started to get my hands dirty here. Seems like it’s really awesome. Been spending the day getting to know schema development and trying to combine WinFS with Avalon.

    Got one quick question:

    I’ve made a few new schemas for some types, which has Store.Item as a base type. When I explore the WinFS Share all the items I’ve created with the new schemas has System.Store as types. Is there anything special I have to do to get that right?

  9. Karl says:

    Just becuase its a managed API, doesn’t mean it can’t be used with unmanaged code. COM interop has always been there for the .NET framework.

  10. RameshN says:

    Some quick responses:

    Ben,

    I would recommend checking out the Unsupported tools that come as part of the WinFS install for a flavour of the sorts of applications that take advantage of WinFS has to offer.

    Murray,

    We will support Managed C++ and recommend using that option if you have an unmanaged application that wants to program against WinFS.

    Ted,

    The scenarios that Shishir describes enable new ways of looking at data as WinFS provides a central store for application data and provide a rich and simple API. If you have specific data in a Great Plains SQL server database you could sync the data into WinFS and easily enable scenarios such as listing customers to call for payment each day.

    Thanks,

    Ramesh Nagarajan [MSFT]

  11. Sean Adams says:

    Hi there,

    Firstly, let me say that I’m very excited about WinFS and the fact that it creates a whole span of new and exciting opportunities for applications, which were previously very difficult.

    Here are some examples:

    Music – Currently, in order to create an application to work with your music files (assuming you don’t make calls to Windows Media APIs), you need to do binary-hacks to figure out where the meta-data is stored (i.e. artist, title, etc). If this meta-data for each file is stored on the file then:

    – a) in a winFS world, you could slice your music in any ordering that you like (by artist, by song or By artist by Album)

    – b) you can access the meta-data at the file-system level in a consistent way (without knowing the detail about how .mp3 files store their meta-data compared to .wma)

    Sync

    Remote laptop users always have a somewhat dangerous situation in that they have a laptop which can be lost and/or damaged. There are synchronisation solutions within windows for these now, but the WinFS world should make this very simple to implement with 1 or 2 lines of code. This is also the case with any application that has to be able to work offline – for developers, this allows a whole raft of new solutions.

    Family Pictures:

    Many people have dozens of family photos on their computers – so many in fact that they’ll never find them again. If one could put the meta-data about the photos actually onto the files (data about who’s in the photo, when it was taken, and the place), then you could easily do a search for all the photos of your child over time (see them grow). This would just be insanely difficult without WinFS. It becomes even more powerful when you could switch from this view to looking for "All photos and home-video from Austria" if a friend of yours is looking to go on holiday soon and wanted to see your Austria holiday.

    It would take discipline to enter this data, but once it’s in, the power is provided by WinFS.

    Outlook now manages native file-system objects

    If all outlook objects become native file-system objects, then it makes it easier for other applications to search across the entire data-store – where previously this was partially ring-fenced within Outlook. This allows for a simple scenario like:

    – a web administrator sees wants to check for all administration calls which are not closed for users who’s folders are above the allowed maximum size (simple join). Here, the same technology can be used for administering a file-system as an outlook mailbox.

    Other ideas:

    an administrator wants to take a simple list of all files in a location, and see what’s in there (i.e. big text files, .mp3 files, etc). At present, you have to do a whole song-and-dance with recursive listings of files, and then put them into a database (or excel) and do the slice-and-dice yourself. Now this can be done within the OS natively.

    – Duplicate searches. This really is non-trivial at the moment, and it’s quite tedious – in the WinFS world, one could do a quick query to see if there are duplicate objects on a disk, and list them.

    Auto-update:

    The Windows-update service may be FAR easier to implement now, since the check for updates will be a simple query.

    2 Questions for the Team:

    If WinFS treats a person as a native object, then is a new Person object created every time an e-mail is received from a new recipient? (this may be more of a question for the Outlook gang). The same question does apply though for all items which relate to a person.

    Is the synchronisation technology exposed to the average windows user through the explorer, or is it hidden in APIs (for example, in the future view of Windows, could my mom (have a machine running on WinFS) right-click on one folder and say "set up synchronisation with this other folder" – for example, every time I get home in the evenings, synchronise my work-laptop with the home server?)

    Gang, this is a great development – it’s one of those low-glory pieces of infrastructure that really doesn’t have much in the way of bells and whistles for the average user – but it’s an enabler for a step-change in capability in the Windows platform which really is probably one of the most exciting developents to come from MS on Windows in ages.

    Great going!

    Cheers

    Sean

  12. Alex James says:

    Shishir,

    Question for you? You mention one of the main aims of the new* WINFS is a more flexible mapping layer and query services.

    The begs a key question, will the data be OWNED by WinFS or can a schema be registered that makes new data available to WinFS from an existing database, without needing to import a copy of that data into the WinFS database?

  13. Sean Adams says:

    Hey there gang,

    Wouldn’t it be great for the WinFS team to host a site where developers could write applications to showcase WinFS, and post them on this site.

    It wouldn’t have to be massively complex – in fact sourceforge has most of the tech that you need – but this would be a great way for people to show-off their work, for you guys to get great ideas of some novel applications of the tech that you may not have thought of and for the community as a whole to get really excited about the capabilities of WinFS.

    Hope this will turn out to be possible

    Cheers

    Sean

  14. Tim Shea [MSFT] says:

    Sean, you make some great observations. Let me take a stab at some of your questions.

    Concerning your questions about creating a new Person when an email is received; that would not necessarily be the case. WinFS supports a concept of "common values" type relationships between objects. For example, the email might include the address of the sender as a property, but it would not be required – or necessarily wrong – to create a Person-type object to "own" that address. Those types of decisions would be up to the application writing to the store.

    Check out the unsupported Rave application if you have not already, it is a good example of what sort of synchronization tools might be built upon WinFS.

    There are already places you can share your WinFS applications, such as http://www.gotdotnet.com/. You can use MSN search (http://search.msn.com) to find more.

    I’m glad you’re enthusiastic about the project, be sure to keep us posted on your discoveries! We really do read all the feedback, it does matter to us.

    Tim Shea [WinFS]

  15. Sachin Modak says:

    Shishir,

    Firstly let me say that your presentation at PDC was awesome. I installed WinFS. I found StorSpy included, have you guys also included LifeJournal along with WinFS. If not is there a place from where i an get it?

    Secondly, when file access and logical access api’s for files within Stor are going to be made available.

    Thanks

    Sachin.

  16. Yichin.Tu says:

    Hi Shishir,

    Wonderful job!

    I met the Mary and had a short talk.

    Please continue taking care of her Computer.

    Thanks,

    Yi-Chin Tu (Ethan)