WinFS

WinFS
Component of Microsoft Windows
WinFSBeta1Splashscreen.png
WinFS Beta 1 splash screen

WinFS (Windows Future Storage, also known as Integrated Storage and the Windows Storage Engine) was the codename for an advanced storage subsystem slated to be included in Windows Vista. It was designed for persistence and management of structured, semi-structured, and unstructured data.

WinFS is based on modified SQL Server technologies and ran on top of NTFS. WinFS API was included in the System.Storage namespace.

Development[edit | edit source]

WinFS was first introduced by Bill Gates and Quentin Clark on PDC 2003.

"With WinFS, developers can take advantage of prebuilt data structures in their applications, and extend those structures to handle their specific requirements and add unique value to the application by creating new structures."[1] – PDC 2003

In PDC 2005, a video titled IWish showed WinFS-related mockups such as notes and calendar apps as an example of how software developers can take advantage out of it. The beginning of the video explained WinFS with four words: "Unify", "Organize", "Explore" and "Innovate".

WinFS processes only existed in pre-reset builds, however WinFS folders would not be implemented until build 3706. Later, it was decided on 27 August 2004 that Microsoft would release WinFS as a downloadable data framework after Windows Vista shipped.[2] As a result of this, Microsoft released WinFS Beta 1 to MSDN subscribers the next year. This version of WinFS works on Windows XP Service Pack 2 with .NET Framework 2.0 (as a result, it's included in the System.Storage namespace). WinFS Beta 1 was also expected to be put on DVD's in PDC 2005 to be released to the attendees.[3] Quentin Clark, the Director of Program Management for WinFS, mentioned a storage system similar to WinFS would eventually be an integral part of Windows and the first WinFS beta was released in order to get the proper audience and applications that ran on WinFS.[3] Later, Microsoft canceled WinFS in 2006.

After getting scrapped, WinFS features were ported over to ADO.NET Entity Framework, several Windows shell components (such as breadcrumb bar and saved searches) that would make their way into Windows Vista and Microsoft SQL Server.

Bill Gates said that WinFS was his biggest disappointment ever in 2013 because of how WinFS was ahead of its time and it will re-emerge.[1]

Motivation for development[edit | edit source]

Problems with the NTFS file system[edit | edit source]

A traditional NTFS data system would only store the data as a packed stream of bytes. Now, if the data is only recognizable from a data byte standpoint there's no way to identify the data as what it actually is.

Think about a Word document for example. You need to open it on a document editor/viewer that can see whether this is a Word document or not. There's no way to see if this is the Word document you're looking for without looking at the contents of it and verifying if its what you're looking for.

The second major problem in the traditional NTFS data system is it's uncategorizable and too hard to find.

If we go back to the Word document example, imagine if there were similar documents to the one we were looking for and they have different names but only one of them is what we're looking for. And they're all created at the same date which leads us to a bigger problem where the date and the title isn't enough to find which document we're looking for. You can't just look at the document itself and call it "That's what I was looking for!" with traditional NTFS unless you spend hours checking it.

The third major problem is it didn't allow files to be stored in multiple places without duplicating the file. Even though you can add additional metadata to the file, applications often would not be able recognize the additional metadata and would have to rely on NTFS anyways. This problem also wastes disk space.

There are other problems about traditional NTFS such as:

  • No data backup and restore without a primary storage system
  • Customizability with only the data's and directory's name.
  • Ability to only search as a directory path index.
  • Better synchronization

WinFS was supposed to be the solution[edit | edit source]

WinFS was supposed to store all structured, semi-structured and unstructured data at the same time and they would relate in a central data store where users and apps can access and operate on it. This made the idea of duplication useless since the user can access the same file over different apps and places from the same data store.

With WinFS you don’t need a separate file. Your data can be described as a WinFS schema and instances of that data stored in WinFS itself. You and other apps can operate on this data using the WinFS APIs. If you need to keep your separate file, you can write a metadata handler to promote and demote metadata between your file and the store. – Vijay Bangaru, WinFS Mailbox[4]

Search concept that uses WinFS. Various features here would make it to Windows Vista.

WinFS also helps finding the data quicker as the user can safely find things without needing to know anything technical. Like the Word document we were looking for, you could find the document with a search filter about what you're actually looking for as "a business report" or "a book I finished writing two weeks ago" rather than "Last modified in 19 March 2004" or "Owned by Administrator".

WinFS allowed searches to be more complex, with better handling of cross-referenced non-file-based data such as emails.

WinFS allowed ISV's to define their own data types and provide their schema to the data framework. With "Information Agent", the user can set new properties for items such as appointments, birthdays etc.

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.

– Vijay Bangaru, WinFS Mailbox[4]

In traditional file systems, users create files and store them in folders. In "WinFS", an item can exist in multiple folders. When users create an item, they specify the folder item where the item resides. This creates a holding relationship between the folder item (source) and the newly created item (target). Users can also create additional holding relationships to the same target from some other folder. A folder can also contain multiple items. That is, a folder item contains a collection of holding relationships, each pointing to a different (target) item. For example, a user can include a certain song in several playlists. The music file is not copied or moved to any folder location; it stays where it is and the different playlists keep track of the actual file.

If a user deletes a holding relationship from a folder, the target item in that relationship no longer exists in that folder, but the item may still remain in "WinFS" if it is a target of a holding relationship in some other folder. If you delete an item, however, all the holding relationships from different folders that have the item as their target are removed.

– The Windows File System, Microsoft User Experience Group[5]

WinFS would also allow 2 new backups: "store level backup" would allow people to get all their files back if a hard drive corruption happens and "item level backup" would allow people to revert changes of an item.

Because non-file-based data like contacts and e-mail messages are cross-referenced with files, users can perform more complex searches. One example could be, "Look for information about Jim from 1987 to 1999.". – The Windows File System, Microsoft User Experience Group[5]

WinFS Notifications allowed frequently changing data to be handled better with "ItemChangedEvent" that uses the .NET Event model.

WinFS was also supposed to provide services for apps to use without worrying about proprietary data and the ability to share data between WinFS apps and non-WinFS apps.

Finally, WinFS would stop the need of folders such as "My Documents" and "My Pictures" as WinFS would display those files related to a particular demand of the user.[3]

User interface[edit | edit source]

WinFS Storage UI concept by Microsoft[5]

WinFS would include these user interface elements in Windows:

  • Breadcrumb Bar (made its way into Windows Vista and still exists to this day)
  • Preview Pane (made its way into Windows Vista and still exists to this day)
  • Filter Bar (made its way into Windows Vista and still exists to this day)
  • FolderType commands (did not exist in the final version of Windows Vista however in Windows 8 and later, Ribbon in File Explorer has a similar functionality)
  • List View (made its way into Windows Vista and still exists to this day)
  • Wordwheel filter (made its way into Windows Vista as an in-folder search box and still exists to this day)
  • Storage Favorites (made its way into Windows Vista as in-folder search filters. It was later removed in Windows 10 build 18894 with the introduction of modern search experience in File Explorer)

WinFS-based unsupported applications[edit | edit source]

  • Microsoft Rave
  • StoreSpy
  • File System Sync Adapter
  • Type Browser
  • OPather
  • Project "Orange"

Other projects similar to WinFS[edit | edit source]

A similar data framework can be found in Cairo known as Object File System and their successors Storage+ and Relational File System.

Gallery[edit | edit source]

References[edit | edit source]

  1. 1.0 1.1 Clarke, Gavin. Billionaire baron Bill Gates still mourns Vista's stillborn WinFS, The Register. 12 February 2013.
  2. WinFS Let's Users Search and Manage Files Based on Content, Microsoft Learn. 11 October 2019.
  3. 3.0 3.1 3.2 Mook, Nate. MS Explains WinFS, Releases Beta 1, BetaNews. 29 August 2005.
  4. 4.0 4.1 Bangaru, Vijay. Whats in Store - WinFS Mailbox, Microsoft Developer Network. 13 September 2005.
  5. 5.0 5.1 5.2 WinFS - The Windows File System, Microsoft Developer Network. October 2003.

External links[edit | edit source]