WinFS: Difference between revisions

From BetaArchive Wiki
(put it in the end and remove <references/>, appears to cause a wrap problem)
Line 1,192: Line 1,192:


However, since WinFS development went dark, the status of Project "Orange" is unknown.
However, since WinFS development went dark, the status of Project "Orange" is unknown.
== References ==
<references />


==External links==
==External links==
Line 1,289: Line 1,286:
* [https://superuser.com/questions/11346/what-happened-to-winfs filesystems - What happened to WinFS? - Super User]
* [https://superuser.com/questions/11346/what-happened-to-winfs filesystems - What happened to WinFS? - Super User]
* [https://news.ycombinator.com/item?id=7875847 Who Needs Git When You Got ZFS? (2013) | Hacker News], with discussion on WinFS
* [https://news.ycombinator.com/item?id=7875847 Who Needs Git When You Got ZFS? (2013) | Hacker News], with discussion on WinFS
== References ==


[[Category:Applications]]
[[Category:Applications]]
[[Category:Canceled Projects]]
[[Category:Canceled Projects]]
[[Category:Microsoft Windows]]
[[Category:Microsoft Windows]]

Revision as of 18:48, 10 April 2021

WinFS Beta 1 logo

WinFS (short for Windows File System[1] or Windows Future Storage[2]) was a canceled[3] storage subsystem that allowed users to search for items based on their metadata, regardless of the item's type of file and the application in which it was created. This in turn would make searching for content independent of format easier.[4]

WinFS was billed as one of the pillars of Windows Longhorn.[5][6][7][8] However, Microsoft announced on 27 August 2004 that WinFS would be in beta testing when Longhorn becomes available, and would be delivered after the Longhorn release.[9] On 29 August 2005, Microsoft (through Vijau Bangaru, a Program Manager on the WinFS product team) announced the release of WinFS Beta 1 for Windows XP Service Pack 2. Regular beta and CTP releases were planned.[10]

On 23 June 2006, Microsoft (through Quentin Clark, who ran the Program Management Team for WinFS)[11] announced that there would no longer be a separate WinFS release.[12] Instead, some of its parts were included in ADO.NET and Microsoft SQL Server.[12][13][14]

WinFS was based on SQL Server 2005, ran on top of NTFS, and used metadata of files to improve organizing, searching and sharing of information.[15] It also stored structured data such as contacts and calendars. WinFS replaced the traditional file system hierarchy of files and folders[16] with items (either based on files or not, such as contacts and e-mails) and associations (relationships between items).[17]

Development

WinFS is ultimately traceable to the Object File System (OFS), an integrated store,[18] a data store, for storing document files, spreadsheets, multimedia files and other information[19] which Microsoft planned to be part of Microsoft Cairo.[19][20][21] The idea behind OFS "was to make sense out of all the bytes of data in the filesystem in a human readable and searchable way, organized as a collection of objects with properties all part of a strongly typed schema."[21] OFS was a relational file system, "which would help manage local and distributed objects using an active storage paradigm" and "would have removed the need to understand where data resided", both locally and remotely.[20] One build of Cairo, 1175.1, allowed OFS partitions (see screenshot). However, it is not clear if the features described for OFS are present. Instead, OFS, as implemented in build 1175.1, appeared to be a predecessor of the Content Indexer (now the Indexing Service)[22] and Active Directory.[22][23]

Cairo fell apart in the mid-1990s.[20] On March 1996, Microsoft said that work on OFS for a future release of Windows NT had been abandoned in favor of a file system based on its Exchange Server. The file system work was abandoned because of complexity, market forces and internal bickering.[19]

OFS merged into Storage+, which Paul Thurrott wrote, Microsoft would turn its attention to after Windows 2000 ships. Storage+ would replace the NTFS file system and with a relational, object-oriented file system based on SQL Server 8.0, turning the file system into a relational database, speeding searches and providing a higher level of granularity for those searches[24] Storage+ later became the Relational File System, which Microsoft intended to but failed to ship with SQL Server 2000.[20]

Storage+ (at this point "a new SQL Server .NET-based file system") was then slated for Blackcomb, but by 2002, Thurrott verified that it would ship with Longhorn.[25] CNET News.com reported, "We're going to have to redo the Windows shell; we're going to have to redo Office, and Outlook particularly, to take advantage" of the new data store, Microsoft CEO Steve Ballmer said in a recent interview with CNET News.com. "We're working hard on it. It's tough stuff."[19] Jim Allchin, the group vice president in charge of Windows development, said, "bringing the plan back now makes sense because new technologies such as XML (Extensible Markup Language) will make it much easier to put in place. XML is already a standard for exchanging information between programs and a cornerstone of Microsoft's Web services effort, which is still under development. Longhorn and the new data store are the "next frontier" of software design, Allchin said. In addition, Microsoft has already developed the database technology it needs for a new file system. A future release of its SQL Server database, code-named Yukon, is being designed to store and manage both standard business data, such as columns of numbers and letters, and unstructured data, such as images."[19]

By 2003, Storage+ was called WinFS, would include technology from SQL Server "Yukon" (SQL Server 2005)[26], and would not be a file system but a service on top of NTFS.[27]

During PDC 2003, Bill Gates described WinFS as a "Holy Grail":

WinFS, this is unified storage. Some of you here have heard me talk about unified storage for more than a decade. The idea of taking the XML flexibility database technology and getting it into the file system, that's been a Holy Grail for me for quite some time, and here it is thank goodness. We've got the powerful systems to be able to do this. Thank goodness, we have the evolution around XML and user interface capabilities, so that this this can all come together.

— Bill Gates, PDC 2003 Keynote with Bill Gates, [28]

Bill Gates had earlier described OFS as a "Holy Grail" in his PDC 1996 keynote.[29]

In his PDC 2003 presentation, Quentin Clark, director of program management, WinFS, explained:

WinFS is...

  • All end-to-end data lives in Longhorn
  • New user experience in the Longhorn shell
  • A trustworthy place to store data
  • Data model built on relational database technology
  • File system capabilities built on NTFS
  • Everyday info - domain specific schemas - Longhorn will come with set of schemas Services that make data interactive

WinFS is not...

  • Abandoning legacy applications
  • Forcing the world to rewrite everything
  • Complete yet
    • PDC is good preview of model, feedback welcome
    • Fundamental model complete for Beta 1
    • Platform and UE complete in Beta 2
  • Just a database - MS has set of relational assets, WinFS is pulling techs from NTFS, SP, and CLR too

— Paul Thurrott, Keith Furman, Live from PDC 2003: Day 2, Tuesday, [30]

This WinFS schema diagram dates from PDC 2003.

On 19 April 2004, BusinessWeek reported that Microsoft would scale back WinFS to provide document indexing only on the local system and not over a network.[31][32]

On 13 May 2004, it was reported that Bob Muglia, the senior vice president in charge of Windows server development told CNET News.com, "some of the functionality of WinFS and some of the scenarios may be limited in terms of what it can do. I don't know that we will have all of the scale to the level where we would like to have it, so that you could use it for very high-volume enterprise servers," and, ""So it could be that for example, you could use WinFS as a server for collaboration in workgroups. But if you want to support hundreds of users, that may wait for the update release."[33]

On 27 August 2004, Microsoft announced that WinFS would be in beta testing when Longhorn becomes available, and would be delivered after the Longhorn release.[9] This meant that WinFS would be removed from Longhorn and would ship at a later date.[20] Thurott wrote, "The removal of WinFS, however, had wrecked havoc with a number of product groups. The next version of Outlook Express (now called Windows Mail) and Contacts were originally being built around WinFS and had to be rearchitected. Internet Explorer was using it for storing history and Favorites. Even Office 12 was building on WinFS. All of that work--and more---needed to be rethought."[32]

A report from 10 December 2004 quoted Muglia as saying that WinFS would neither be in Longhorn nor in Longhorn Server. Muglia also said, "Our mistake, frankly--and it was a mistake--was to go out and talk about it before we really had clarity as to how we would be able to deliver it and all the complexities there." He then described WinFS: "This isn't a relational database"; "This is a brand-new data model, and it satisfies a whole class of applications that frankly have been unsatisfied from a data model perspective since the beginning of history. We've been working on things like this for a long time."[34]

On 29 August 2005, Microsoft quietly[20] made WinFS Beta 1 available to MSDN subscribers, but announced it officially through the WinFS Team Blog.[10][11] Beta 1 required Windows XP Service Pack 2,[10][11] and .NET Framework 2.0.50215.322.[20] The WinFS API was included in the System.Storage namespace.[35]

During PDC 2005, Microsoft released a video presentation, named "IWish",[36] showing how applications would advantage of a unified type system. The concepts shown in the video ranged from applications using the relationships of items to dynamically offer filtering options to applications grouping multiple related data types and rendering them in a unified presentation. Steve De Mar, the Product Designer for the WinFS team, explained the goals of IWish:

Our goal was to peak the curiosity of you, the developers, to get you thinking about what could really be built on WinFS. We wanted you to see how WinFS enables a totally new class of user experiences. The UIs in the video are all based on some of the great prototype applications that have already been developed for the WinFS platform. Although we cast them in a more futuristic visual “theme” to fit the style of the video, the functionality we showed exists in the prototypes that either we’ve developed in house or we’ve seen others develop on WinFS. A number of these were demo’d at the PDC, and we've more on the way which you should be hearing about shortly.

We hope the video inspires you to bring to life cool new innovative applications for WinFS![37]

In addition, during PDC 2005, Shishir Mehrota of WinFS Product Planning gave an overview of WinFS,[38][39] Program Manager Ramesh Nagarajan gave a presentation on "“WinFS” Future Directions: Building Data-Centric Applications Using Windows Presentation Foundation “Avalon” and Windows Forms",[40] (for which he built a simple Windows Presentation Foundation application that showed off how a richer document viewing experience could be built on top of WinFS)[41] and Samuel Drucker, Development Manager, gave a presentation on WinFS and ADO.NET (on how ADO.NET is evolving to incorporate some of the WinFS aspects)[42] and WinFS Programming with LINQ.[43]

Beta 1 Refresh was released to MSDN subscribers on 1 December 2005 to be compatible with the final release of .NET Framework 2.0.[44]

Four WinFS sessions were planned for Tech Ed 2006.[45] Roger Lueder gave a talk on "Building on WinFS: Developing a Great WinFS App from Scratch".[46]

Beta 2 was planned for some time later in 2006,[45] and would have been integrated with Windows Desktop Search, so that the latter could display both WinFS and non-WinFS files.[47]

But on 23 June 2006, Quentin Clark announced through the WinFS Team Blog, "With most of our effort now working towards productizing mature aspects of the WinFS project into SQL and ADO.NET, we do not need to deliver a separate WinFS offering."[12]

Many of the principal features Microsoft intended to provide with WinFS included a pane for metadata property editing, breadcrumb-based property navigation, filtering or stacking items over properties, incremental search, and saved searches;[1] these features were incorporated in Windows Vista.[48] Query composition, a WinFS feature that allowed users to perform additional searches that reuse the results of a previous query,[49] was later incorporated in Windows Vista.[50]

Examples of uses of the technology are the object-relational mapping components into ADO.NET Entity Framework; support for unstructured data, adminless mode of operation, support for file system objects via the FILESTREAM data type[51], and hierarchical data in SQL Server 2008, then codenamed Katmai, as well as integration with Win32 APIs and Windows Shell and support for traversal of hierarchies by traversing relationships into later releases of Microsoft SQL Server[14] and the synchronization components into Microsoft Sync Framework.[14]

In 2013, Bill Gates cited WinFS as his greatest disappointment at Microsoft:

We had a rich database as the client/cloud store that was part of a Windows release that was before its time. This is an idea that will [re-emerge] since your cloud store will be rich with schema rather than just a bunch of files and the client will be a partial replica of it with rich schema understanding.[52]

Limitations of traditional file systems

Traditional file systems, including NTFS which is used in modern versions of Microsoft Windows, store data only as a stream of bytes packed in a file. The Microsoft WinFS SDK Beta 1 Documentation explained the limitations of this approach:

In a file system, data is stored as one or more byte streams packed in a file. This flat data structure does not make the information easily identifiable. The only viable way to identify it is to use the file name and its directory path, that is, a folder hierarchy. Although a file may contain many kinds of information, it is the smallest unit of data that can be moved around and operated on. For example, to read a paragraph of a document, you need to retrieve the entire file and open it in a document viewer.[53]

As Richard Grimes explained:

The perennial problem with data is that you always have too much of it and it is always too difficult to find what you want. This problem will get far worse in the near future when typical machines will have hard disks measured in terabytes. The bigger the hard disk, the more data you will want to store, and the more difficult it will be to find a particular item. Finding a piece of data depends on identifying the specific item, which means that the item has to be categorized.

For example, imagine that you have several thousand digital photographs. Typically, your camera and desktop software will catalog this data by naming the photos in sequence and maybe place these in a folder according to the date that the photos were taken. Searching for a particular photo in this scheme involves remembering the date and photo number. If you do not know either of these things, you will have to resort to looking through thumbnails of the photos. Of course, if you have the patience, you could name each photograph as you download it to your desktop. A coarse-grained system, like the file and folder system in Win32®, is not flexible enough to allow you to store all the data you need.

Desktop software may fill this gap, allowing you to build a catalog that stores other descriptive properties like camera settings, light condition, and a general description of each picture. Such software, of course, is an implementation of a database, but the important point is that it acts as a supplement to the file system. You could argue that these descriptions of your photos—metadata—are actually part of the photograph's object. Digital photographs hold other information within the image file's EXIF (Exchangeable Image File Format) header. This header contains information obtained when the photo was taken. To include this metadata in a search would require a query engine to extract this information from each candidate photo and compare it with the query condition. A sophisticated photograph organizer could extract the EXIF information when the photograph is transferred to the desktop and include it as additional metadata in the database.[4]

Desktop search allowed a user to see different types of data from different sources. However, these data still resided on different sources, different places.[47]

Traditional file systems also did not allow for storing files in multiple places without making duplicates. Hal Berenson, former General Manager of Integrated Storage (which would become WinFS after he left Microsoft), gave an example:

For example, you might want an album with pictures of Aunt Jean. But you also want the pictures of Aunt Jean at the wedding to be in the wedding album. You also want to share about 50 of the 500 photos you took (and make sure you don’t share any of the hot tub pictures). How do you do that without copying the pictures to a separate share location? Maybe you want to organize photos from all visits to Disney World together, but also keep them together by broader trip.[54]

A solution is to put an external metadata later on top of the file system, and to use an application or library to interact with the photos instead of interacting directly with the file system. Berenson noted that this causes problems as applications typically won’t understand the layer and operate just on the file system underneath it. This can make functionality that the layer purports to provide unreliable (e.g., when the application changes something about the photo which is not accurately propagated back into the external metadata store). And with photos now stored in a data type-specific layer, it is ever more difficult to implement scenarios or applications in which photos are but one data type.[54]

Berenson then illustrated the limitations of traditional file systems and the benefits of integrated storage by using the processing of claims against an insurance company as a scenario:

Let me cross over into the enterprise app space and talk about an Insurance Claims Processing scenario. Claims processing is interesting for a number of reasons, they key one being that it was one of the first enterprise applications to really embrace the notion of multiple data types. When you file a claim, for a car accident for example, it goes into a traditional transactional database system. But each claim has an associated set of artifacts such as photos of the accident scene, the police report, photos taken by the insurance adjuster, photos taken at the repair shop, witness statements, etc. that don’t neatly fit into the classic transactional database. Yes you can store these artifacts in a database BLOB, but then they lose all semantics. Not only that, you have to copy them out of the database into the file system so that applications that only know how to deal with the filesystem (e.g., Photoshop) can work against them. And copy them back. That creates enormous workflow difficulties, introduces data integrity problems, and prevents use of functionality that was embedded in the photos storage application.

The claims processing scenario is one that demonstrates where the name integrated storage came from. What you really want is for the same store that holds your transactional structured data about a claim to hold the non-transactional semi-structured artifacts, and not just as blobs. You want the semi-structured artifacts to expose their metadata and semantics to the application, or applications, built on that store. As soon as you do that the ability to create richer apps, and/or use the data in complex information worker scenarios, climbs dramatically.

Rather than just using the photos as part of processing a specific claim they now become usable artifacts for risk analysis, fraud analysis, highway planning, or any number of other applications. Data mining applications could run against them seeking patterns that weren’t captured in the transactional data. Indeed all kinds of linkages could be made amongst the photos, police reports, etc. that just aren’t possible from the transactional data alone.[54]

Lastly, Berenson noted that there is no way to back up and restore related structured (i.e., typical database data), semi-structured/unstructured data (e.g., a photo or document), and unstructured data, without a storage system that can be the primary store.[54]

Grimes pointed out that one of the monumental problems organizations face is aggregating information that is stored in disparate formats. Knowledge workers have long wanted to be able to search for content independent of format.[4] Sean Grimaldi of the WinFS team called the existence of many formats with different expectations and behaviors a "divide-and-conquer approach" in dealing with data. Grimaldi extensively discussed the negative effects of this approach and summarizes:

The data is divided into file, database, and other data. The negatives are that programmers have to recreate data types, bridge between data types, and rewrite behaviors repeatedly. If this seems normal to you, it may be because you have operated in this fractured data environment for years and have come to expect nothing more.[55]

The Microsoft WinFS SDK Beta 1 Documentation described the existence of proprietary file formats as "separate islands":

Proprietary file formats tend to aggregate data into separate islands, creating barriers for data sharing between applications. For example, an address book created by an e-mail system, such as Microsoft Outlook, is not directly usable by an appointment-setting application unless the latter adopts the same file format or knows how to translate the format from one to another.[53]

Shawn Wildermuth pointed out what this system means for developers:

Data integration solutions must first try to make sense of all the different places applications can store information. Let's look at a typical example:

I am writing an application, I need access to the user's Contact List, Documents folder, and Music Folder. To access each of these data stores, I have to deal with three different APIs to get that data (MAPI to access Contacts, System.IO for the Documents folder, and the Windows Media Player SDK to find all the music for a user). It would be better if we had a consistent API for users' data.

But that is not the worst part of the problem. If my application wants to tie its data and these external pieces together, it will need code that not only establishes the relationship between the objects, but deals with changes to that data and handles data synchronization problems such as orphaned data.[56]

Using common file formats is a workaround to this problem but not a universal solution; there is no guarantee that all applications will use the format. Other solutions used by corporations are database systems and XML and XML web services, as Thomas Rizzo, director in the Microsoft SQL Server group, explained:

In the beginning, computers could not handle the complexities of modeling and automating many business processes. However, with faster computers, better programming languages, and better data technologies, automation of business processes became a way for corporations to streamline their operations, especially with the advent of enterprise resource planning (ERP), customer relationship management (CRM), sales force automation (SFA), and other types of enterprise applications. With these new types of applications, data suddenly became more complex—but at the same time, data had better structure that was more useful for businesses. Rather than storing opaque binary data or simplistic data models, database systems could relate different types of complex data together. For example, ERP systems understand and can model the complexities of general ledgers, human resources, and sales systems. Since standardized schemas described the data in the system, corporations could ask interesting questions about their business and query their systems for that information.

However, working across systems is still a problem in the industry. Not only is it hard to integrate systems within a corporation, but integrating systems across corporations is even harder. This has sparked the growth of enterprise application integration (EAI) vendors who help customers navigate the sea of schematized data across heterogeneous systems. Recognizing this integration problem, the industry has looked to XML and XML Web services as a way to help companies work across multiple systems and multiple organizations. These newer standards help solve data integration problems and are helping to democratize data throughout and across organizations.[57]

Traditional file systems also provide only a single way of organizing the files, namely via directories and file names. Vijay Bangaru of the WinFS team illustrated the problems with this:

If you’re like me, you probably have tons of digital pictures on your computer. My photos are currently organized in a simple hierarchy. In “My Pictures”, I have a bunch of folders that are named something like, “2004-11 Thanksgiving”. Within this folder are all my photos from that holiday. I’m sure you can already see the limitations in this structure.

My latest challenge in actually using my pictures came the other day. My grandparents wanted me to send them some pictures of my fiancée and me. Wouldn’t it be really cool if I could just tell my computer, “Show me all the pictures that have Crissy and me in them”. Instead, I had to scan through my folders to see what events we were both at and copy all the pictures with both of us in them to a temp folder. Then I needed to go through the temp folder to pick which ones to send. Of course, I didn’t remember to delete the temp folder; so it’s eating up drive space. Good thing hard drives are so cheap nowadays.[58]

A traditional file system can retrieve and search data based only on the directory path:

If the user knows the directory path to the file, searching is simple. But if she does not know where the file is, she must walk down from the root directory of a file system—for example, by selecting Search from the Start menu—to traverse the available directory paths until she finds the file. When there are many files on a computer, the search can take a long time. In the NTFS file system and other traditional file systems, the directory path is more or less the only way to identify a file. But users tend to think of data more naturally in terms of its types and attributes—that is, the structure or shape of the data: a document or an e-mail message, its title or subject, the author or sender. How the data is stored is generally of little or no interest. Therefore, reliance on paths is an inherent limitation of the tree-based structure of traditional file systems.[53]

A user may put a file into multiple directories, but this wastes disk space. Also, when a copy is changed, the other copies no longer represent the same data as the changed copy. Hard links that can be created to represent a file by multiple paths are also difficult to manage: links will break when a file is renamed.[53]

Bill Gates summarized all these issues in his keynote during PDC 2003:

Users want to manage information. We've had the information in silos. Mail is separate than, the files is separate from the web pages, and the information has not been structured. All the operating system knows about files is that they're binary streams. That's it. You know, something like the address book is at the application level, not at the platform level. And so if you want to share address book across applications, you can't even do that. The idea of rich searching, the search command is different in every application. So learning how to search mail, navigate mail, is different than learning that for files. When you get attachment sent to you, storing those, understanding the different versions you might be getting, It's very complex, and so just dealing with information has not been very rich. We don't have standard schemas for the concepts. We had the clipboard, but we haven't gone beyond the clipboard to structure the information, to make replication, and searching just a very straightforward thing that you expect out of the system. So in the next wave, we've got to have those rich views, got to have content indexing, got to unify the store. We've got to have the schemas, allow you to classify things, so that things even appear to organize without you getting involved. We see a little bit of this in the Outlook client where you have search folders, so that if you want to see all your mail from one person, you just click on that folder. You don't have to drop something in there because it's, it's essentially a standing query, and so information can be in many locations. It's just a matter of defining the criteria, not having to move it around. The ability to intermix files and mail and notes into one hierarchy that's organized the way that you want it to be.[28]

WinFS as solution

The core concept of WinFS was that by storing data in a cohesive data store, not just a file system, it would have allowed systems and users to store rich metadata about a myriad of objects and to relate these objects.[56] Compared to a file in a traditional file system, a "WinFS" item would be the smallest unit of data that could be moved around and operated on by different users or applications.[53]

The Microsoft WinFS SDK Beta 1 Documentation explained that WinFS would have provided comprehensive object-relational mappings to let users view and work with their data as an item on a Windows computer. With items, a user or an application would have found it more logical or natural to view and use data. This should have made organizing and querying data, especially complex data, less burdensome. The documentation provided as an example:

For example, consider an e-mail message containing two photos as attachments. In the tabular form, this is most likely modeled as three rows in two tables. One table stores all the e-mail messages and the other stores all the photos. To get the message, a user or application must query two tables and perform the so-called UNION operations on the tables. In the itemized form, the attachment is part of the item. Querying the e-mail message item will return the attached photos as well.[53]

WinFS would have served all kinds of data, whether structured (as in tables/rows or items), semi-structured (as in an XML file), or unstructured (as in a flat byte stream).[53]

The Microsoft WinFS SDK Beta 1 Documentation and the IWish video summarized the benefits of WinFS integration into four points: Unify, Organize, Explore, and Innovate.[59][36][37]

Unify

WinFS would have allowed data sharing between applications, as Grimaldi explained:

Because applications can build on WinFS-defined data types, applications can share data—assuming the correct permissions. This is good for you as a programmer, as well as for the end user of your application.

As a programmer, you can reuse data the end user already has in the WinFS store. For example, assume your application presents advertisements to a user of events they could attend, like a bike race or a rodeo.

Before presenting an event to the user, your application can check the user's calendar and display the event differently if the user already has a meeting scheduled that would conflict with the event, such as making the border of the invitation red.

You can also populate data into the WinFS store to be used by other programs. For example, if the end user accepts the invitation to the bicycle race, their personal information manager (PIM) application, such as their e-mail client, could show that date as reserved in their calendar. This also gives the end user a rich user experience in both applications.[55]

WinFS would have placed data from multiple applications into one central store. Bangaru showed the advantages of this:

With WinFS, I can move all my contact information into one central store. My applications can interact with this information and I can synchronize it wherever I want to. The obvious benefit is that I can go to one place reliably for the most up to date information. Now, I could easily add whoever I wanted to an Evite for a Halloween party. No more need for typing in email addresses or importing all my contacts (into yet another silo). When I order flowers for mom on her birthday, it’s just one click for me to fill out the information for the recipient.

In addition to being a central data store, WinFS can be your synchronization hub. I can sync between WinFS Stores and I can sync changes back and forth with legacy stores (like Outlook, PDAs, and cell phones). Now, I can have my latest contact info on my phone, make changes on the road, and sync that information back to WinFS. This, of course, enables some great offline experiences. When I’m doing work on vacation, I don’t need to worry about manually synchronizing my data with my desktop machine once I’m home. Now all my applications will behave like Outlook 11’s awesome offline mode.

Of course, this applies to all data; not just contacts. Now, all my calendar apps will show my Evite invites. My photos are now associated with contacts and events, so I can easily say, “Mail these photos to everyone that was at the event”. When you start adding email, RSS feeds, documents, music and everything else to this, it can get pretty exciting.[60]

Organize

Bangaru illustrated how data could be related, and how related data could be shown:

With WinFS, I can relate my contacts to my photos, so I can easily query for all the pictures that are related to a set a contacts. A photo app built on WinFS could display all the pictures with Crissy and me in them. Then, I could select the good ones to email or print. If you’ve been playing with the Beta 1 bits, you know how easy it is to write an app with this behavior.



Plus, I can now easily check to see what photos I’ve already sent, so I don’t send the same ones again. How? Tell the computer to “show me the photos with both of us that I’ve sent to my grandparents.” All these containment relationships and associations would already be in my store.

Again, this applies to much more than pictures. I can associate a document with a meeting, or music and contacts to a party invite. And these aren’t keywords added to a file, these are associations between real items. All of these organization constructs are just waiting to be exploited by a WinFS app.

Also, all these types are extensible. So for my wedding guest list, I can extend the Contact type to have properties for “Sent ‘Save the Date’ card”, “Sent invitation”, “RSVP Received”, “# of Guests”, “Vegetarian meal?” and so on. That could make things significantly easier. Good thing I can do this with the Beta bits. If we had to wait for WinFS RTM to plan the wedding, I think Crissy would make sure that I wouldn’t be able to blog anymore. :-)[58]

Explore

WinFS natively recognized different types of data by defining common item types, such as audio record, meeting, contact, person, document, photo, message, video clip. This would have solved the problem of querying the following data:

You could write code that shows a picture of a person, his role, and his contact information for everyone attending a given meeting and every document that they contributed to that you have not already read, and on a personal note, if they have already given you some money for the charity bicycle race you are participating in next month. Today, I have all this data available to my computer, but no feasible way to query it without WinFS. I plainly can't get at a lot of my data.[55]

WinFS would have allowed queries such as "Show me all email from people I am meeting with this week," that NTFS could not.[61]

Bangaru explained how one of the mockup applications showed in the IWish video[36] would use WinFS:

WinFS gives you the ability to use relationships to find and display your data. In the PDC video, we showed an app that takes a range of dates and displays the location for your meetings on the map. As it draws the best route to drive between all your meetings, it adds icons that represent your contacts and important customers at their location on the map. Now, as you visualize your schedule, you can see who is close by and set up lunch.

Let’s walk through how WinFS made this possible. The app is able to query for all your appointments in a certain date range. It displays each appointment in the proper place on the map by using location of the meeting. Today it would be tough for a map application to do this, because your appointments are in a different application or maybe even more than one application. Assuming you can access the meetings programmatically, accessing the location may be hard. Your calendar app probably just has a field called “Location” that can contain an arbitrary string and would be tough to parse correctly. With WinFS, all your appointment information is in a single store with an API that let’s any application access the data uniformly.

Next, the application finds contacts and customers with high priority issues that are located close to where you will be and displays them on the map, by using the address of the contact. If you select a contact, the app can display some information for the person (a photo and contact info for example). From there, you can send them a mail to setup a lunch while you’re in town. Again this would be tough to do today; your contact information is probably in a silo that your map application can’t get to. Plus, chances are, your customers with high priority issues are tracked in a completely different application silo.[62]

Innovate

Bangaru explained how WinFS would have done away with proprietary file formats:

WinFS is built on a true relational store that all applications can leverage. Today, tons of popular apps lock their data into proprietary stores. This includes photo apps like Photoshop album, music apps like WMP and iTunes, financial apps like Quicken and Money, email apps like Outlook, and so on. By using WinFS, developers can concentrate on building rich applications without worrying about creating a storage silo. After all, WinFS can give applications a place for all their structured, semi-structured, and unstructured data.

In addition, WinFS will provide services like synchronization, notifications, rules, and backup/restore. The services provided by WinFS lead to a zero-admin and extremely reliable experience.[63]

Drucker explained how WinFS addressed lock-in:

Interviewer: "So, is Microsoft getting rid of lock-in? I mean, is this the uh, are we, are we docking in a new pool here?" (laughs)

Drucker: "Well, those sound very buzzy." (laughs)

Interviewer: "Probably"

Drucker: But I will say this. WinFS is a persistence platform because of the schematization, because the programming model enables applications to share data on behalf of the user in a way that just isn't even feasible to do now. Even if, even if applications wanted to, you really couldn't do it. I mean you can't write outlook express today as like a file folder of MSGs. It's just not fast. It's not practical. Users will hate it."

Interviewer: "Now that for, for an application developer who is used to lock-in and used to "I control my world", that sounds scary, doesn't it?"

Drucker: "I think it is very scary and I think we get that feedback, we've gotten some of that feedback from ISVs. But I think the the upside, right, the world where you can share information with other applications is so powerful that even people who enjoy a tremendous amount of lock-in in their applications today think about 'Oh what would it mean if I could really share data with the other applications the user uses?' And that promise, that potential of greater interoperability far outweighs the benefits they're getting from lock-in today."[64]

Synchronization is explained under Data sharing. Rules is explained under Rules.

Bangaru explained two levels of backup that WinFS would have included. Item level backup would have allowed a user to revert a change to an item. Store level backup would have covered the situation of a broken hard drive and a user needing all his files back.[65]

As part of Longhorn

Concepts

"Since music place is not a physical space we can promote many virtual views. One we promote here is "most recently added" grouped view where cds users have copied recently are populated." (Source: Heesung Koo)[66]

Hillel Cooperman explained in PDC 2003 in his demo of a build 4050 how WinFS would work in Longhorn:

But the best part about this is not that we have this functionality built in Windows. The best part, like everything I want to show you today, is that this is part of the platform. This is essentially the evolution of My Documents, but a couple of things are different. First of all, we're showing almost 1100 items in this view, which frankly, given today's uh experience, it would be a little uhh not useful. Um and in fact, these items are not sitting in one folder. They're located across the system, and this view is actually a dynamic view that's generated for you, uh right in the system, and of course available as part of the platform. So let's do a simple thing uh, that you think would be simple today, but, but WinFS is going to provide built-in search facilities. So I have 1,100 items, I want to fall, find all the items that have somebody do with Longhorn. So as I type, I want you to watch the the number right here, 1095, go down to 30. See how fast that happens. By the time I'm done typing, we're down from 1100 to 30 items right there in the system. Now built-in search capabilities, this is something you're gonna expect.

But let's talk about the kind of self-organization that Bill talked about in WinFS. For example, let's say we want to take these 1,100 items and organize them by a property, a property that's built into the schema. Um, so right here, we have "Author". We click on "Author" and we could actually filter down the 1100 based on who the author is. Or we can do this new thing called "Stack" and when I click on Stack, it's actually drawing a new view that shows all these items uh in these stacks by who wrote them. And in fact, if you look carefully at the stacks, they have different heights depending on how many items are represented in them. And because they're not physical locations, one item can show up in more than one stack. And these are not folders I went, created. This is dynamic view being built for me on the fly based on the rich structured metadata that's sitting in WinFS on these items. So let's double click on "Bill". Now, the properties that are built in to the schema are well and good, but of course you're gonna want to add your own. And it's not just users and IT professionals but of course developers. They're gonna go extend these schema uh, in any way they want. So let's actually add a property right now, let's add project to our view. I click right here on "Project" and I can stack by project. And in fact, I can go down here and see here's all the stacks. And these five items down here aren't attached to any project.

— Longhorn.ms, Hillel Demoes Longhorn build 4050 (Extended cut), [67]

WinFS was intended to have the following user interface (UI) features in Longhorn:

  • A breadcrumb bar for navigation
  • A preview area
  • Commands (based on FolderType and folder sniffing)
  • Filters and filter controls
  • A list view area (for thumbnails and grouping)
  • A user's list of storage favorites

The storage model has some other elements which are discussed below — for example:

  • A scope (for example, c:\foo + d:\bar)
  • A specific query and filters (for example, select * from Media.Music where Artist = Madonna & year = 1984)
  • An associated "drag target" (a physical folder, which is optional)[1]

Microsoft also intended that Longhorn would support sets. A static set was intended to be a list of items stored within WinFS and that did not share common properties. For example, a music playlist is a list of pointers to actual music files stored on some physical media. The files could be stored in different locations, but the lists could be used across different computers, and users can control the hierarchy of the lists. Static sets would have been best used to organize items that hadno properties in common. For example, a user might maintain a list of documents he's working on. The documents have no properties in common.

In contrast, dynamic sets would have been the results of queries based on the properties of items (for example, image files or all files created in February) in WinFS that were run against certain locations (called the scope). The sets could be used across different computers. For example, scope could include the computer used by the user, a shared server, or a company's network domain. In WinFS, dynamic sets would have been the preferred way that users can organize their files—not by location, but by the properties most relevant to them.[1]

Dynamic sets were intended to work as follows:

With "Longhorn," users perform familiar file management tasks such as finding, organizing, and performing actions on data. However, dynamic sets replace the need for physical folders and become the primary way users access their data.

In "Longhorn," the list view control shows the items that have been dynamically selected based on the user's criteria. Each item in a list view is not necessarily implemented as a file in the file system. A list view can contain contacts, e-mail messages, and other non-file objects. Depending on the selected view property, users can see previews and details about the files in the list. However, in icon views, for example, this amount of detail may be minimal.

Dynamic sets can be grouped visually into "stacks" according to a specific property such as author. If a user chooses to stack the items by author, a stack for each author is displayed, and items with no author value appear in a flat list. Dragging one of these items into the stack for a particular author assigns that author as a property of the item, which allows for easy property editing.

With filter menus, storage favorites, and the wordwheel, users can change the dynamic set they are viewing until they have narrowed the set to exactly the items they want to view.

Users can select a particular property value from a filter menu to narrow a dynamic set to items with that value. For example, a user could select Raquel Mello from the "Author" filter menu, and the dynamic list would narrow to only items created by Raquel Mello.

A user could further narrow the dynamic set to only documents created in a particular month.

The breadcrumb bar in the storage page helps users keep track of where they are and what filters they have used.

Users can save links to their favorite dynamic sets, called "storage favorites," which are readily available in the UI.

Clicking a storage favorite runs a query of all items within a specific scope, and returns only the items with specific properties. For example, a user might create a set of important documents in the month of October, and he might want to see this set of documents frequently. While viewing the set of documents, he could save a storage favorite and name it "Important Documents from October." This storage favorite would be immediately available to him in the future.

Users can also filter the items in a dynamic set using the wordwheel.

As a user types in the wordwheel, the dynamic set narrows to items with properties that match or contain the string that the user typed.[1]

Longhorn would have allowed a user to add a property to an item through the preview pane, by dragging an item into a stack, or through the property page.[1]

Users could form search queries using words that mean something to them, such as, "What is a firewall?" or "Pictures from Maui." Users could perform more complex searches, such as "Look for information about Jim from 1987 to 1999," because non-file-based data like contacts and e-mail messages were cross-referenced with files.[1]

The preview pane would have showed commands associated to a WinFS type or file type.[1]

A rules engine would have made possible for users to create simple or complex rules to define how their system handles particular messages.[1]

Microsoft also intended that applications could easily reuse any contacts already present in the WinFS Contact store. Contacts would appear on the Contacts explorer, and for frequently communicated contacts, on the Sidebar.[70] Contacts would also have their own property pages, with the following parts:

  • The preview pane displays the commands with which users can perform various contact or communication tasks. You can add commands from your application to the command list in the preview pane.
  • The explorer pane gives users a view of the data from a given application and provides links to related files, the communication history, and other applications that create property page extensions. If an application has synchronized data about a given contact into the contacts explorer, that data is listed in the explorer pane.
  • The content area contains a composite view of contact data from multiple sources. Windows provides UI to alert users to and manage any conflicts between applications.
  • Property page extensions allow your application to embed a preview of your content inside the property page. If you want your application to add its own propriety contact data, you can extend the contact schema and create a property page UI extension to render application-specific data inside the property page.[70]

Messages in the WinFS Store would be displayed in Communication History. Users may access the history of multi-application communication messages related to a given contact.[70]

Implementation

A Milestone 4 build that leaked in or around March 2003 contained "Windows Future Storage Services" and "Windows Storage Full-Text Index". A user opening Search would simply be asked: "What are you looking for?", with a list of example searches provided for reference such as "Pictures from John" or "What is a firewall?". The build came with libraries, stacks, and filter features.[2]

Build 4051, which was distributed during PDC 2003, contained WinFS. Part of the "Self-Guided Longhorn Tour" that Microsoft released for this build described how WinFS (erroneously called WinFX) worked, which operationalized the UI features Microsoft intended for Longhorn:

1. From the Start menu, click Computer. This is a place from which you can get to all of your storage locations, such as the WinFXTM default store.

2. Open the "DefaultStore," which is a view of WinFX through the Win32® APIs. Drag in copies of a variety of photos, music, and documents. (Use only copies of your data to prevent data loss.)

  • Because WinFX is still in development:
    • It might take several minutes to copy the files and promote the metadata.
    • You cannot rename items that you've added to WinFX.
    • Saving files might be an issue because of application compatibility.

3. Open the Start menu and click Music. The music you added to the WinFX default store appears in the music collection.

4. Click the column heading Artist and select Stack by artist. The items appear in stacks according to their artist metadata. Double-click a stack to see music by a specific artist.

5. Click the column heading Track Number. Pick one, and the list narrows to only items with that track number.

6. Notice how your navigations are tracked in the Address bar. You can click on any item in the address bar to navigate, or click the drop-down control to the right of each item to navigate to one of the item's peers.

7. Find the text box labeled Filter by on the left. This is called the wordwheel, and it allows you to quickly filter the items you see based on what you type. Type an artist's name and notice that, as you type, the items are filtered and only items related to what you typed remain.

8. In the Address bar, click the drop-down control next to Music and select Photos and Videos to navigate to the photos and videos collection. The photos you previously added to WinFX appear.

9. Use the Address bar to navigate to "Documents". Select a document, and a thumbnail of the document appears in the preview pane, along with relevant tasks and metadata for the item.

10. From the preview pane, click Add a category. Type categories related to the document (separated by semicolons) and press Enter. Because it's in development, this might take a few minutes.

11. Click the column heading Category and then select one of the categories that you added. The items will filter to only the item for which you attached this category.

12. Sign on to Windows Messenger. After a few minutes, your buddies will be added to WinFX so that they will appear in your collection of contacts, and in the Contact Picker.

13. Use the Address bar to navigate to Contacts. All your WinFX contacts, including your Messenger buddies, appear. Double-click a contact to view and edit details for the contact.

14. To add contacts from Active Directory to your contact collection, open the File menu and click Add contacts. This launches the Contact Picker. To find the contact you want to add, type a name in the Search For text box, and then click Search. Select the contact and click Add.[71]

WinFS in build 4051 suffered from huge performance issues.[20]

Build 4074, the WinHEC 2004 preview build, also included WinFS. It slowed down the system because it catalogued every single file, including system data, so that WinFS would be able to search them.[72]

Data storage

From this section, the discussion is on how WinFS worked under Beta 1, the latest release of WinFS to the public, not under any Longhorn pre-reset build. All documentation therefore should refer to the WinFS Beta 1 time frame, PDC 2005 included.

Architecture

What is WinFS?[38]

WinFS used a subset of SQL Server 2005 technology, modified for file storage.[16] It consisted of the following components:

  • "WinFS" Core - the core services expected from a file system, and included the relational storage engine;
  • Data model - the technical innovations of WinFS, including basic item structure, relationships, and the ability to extend both items and relationships;
  • Schemas - built-in schemas allowed WinFS to understand a user's data in richer ways than traditional file systems and provide a more structured way to handle metadata. Included were first, schemas for everyday information such as documents, e-mail, appointments, tasks, media, audio and video, and second, system schemas that define configuration, programs, and other system-related data;
  • Services - included syncronization and rules (discussed below);
  • APIs - which developers might have used to program the different building blocks of the "WinFS" system, including data operations, rules, synchronization, and the data model[73]

WinFS required three services, which ran in three processes:[74]

  1. WinFS.exe, the WinFS data store, that ran a Yukon (SQL Server 2005)-derived database engine
  2. WinFSSearch.exe, which ran the WinFS search engine
  3. WinFPM.exe, which ran the WinFS File Promotion Manager. File promotion referred to the process of extracting data from a file and populating the data to an item. The reverse process of persisting itemized data to streams of the underlying file was called demotion.[53][75] WinFS served all kinds of data: structured, semi-structured, or unstructured, through a new file system driver (RsFxDrv.sys).[53] This driver allowed a user to access a WinFS item both as a file stream (as a file) through the Win32 API or as an item via the WinFS API. The process of file promotion and demotion kept the file-based and item-based representations of a WinFS item synced. This made WinFS backwards-compatible with NTFS.[75]

WinFS depended on the .NET Framework,[74] and used the same APIs as other data types thanks to ADO.NET.[17] The WinFS API was included in the System.Storage namespace.[75][55]

Data store

WinFS data hierarchy[75]

WinFS kept data in Stores, which in turn are kept in a relational backend.[75] A WinFS store was a common repository where any application can store items and associations. Items could either be backed by files (for example, images and documents) or not (for example, contacts and e-mail).[17] Associations established relationships between different types of data (items), which then allowed users to organize information based on how they used them.[17] Bagnaru explained how items and associations were stored:

Q: Mikael writes, “How and where are all the relations, keywords, etc. saved?”

A: The item properties are stored in the WinFS store as part of the item itself. WinFS has a concept of “links” which are an entity type with a source item and a target item that relate items. There is also the concept of “common value” relationships which are based on item properties. Navigation of common value relationships is a value based join.[76]

All data in the store were accessible as CLR objects, allowing a developer to leverage all their Visual Studio and .NET knowledge while building apps..[63]

WinFS, by default, came with two stores, DefaultStore and Catalog. DefaultStore was the default location for user and application "WinFS" data. Catalog stored metadata about "WinFS" stores and shares, as well as other system data. The Catalog store was read-only and should not be used for user data.[77] Users could create additional stores,[20] but a store could not span multiple volumes and could only be hosted on NTFS volumes. The reason for these limitations was that every WinFS store had a root share with the same name as the store.[77]

WinFS stores were made up of database files stored in a directory under the "System Volume Information" folder.[77] Filestreams were saved as ordinary NTFS files with a GUID as file name.[74] Tony Voellm of the WinFS Team explained, "The term NTFS Streams was used but the File Data is actually stored in NTFS files."[61] Meanwhile, metadata is stored in a SQL Server database.[74]

Data model

WinFS Types[46]

The WinFS data model is the architecture of the type system.[78] WinFS introduced a type definition language, an XML vocabulary but not the XML Type Definition Language, to describe types.[79]

WinFS provided a set of schemas that defined types[79] and attributes for implementation by the WinFS API.[78] A developer could also create custom schemas.[79][80]

A schema was a collection of type declarations, such as the declaration of a postal address, a full name, or a person. Each schema defined a set of types that mapped to some information. All these types derived from a set of base types defined by "WinFS". The base types grouped related types together, creating type families.[78]

The root types in the WinFS system were Item, Link, InlineType, and ItemFragment. The other WinFS types derived from the root types.[79] Descendants of one of these types were entity types. For example, Person was derived from the Contact type, which derived from the Item type. AttachmentLink was derived from the Link type. Therefore, Person, Contact, and AttachmentLink were all entity types. An EntityType had its own unique identity, and so could exist on their own. In contrast, an InlineType did not have a unique identity and could exist on its own. FullName of a Person is an InlineType, a Person is an EntityType.[81]

ItemFragments were also entity types, which enabled the declaration of large collections in the item types, such as multivalued properties. Each collection member had a key, which enabled applications to access individual members of the collection independently of the owning item. An example would be a message, which might have a large number of participants.[82] The ItemFragment would be participants under the Item message.[75]

Meanwhile, an EntityExtension allowed a user to extend built-in items by adding further properties as necessary.[75] WinFS schemas defined several extension types. For example, the System.Storage schema namespace defined two ItemExtension types: Reminder (such as a birth date Reminder to a Person) and ItemKeywords (which allowed a user to assign keywords, such as "legal document" or "personal document" to a Document).[82]

Links and associations

Links referred to data that defined links between two or more distinct existing item types; for example, an Item type, Message, might have attachments that were documents, another Item type.[83][75] WinFS also provided the concept of Associations to relate items. Associations were not physically stored in the store. An example of an Association would be that declared by a user between the Document and Contact types when identifying the publisher of a document.[83]

WinFS depended on applications and users to provide the information to create links. According to Bagnaru,

Q: Mikael also asks, “Do I have to set all relations manually? How does WinFS know which document is created by which user?”

A: The relationship “setting” will depend on how it is modeled. A link will need to be set by something (i.e. metadata handler, sync adapter, application, etc.) A common value relationship, however, is just based on a join. WinFS depends on the application and user to provide the information to create links. In many cases, an application already has this data; for example, Office applications already have an “Author” property. In other cases, the user already knows this information and can set it. It would be fairly easy to get my primary contacts’ information moved into WinFS and then relate pictures to the contacts. In the future there could be many processes that could be used to relate your data: natural language processing of documents, concept extraction, face recognition for images, etc.[76]

Item

The Item was the fundamental concept in "WinFS". An item was the smallest data element defined by WinFS, and was the equivalent of an object in object-oriented programming. Each item had a unique identifier, its GUID.[82]

Items grouped together in DefaultStore

WinFS defined common item types, which resided in the following WinFS namespaces:

  • System.Storage.Audio
  • System.Storage.Calendar
  • System.Storage.Contacts
  • System.Storage.Documents
  • System.Storage.Image
  • System.Storage.Media
  • System.Storage.Messages
  • System.Storage.Video[55]

An item that would fall under System.Storage.Documents would lead to, as Malik explained:

For instance, if you author a Microsoft Word document, it is automatically promoted to an instance of System.Storage.Documents.Document, which then automatically populates its various relevant properties such as title, subtitle, author, etc.[75]

If a file did not fall under any of the common item types, WinFS stored them as a GenericFile item. This happened when no file metadata handler was registered for a file name extension. A file metadata handler promoted and demoted properties between structured file formats and "WinFS" items.[84] (See #Architecture for discussion of file promotion and demotion.)

A definition for item types then reduced the amount of code to bridge between types. Grimaldi showed the benefit of this:

For example, if your application and my application both use the WinFS person type, no transformation is necessary. Even if I extend the WinFS person type, we may be able to share the data without transforming it. For example, if I write an extension to the person type that adds a property for their medical insurance member ID, and your application is a greeting card application, I can pass a person between our applications with just a cast to person.[55]

Another benefit was common behaviors. Only one code would be necessary to save an item, regardless of type.[55]

Defining common item types also allowed WinFS to look inside files in a similar manner to desktop search engines. Bagnaru pointed out:

Q: Lars asks, “Does WinFS look inside files (word, excel, pdf, etc.) like desktop search engines do?”

A: Yes. When a file is stored in WinFS, its metadata will be extracted by type specific property handlers. Part of our Beta 2 work is to integrate this with the Windows Desktop Search handlers. The end result is that a Windows Desktop Search query will return WinFS and non-WinFS files.[76]

Rules

WinFS Rules provided an object-oriented API useful in definition of data sets, logical properties of data, and associations between data items.[85]. The WinFS SDK Beta 1 Documentation defined a rule as conditional logic used to define queries, filters, computed properties, or computed associations that can be composed, persisted, and reused.[86]

WinFS Beta 1 supported the following rules:

  • FilterRule - A rule that contained filtering logic that could be applied to item(s) of the given type. FilterRules obtained derived item sets based on the conditions of the rule;[87]
  • PropertyRule - A rule used to calculate custom properties from existing properties of data objects. For example, a PropertyRule could define a new property of the Contact class, named locale, based on the zip code of the contact's primary address.[87] Property rules allowed a developer to define new properties on item types without modifying or extending the schema for that type. To illustrate, an email application could expose capabilities for creating a “Color” property for messages and allow each user to define the value of “Color” using their own logic;[49]
  • AssociationRule: A rule to calculate relationships between data objects. For example, a Document could be associated with a Contact defined as its author or copyright owner;[87]
  • ActionRule: A rule to identify actions available on various data types. Rules of this type identified actions to be performed on data items. For example, the Photo class could define resize or rotate actions;[87]
  • Query: A rule that defined a derived set. It was used to implement execution of a query as distinguished from the definition of a rule.[87]

Kati Dimitrova, a developer on the WinFS API team, explained how a query worked as a rule through a scenario involving Mary, a recruiter trying to manage and track candidates throughout her day across multiple applications:

First and foremost, WinFS rules are persistable units of logic. In this scenario, Mary creates the query “candidates that are interviewing today” through her WinFS-enabled recruiting application and persists it. But how is the query persisted? As a WinFS item. In fact, all WinFS rules, including queries, are items. This has many advantages. To start with, rules can be created, manipulated, stored and secured in the same manner as all other items.

Further, WinFS rules are about discovery and sharing of persisted logic among applications. Because rules are WinFS items, they can also be queried for, discovered and shared among applications just like all other WinFS items. In this scenario, Mary can easily find and use the query “candidates that are interviewing today” from her email application even though she created it through her recruiting application.

Finally, WinFS rules are about re-usability and composition. Not only can Mary find the query she created in her recruiting application, she can re-use it in her email application to create a new query “mail related to candidates that are interviewing today” that refers to the original query. Note that composition of rules is true composition; if Mary changes the logic that defines the query “candidates that are interviewing today,” those changes will affect the results of the query “mail related to candidates that are interviewing today.”[49]

Access control

Bagnaru explained how WinFS secured data:

Q: Chris asks, “While it's good to have a common silo that all apps can easily use, it's seems a bit risky. Wouldn't some rogue app/spyware have an easier time getting to financial Quicken/Money data?”

A: Even though all your data is in a single silo, all the data isn’t equally accessible. WinFS provides two data protection mechanisms. First, there is share-level security that controls access to your WinFS share. Second, there is item level security that supports NT compatible security descriptors. In order to access an item, the caller must be provisioned at the both share and the item. To manage this, WinFS will provide a rich API for security administration. Also in Vista there is the concept of “integrity level” for an application (Mandatory Integrity Control). Data can be configured to prevent lower integrity apps from accessing it. Simon (our security PM) will post more detailed description about this soon.[47]

Data retrieval

Searches and queries

WinFS used OPath, a string-based query language used for filtering, sorting, and projecting information stored in the WinFS store.[88] OPath was used in multiple places on StorageSearcher to specify queries, and in other places in the API, such as when creating StorageViews.[89]

OPath allowed a user to perform the following types of queries:

  • Extent - Identified the source of the data queried in an OPath query expression;
  • Filter - Created a collection of objects that contained a filtered set of objects from the input collection;
  • FilterByType - Created a collection of objects that contained only the objects from the input collection that were of the specified type, or a sub-type of that type;
  • Group - Created a collection of objects that contained groupings of the data in a collection of objects;
  • Join - Created a collection of objects that contained parings of data from two or more input collections of objects.
  • Project - Created a collection of StorageRecord objects that contained only the selected properties of the objects in the input collection;
  • Sort - Created a collection of objects with the data sorted by one or more property values of the input collection;
  • Top - Created a collection of objects that contained the first number of objects in the collection specified;
  • TreatAsType - Created a collection of objects that contained objects that were converted to a base type
  • Union and UnionAll - Created a collection of objects that contained the data from two or more collections of objects;
  • Yield - Created a collection of values computed by applying the OPath expression specified to each object in the input collection[90]

Notifications

A notification was simply defined as "TBD" in the WinFS SDK Beta 1 Documentation.[86]

Data sharing and synchronization

WinFS Beta 1 included a Windows Shell namespace extension, which showed WinFS stores as top level objects in "My Computer". The stores also appeared as a share in "My Network Places".[47][20][74] Files could be copied into and out of the stores.[20] Applications could be directly used to save there through the share \\COMPUTERNAME\DefaultStore in "My Network Places".[20][74][20] Even folders such as My Documents could be redirected to a WinFS store.[47]

WinFS Sync allowed synchronization of data between WinFS stores and non-WinFS, or external, data stores (for example, synchronizing contacts between a "WinFS" store and a PDA or synchronizing e-mail between "WinFS" and an e-mail server) and synchronization of data between "WinFS" stores (for instance, making "WinFS" data available on all computers in a home network or sharing a set of documents, peer-to-peer, at work).[91]

WinFS Sync provided change enumeration services that used change tracking to determine all entities that had changed since a previous synchronization. It also provided change application services that made changes to the data in WinFS.[92]

WinFS allowed for both one-way importers, moving data from an application to WinFS, and two-way importers, which allowed for both. WinFS could resolve conflicts among data. Neil Padgett, program manager working on the WinFS Synchronization APIs, explained:

Let’s assume that we did some initial sync to ensure we had our contact in both stores. (We can talk about what this exactly means later, but for now we can think of it to be like running our importer.)

And let’s imagine that, after we sync we make some updates:

In the application store, we’ll update:
-Home address
-Telephone

And, in WinFS we’ll update:
-Home address
-Cell

So, now imagine we want to bring our two stores back into sync. So, how do we do that? We know we were in sync before, so we need to figure out what changed on each store, and then apply those changes to the other store. We can call these processes change enumeration and change application, respectively, and we want to do them in both directions. (In fact, WinFS does the hard work of figuring out what changed for us and of making sure that remote changes brought to WinFS are not echoed back to us later.)

Considering our example, we have some changes that are straightforward – the telephone numbers were each changed on the one store, but not on the other. We call these non-conflicting changes. For these non-conflicting changes, we can simply apply them each to the other store. The difficulty comes with the home address – we made changes on both stores – so-called conflicting changes. We’ve detected a conflict and we’ll need to resolve it, either by prompting the user or, more likely, according to some policy (for example, keeping the latest change.) Then, we can bring our two stores back into sync.

— Neil Padgett, Getting Data Into WinFS with WinFS Synchronization, [93]

Applications

WinFS Beta 1 shipped with unsupported applications: File System Sync Adapter, Microsoft Rave, StoreSpy, Type Browser, and OPather.

File System Sync Adapter

The File System Sync Adapter synchronized file-backed items and directories between a WinFS replica and a file system directory.[94]

Microsoft Rave

Microsoft Rave attempting to join synchronized folders "A" and "B". Note the "File System: WinFS" that appears in the Explorer window of DefaultStore mapped as a network drive

Microsoft Rave allowed synchronization of two or more WinFS stores. A user could synchronize between WinFS folders in the same machine[95] or in multiple computers, and also with other users[96] in a Windows domain.[95]

Microsoft Rave used peer-to-peer technology to communicate and transfer data.[96]

StoreSpy

StoreSpy included in WinFS Beta 1

StoreSpy allowed a user to search for files in stores by executing queries.[97] It supported type-specific grid views, reminiscent of Outlook 2003, for Documents, Messages, Events, Contacts, and Photos, with a typed preview pane for messages, meetings, contacts, and photos, and a debug preview pane for other types.[98]

StoreSpy supported property, query, full-text, and folder based filtering. It also allowed saving and retrieving queries.[98] It also included a one-way Outlook sync adapter to bring items from Outlook 2003. However, it could only read from a Global Access List.[76]

StoreSpy did not allow editing of items[98] or their properties, though it was slated for inclusion in a future release.[99] WinFS was cancelled before it could materialize.

Shishir Mehrotra demoed StoreSpy on a video uploaded on the Microsoft Developer Network's Channel 9.[100]

An earlier version, v0.8, was released for the WinHEC 2004 Longhorn build, 4074. It was an Explorer-like tool to browse WinFS, and allowed a user to inspect Item, Relationship (all 3 types), Extension, Nested Element, and MultiSet properties.[101]. However, the download link has not been archived.

WinFS Type Browser

WinFS Type Browser could be used to visualize WinFS schema types (not WinFS data which StoreSpy showed), their type hierarchy, methods, properties, other types it was related to, among others.[102]

Shishir Mehrotra also demoed the WinFS Type Browser on a Channel 9 video.[100]

OPather

WinFS Beta 1 also included OPather. Luiz Miranda of the WinFS Team explained:

When I created the tool I wanted a GUI interface where I could quickly set my target object and start writing my query and know right away of any mistakes in my query string. To do this with OPather is a snap. Open the tool, select the target object type you want to start querying against, then start writing your OPath query. There is even an Intellisense-like feature to help guide you through simple queries. Combined with other features that grew from feedback such as binding results to a DataGrid, constructing StorageViews, and ability to Dump all Code for written query, this tool can certainly help beginners and advanced users who intend to write an App that queries against the WinFS Store.[89]

Project "Orange"

Microsoft launched a team, codenamed Project Orange to build an application built on the Windows Presentation Foundation ("Avalon"), that would demonstrate some of the ideas showed in the IWish video from PDC 2005. (discussed above at Development). Shishir Mehrotra of the WinFS Team shared some links to job postings and quoted some job descriptions covering positions at Project Orange.[103]

However, since WinFS development went dark, the status of Project "Orange" is unknown.

External links

Longhorn-era WinFS

Microsoft

Non-Microsoft

Reactions to WinFS delays

WinFS Beta 1 era

Microsoft

Non-Microsoft

Hal Berenson: WinFS, Integrated/Unified Storage, and Microsoft

General links

BetaArchive

Other forums

References

  1. 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 1.14 1.15 1.16 1.17 1.18 1.19 1.20 1.21 1.22 1.23 1.24 1.25 1.26 1.27 Microsoft User Experience Group (October 2003). The Windows File System. Aero User Experience Guidelines. Microsoft Developer Network (MSDN). Archived from the original on 21 December 2003. Retrieved on 17 March 2021.
  2. 2.0 2.1 Wilcox, Joe (4 March 2003). Leaked Windows hints at changes to come. ZDNet. CBS Interactive. Archived from the original on 30 September 2007. Retrieved on 17 March 2021.
  3. Schofield, Jack (29 June 2006). Why WinFS had to vanish. The Guardian. Guardian News and Media. Retrieved on 17 March 2021.
  4. 4.0 4.1 4.2 Grimes, Richard (January 2004). WinFS Lets Users Search and Manage Files Based on Content. MSDN Magazine. Microsoft. Retrieved on 17 March 2021.
  5. Microsoft User Experience Group (October 2003). The Windows File System. MSDN. Microsoft. Archived from the original on 5 December 2003. Retrieved on 19 March 2021.
  6. Everett, Cath (18 March 2005). Will Longhorn be worth the pain?. ZDNet. Archived from the original on 30 September 2007. Retrieved on 17 March 2021.
  7. Knorr, Eric (15 January 2004). Microsoft's Longhorn, Three New Technology Pillars. CIO. Retrieved on 17 March 2021.
  8. Udell, Jon (16 July 2004). The long view on Longhorn. InfoWorld. Retrieved on 17 March 2021.
  9. 9.0 9.1 Microsoft Announces 2006 Target Date for Broad Availability of Windows “Longhorn” Client Operating System. Microsoft (27 August 2004). Retrieved on 17 March 2021.
  10. 10.0 10.1 10.2 Bangaru, Vijay (29 August 2005). Welcome. WinFS Team Blog. Archived from the original on 23 August 2006. Retrieved on 17 March 2021.
  11. 11.0 11.1 11.2 Clark, Quentin (29 August 2005). Shipping WinFS Beta 1. WinFS Team Blog. Archived from the original on 20 August 2008. Retrieved on 17 March 2021.
  12. 12.0 12.1 12.2 Clark, Quentin (23 June 2006). WinFS Update. WinFS Team Blog. Archived from the original on 20 August 2006. Retrieved on 17 March 2021.
  13. Clark, Quentin (26 June 2006). Update to the Update. WinFS Team Blog. Archived from the original on 20 July 2006. Retrieved on 17 March 2021.
  14. 14.0 14.1 14.2 JonUdell (15 May 2008). Where is WinFS now?. Channel 9 MSDN. Retrieved on 17 March 2021.
  15. Mook, Nate (29 August 2005). WinFS Resurrected for Windows Vista?. betanews. Retrieved on 19 March 2021.
  16. 16.0 16.1 Mook, Nate (29 August 2005). MS Explains WinFS, Releases Beta 1. betanews. Retrieved on 19 March 2021.
  17. 17.0 17.1 17.2 17.3 Mook, Nate (14 September 2005). WinFS Examples in Action at PDC. betanews. Retrieved on 19 March 2021.
  18. Anand, Sanjay. My tryst with Destiny, err… Integrated Storage. WinFS Team Blog. Archived from the original on 31 October 2007. Retrieved on 17 March 2021.
  19. 19.0 19.1 19.2 19.3 19.4 Ricciuti, Mike (13 March 2002). New Windows could solve age-old format puzzle--at a price. CNET News.com. Archived from the original on 10 June 2004. Retrieved on 31 March 2021.
  20. 20.00 20.01 20.02 20.03 20.04 20.05 20.06 20.07 20.08 20.09 20.10 20.11 20.12 Thurrott, Paul (30 August 2005). Windows Storage Foundation (WinFS) Preview. Archived from the original on 2 July 2007. Retrieved on 17 March 2021.
  21. 21.0 21.1 Flynn, Brendan (12 March 2020). The Evolution of Windows Search. Microsoft Windows Search Platform DevBlogs. Retrieved on 17 March 2021.
  22. 22.0 22.1 jimmsta (19 March 2017). Re: [OFFER Windows NT Server "Cairo" (the real one!) 4.00.1].
  23. rthdribl (20 March 2017). Re: [OFFER Windows NT Server "Cairo" (the real one!) 4.00.1].
  24. Thurrott, Paul (6 March 2000). COM+, A Windows 2000 technology showcase. Archived from the original on 15 August 2007. Retrieved on 17 March 2021.
  25. Thurrott, Paul (13 November 2002). The Road to Windows "Longhorn". Archived from the original on 12 July 2007. Retrieved on 17 March 2021.
  26. Vaas, Lisa (10 March 2004). Yukon, Whidbey Releases Slip Yet Again. Retrieved on 31 March 2021.
  27. Thurrott, Paul (6 March 2000). The Road to Windows Longhorn 2003. Archived from the original on 29 June 2007. Retrieved on 17 March 2021.
  28. 28.0 28.1 Gates, Bill (20 May 2011). PDC 2003 Keynote with Bill Gates. Retrieved on 7 April 2021.
  29. Gates, Bill (20 May 2011). PDC 1996 Keynote with Bill Gates. Retrieved on 9 April 2021.
  30. Paul Thurrott, Keith Furman (28 October 2003). Live from PDC 2003: Day 2, Tuesday. Windows Network & .NET Magazine. Archived from the original on 27 November 2003. Retrieved on 17 March 2021.
  31. Greene, Jay (19 April 2004). How Microsoft Is Clipping Longhorn. BusinessWeek. Archived from the original on 18 April 2004. Retrieved on 31 March 2021.
  32. 32.0 32.1 Thurrott, Paul (26 October 2006). Paul Thurrott's SuperSite for Windows: Road to Gold: The Long Road to Windows Vista Part 3: 2004. Paul Thurrott's SuperSite for Windows. Archived from the original on 20 January 2007. Retrieved on 31 March 2021.
  33. Mike Ricciuti and Martin LaMonica (13 May 2004). Longhorn goes to pieces. CNET News.com. Archived from the original on 4 June 2004. Retrieved on 31 March 2021.
  34. Fried, Ina (10 December 2004). New file system has long road to Windows. CNET News.com. Archived from the original on 6 March 2005. Retrieved on 8 April 2021.
  35. LSoft Technologies Inc.. WinFS for Developers. NTFS.com. Retrieved on 17 March 2021.
  36. 36.0 36.1 36.2 IWish Concept Video. Microsoft. Archived from the original on 2 June 2006. Retrieved on 17 March 2021.
  37. 37.0 37.1 De Mar, Steve (5 October 2005). WinFS PDC Video. WinFS Team Blog. Archived from the original on 8 July 2007. Retrieved on 17 March 2021.
  38. 38.0 38.1 Shishir Mehrotra (14 September 2005). "WinFS" Future Directions: An Overview. PDC 2005. Microsoft. Retrieved on 19 March 2021.
  39. Session Details. Archived from the original on 10 December 2005. Retrieved on 28 March 2021.
  40. Ramesh Nagarajan (September 2005). “WinFS” Future Directions: Building Data-Centric Applications Using Windows Presentation Foundation “Avalon” and Windows Forms. PDC 2005. Microsoft. Retrieved on 19 March 2021.
  41. Nagarajan, Ramesh (21 September 2005). Postcard from the PDC. WinFS Team Blog. Archived from the original on 13 August 2007. Retrieved on 28 March 2021.
  42. Eric (10 March 2006). re: My tryst with Destiny, err… Integrated Storage. Archived from the original on 31 October 2007. Retrieved on 17 March 2021.
  43. Drucker, Samuel. “WinFS” and ADO.NET: Future Directions for Data Access Scenarios (PPT). Archived from the original on 20 December 2005. Retrieved on 17 March 2021.
  44. Bangaru, Vijay (1 December 2005). WinFS Beta 1 Refresh now available. WinFS Team Blog. Archived from the original on 20 May 2007. Retrieved on 17 March 2021.
  45. 45.0 45.1 Sinha, Shan. Showing off the next release of WinFS at Tech Ed 2006, in Boston! Join us!. WinFS Team Blog. Archived from the original on 8 March 2007. Retrieved on 17 March 2021.
  46. 46.0 46.1 Mooney, Paul (14 June 2006). WinFS is Sweet. Archived from the original on 23 June 2006. Retrieved on 6 April 2021.
  47. 47.0 47.1 47.2 47.3 47.4 Bangaru, Vijay (16 December 2005). WinFS Mailbox II. WinFS Team Blog. Archived from the original on 4 February 2007. Retrieved on 20 March 2021.
  48. Windows Vista Product Guide (DOCX) 44–51. Microsoft (2006). Archived from the original on 1 July 2011. Retrieved on 17 March 2021.
  49. 49.0 49.1 49.2 Dimitrova, Kati. About WinFS Rules. WinFS Team Blog. Archived from the original on 11 August 2007. Retrieved on 17 March 2021.
  50. Bentz, Ben (31 October 2006). Query Composition: Building a search upon another search. Shell: Revealed Blog. Microsoft. Archived from the original on 15 December 2006. Retrieved on 17 March 2021.
  51. FILESTREAM (SQL Server). Microsoft (11 January 2018). Retrieved on 6 April 2021.
  52. Clarke, Gavin (12 February 2013). Billionaire baron Bill Gates still mourns Vista's stillborn WinFS. The Register. Retrieved on 17 March 2021.
  53. 53.0 53.1 53.2 53.3 53.4 53.5 53.6 53.7 53.8 WinFS: Overview > WinFS: Unified Storage System for Windows, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  54. 54.0 54.1 54.2 54.3 Berenson, Hal (14 February 2013). WinFS, Integrated/Unified Storage, and Microsoft – Part 1. Retrieved on 29 March 2021.
  55. 55.0 55.1 55.2 55.3 55.4 55.5 55.6 Grimaldi, Sean (December 2005). The WinFS Files: Divide et Impera. MSDN. Retrieved on 17 March 2021.
  56. 56.0 56.1 Wildermuth, Shawn. A Developer's Perspective on WinFS: Part 1. MSDN. Retrieved on 17 March 2021.
  57. Rizzo, Thomas (17 March 2004). WinFS 101: Introducing the New Windows File System. MSDN. Retrieved on 17 March 2021.
  58. 58.0 58.1 Vijay Bangaru. Unify, Organize, Explore, and Innovate. Oh my! (Part 2). WinFS Team Blog. Archived from the original on 2007-06-09. Retrieved on 2007-06-30.
  59. WinFS Overview, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  60. Bangaru, Vijay (24 October 2005). Unify, Organize, Explore, and Innovate. Oh my! (Part 1). WinFS Team Blog. Archived from the original on 8 July 2007. Retrieved on 17 March 2021.
  61. 61.0 61.1 Voellm, Tony (14 September 2005). Performance, Performance, Performance. WinFS Team Blog. Archived from the original on 7 August 2007. Retrieved on 28 March 2021.
  62. Vijay Bangaru (4 November 2005). Unify, Organize, Explore, and Innovate. Oh my! (Part 3). WinFS Team Blog. Archived from the original on 16 August 2007. Retrieved on 17 March 2021.
  63. 63.0 63.1 Bangaru, Vijay (18 November 2005). Unify, Organize, Explore, and Innovate. Oh my! (Part 4). WinFS Team Blog. Archived from the original on 18 August 2007. Retrieved on 17 March 2021.
  64. The Channel 9 Team (24 May 2004). Samuel Druker - How does Outlook Express in Longhorn use WinFS?. Retrieved on 9 April 2021.
  65. Bangaru, Vijay (26 September 2005). WinFS Backup/Restore at VSS Plugfest. WinFS Team Blog. Archived from the original on 17 August 2007. Retrieved on 17 March 2021.
  66. Koo, Heesung. Copy CD. Storage Design Team Website. Retrieved on 9 April 2021.
  67. Longhorn.ms (17 February 2016). Hillel Demoes Longhorn build 4050 (Extended cut). Retrieved on 8 April 2021.
  68. 68.0 68.1 Koo, Heesung. Music library. Storage Design Team Website. Retrieved on 9 April 2021.
  69. 69.0 69.1 69.2 69.3 69.4 Koo, Heesung. Virtual folders. Storage Design Team Website. Retrieved on 9 April 2021.
  70. 70.0 70.1 70.2 70.3 70.4 70.5 70.6 70.7 70.8 70.9 Microsoft User Experience Group (October 2003). User Experience (Aero): Contacts (Microsoft Access 2002 Technical Articles). Aero User Experience Guidelines. MSDN. Archived from the original on 4 April 2004. Retrieved on 10 April 2021.
  71. The Windows Team. Take a Self-Guided Longhorn Tour. MSDN. Archived from the original on 30 October 2003. Retrieved on 29 March 2021.
  72. JabbaPapa (12 August 2004). Using WinFS in Codename Longhorn 4074. Retrieved on 29 March 2021.
  73. WinFS: Overview > WinFS System Architecture, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  74. 74.0 74.1 74.2 74.3 74.4 74.5 van der Meer, Erwyn. First Look on WinFS Beta 1. Archived from the original on 9 June 2007. Retrieved on 20 March 2021.
  75. 75.0 75.1 75.2 75.3 75.4 75.5 75.6 75.7 75.8 Malik, Sahil (25 January 2006). WinFS Basics: Working with a Data Store. developer.com. Retrieved on 20 March 2021.
  76. 76.0 76.1 76.2 76.3 Bangaru, Vijay (13 September 2005). WinFS Mailbox. WinFS Team Blog. Archived from the original on 22 May 2007. Retrieved on 20 March 2021.
  77. 77.0 77.1 77.2 WinFS as a File System > WinFS Stores and Shares > WinFS Stores, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  78. 78.0 78.1 78.2 WinFS Type System, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  79. 79.0 79.1 79.2 79.3 WinFS Type System > WinFS Type System Basics, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  80. How Do I... > How Do I Use Other Important WinFS Features > Create and Use Custom Schemas > Create a Custom Schema, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  81. WinFS Type System > Scalar and Entity Types (WinFS Type System), Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  82. 82.0 82.1 82.2 WinFS Type System > WinFS Type System Basics > WinFS Items, Item Fragments, and Item Extensions, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  83. 83.0 83.1 WinFS Type System > WinFS Type System Basics > Associating WinFS Items (WinFS Type System), Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  84. WinFS as a File System > File Metadata Promotion and Demotion in WinFS > System of WinFS File Promotion and Demotion > WinFS File Metadata Handlers, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  85. WinFS Rules > Introduction to WinFS Rules, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  86. 86.0 86.1 WinFS Glossary, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  87. 87.0 87.1 87.2 87.3 87.4 WinFS Rules > Introduction to WinFS Rules > WinFS Rules Model, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  88. WinFS Programmability > WinFS Programming Techniques > Querying and Retrieving Objects Stored in WinFS > Overview of WinFS API Query Capabilities, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  89. 89.0 89.1 Miranda, Luiz. Using OPather To Help Write Queries. WinFS Team Blog. Archived from the original on 19 November 2007. Retrieved on 29 March 2021.
  90. WinFS Programming Techniques > Querying and Retrieving Objects Stored in WinFS > WinFS OPath Query Language Reference, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  91. WinFS Sync, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  92. WinFS Sync > WinFS Sync Overview, Microsoft WinFS SDK Beta 1 Documentation, 27 July 2005
  93. Padgett, Neil (17 November 2005). Getting Data Into WinFS with WinFS Synchronization. WinFS Team Blog. Archived from the original on 17 February 2007. Retrieved on 28 March 2021.
  94. File System Sync Adapter, File System Adapter Read Me.wri, stored at the Unsupported\FileSystemAdapter\ folder of the WinFS Beta 1 install CD
  95. 95.0 95.1 Microsoft Rave, User Manual.wri, stored at the Unsupported\Rave\ folder of the WinFS Beta 1 install CD
  96. 96.0 96.1 Jhaveri, Vivek (8 September 2005). Synchronize your WinFS data with Microsoft Rave. WinFS Team Blog. Archived from the original on 4 February 2007. Retrieved on 28 March 2021.
  97. Lee, Wei-Meng (2005-09-07). WinFS -StoreSpy. Retrieved on 2007-06-30.
  98. 98.0 98.1 98.2 Release and Install Notes for StoreSpy, Readme.rtf, stored at the Unsupported\StoreSpy\ folder of the WinFS Beta 1 install CD
  99. StoreSpy should become StoreEditor (9 April 2021). Archived from the original on 29 September 2007. Retrieved on 30 June 2006.
  100. 100.0 100.1 scobleizer (29 August 2005). Shishir Mehrotra - WinFS beta 1 team meeting. Retrieved on 29 March 2021.
  101. Demiliani, Stefano. WinFS StoreSpy v0.8 for the WinHEC 2004 Longhorn Build. Archived from the original on 21 June 2004. Retrieved on 28 March 2021.
  102. Nagamangalam, Sanjay. Visualizing WinFS Types. WinFS Team Blog. Archived from the original on 16 August 2007. Retrieved on 28 March 2021.
  103. Mehrotra, Shishir. The killer app for getting users organized. WinFS Team Blog. Archived from the original on 9 March 2007. Retrieved on 28 March 2021.