For my second not-bad WinFS scenario, I’m going to again avoid anything that requires a bunch of new work entering or editing meta-data. We’ll get to those eventually, but I want to emphasize that WinFS can be useful without requiring the average user to suddenly become a meta-data freak.
In my job as evangelist, I’m responsible for a lot of events. Sometimes they’re bigger, like getting 150 people together for a design review. Sometimes they’re smaller, like the panels at PDC. Or maybe it’s something as relatively simple as getting a few program managers together to go brief a customer on Longhorn.
There are also event organization tasks that come up outside of work. Two years ago, I became the CTO for the Mazner-Emmerman wedding, which seemed like a full-time job some days – invite lists, thank-you cards, seating charts, the works. Over the summer, my wife and I are planning a vacation with a few of her high school friends – that means coordinating calendars, picking a house to rent, lining up some activities while we’re there, etc. We’re also doing some work on the front porch of our house – emails with the architect, emails from the contractor, floor plans, bills and more.
What all these events have in common is that I am responsible for keeping track of them. The relevant information I have to track includes:
- People involved in the event
- Date, time, duration and location of the event
- Discussions about all of the above
Where do I track all this information today:
- People: I might look up people in the corporate CRM database if I need to invite customers, in the Microsoft directory if I’m inviting employees, or in my Outlook or Hotmail contacts if I’m inviting friends. If there are a lot of people and I need to track RSVPs, I end up with a spreadsheet of names and status.
- Date/time: I store this in Outlook for my own tracking. If not too many other people are involved, I’ll send out a schedule request from Outlook so that they can have it in their calendars as well, plus I can track responses. If there are more than 25 people involved, I post the event to a calendar on the Microsoft intranet, or for customers, on an extranet or public web page (and then everyone else has to copy that info to their own calendar).
- Agenda: Usually a text document or spreadsheet, which I might save on a file share, or maybe post to a web site
- Presentations: Powerpoint, of course. A bigger event will have multiple presentations authored by multiple people, so we create a dedicated file share or Sharepoint library for them
- Tasks: Maybe in Outlook, maybe in Sharepoint, or maybe in a Project file if the set of tasks is complex enough
- Discussions: email. Lots and lots of email.
So as you can see, the information for any given event is spread all over the place, which means I can’t really keep track of it all. If I want to see the invite list and RSVP status, I’m either in Outlook (if I’m lucky) or off to some file share to find the spreadsheet. If I want to see some information about an invitee (their phone number, or who their account manager is), it’s off to the directory or CRM system to look it up. If I want to know what presentations have been approved for use, I crawl through email to find the one message from my general manager where he says the presentation is ready. If I want to see the actual presentation, it’s back to a file share or Sharepoint.
What I really want is a way to corral all these related items together, stick them in a big bucket with a label that says what event they’re for. I want a simple UI where I can see what events are coming up, then browse through all the related material for each one, and maybe be able to answer some simple questions: how many presentations for this event are in the Approved state? How many attendees have declined the invitation?
I’ll assert that this is really, really hard to do today. Outlook wizards would probably argue that you could do this with some series of catagories, public folders, and shared calendars. SharePoint gurus would say this is exactly what a Meeting Workspace is for. Old school event planners might claim you could track this all in a nice big spreadsheet with multiple pages and links out to file locations.
Yeah, with enough work, you could meet my needs with one of these models, but it would just be so unnatural. When I get email, I want to manage and store it in my email application, Outlook. I don’t want to have to copy every email up to a Sharepoint server and figure out which doc library it should live in. When I’m working with files, I want them somewhere that’s easy to access from Word’s File Open dialog, not off in some crazy Exchange Public Folder. I like keeping track of my contacts in Outlook, not in a bunch of columns in a spreadsheet. Maybe you’d argue that you could leverage the Outlook, or CDO (or even MAPI, if you’re a masochist) API to extract a lot of this information into a new app. Okay, fine. But now make it work if I’m using Lotus Notes as my PIM. Or Hotmail. Or AOL Communicator.
The solution I want will let me continue to edit each type of content in the application that’s best suited to the job, and with which I’m familiar. I’m okay with a separate app that I use to manage the overall project, but when I find a presentation, I want it to open in PowerPoint, where I should be able to edit and save without having to do anything special.
What does WinFS provide that will help?
- A common storage engine, one unified namespace for storage of any application data on your machine. Whether I use Outlook, AOL Communicator, or Notes, my emails can all be stored in WinFS. (Yes, I understand that new versions of these apps will have to built…encouraging that is my job as evangelist.)
- A set of common schemas, so that an email is an email is an email, no matter what app created it, and it always has a To:, From: and Subject: that I can access through the same API.
- A data model that supports relationships, so that my event management app can specify “this email from Bill is related to the Longhorn Design Review event, as is this calendar appointment for next month”
- A data model that supports extensions and meta-data on relationships, so that I not only say “this contact Jon is associated with this Design Review event”, but also “Jon is a speaker at this event” and “Jon is the author of this deck that he’ll present” and “Jon has not yet confirmed attendance at the party afterwards.”
- Win32 file system access, so that even though files are stored in WinFS, applications can still get to their streams via a Win32 path
My dream app would have a left pane with a list of events. When I clicked on an event, the right pane would open up to show me all the documents, people, events, tasks, email, etc, associated with that event. When I had new content to add, I could just drag and drop it onto the event – it wouldn’t copy it, but simply create a new relationship to it.
If you saw the CaseBuilder demo in the PDC keynotes, you have some idea of what I’m getting at here. If you didn’t see CaseBuilder, I have a video of it that I’m going to try to get posted somewhere publicly soon.
So, not the simplest of scenarios to explain, but I hope I did an okay job, and that you agree it would be useful – without requiring people to add a ton of new meta-data. The kinds of meta-data I need to know – “contact Jon is invited to event Design Review” is information I already have to enter and track today, whether in an Outlook meeting request or in some spreadsheet column.