Back when Windows Vista was still known as Windows Longhorn, the operating system contained a very interesting and promising feature, a feature promoted as one of the ‘pillars’ of Longhorn: WinFS. WinFS was a storage subsystem for Windows, based on a relational database, that could contain whatever data you wanted to put in it. Thanks to the relational properties of the database, you could then create relationships between data, or let the computer do that for you.WinFS would allow programmers to do all sorts of wild and radical things with data in their applications, and back in 2003, during the Professional Developers Conference, Microsoft showed a video demonstrating what could possibly be done with WinFS. This video, called IWish [.wmv], can still be downloaded from Microsoft’s website.
Sadly, the video only showed what you could do with WinFS in the future, because the version of WinFS that shipped with the Longhorn test releases back then was, well, disturbingly not useful. It did not do a whole lot of useful stuff back then, and to make matters worse, it was the world’s worst resource hog ever. Disabling WinFS would turn your Longhorn build from a crippled snail into a fairly usable operating system – testament to its yet unoptimised nature.
We all know what happened to WinFS after its audience-woowing days of 2003. It was first slated for release after the final release of Windows Vista, as an add-on, but later on, in 2006, it was cancelled altogether. Parts of WinFS ended up in Microsoft SQL Server and ADO.Net, but it would no longer be delivered as a stand-alone product or a Windows component.
Since then, we haven’t heard a whole lot on whatever happened to WinFS and its associated technologies – that is, until a few days ago. Jon Udell has published an interview with Quentin Clark, who led the WinFS team from 2002 until 2006, when he joined the SQL Server team as a general manager.
One of the burning questions that rang through forums everywhere was whether WinFS was a filesystem or not. Clark explains that it depends on your viewpoint:
People would often ask me if WinFS was a file system, and I’d struggle with the answer to that, because, well, you know, from a certain standpoint the answer is yes. The stuff I saw in the shell, was it in the WinFS filesystem? Well, OK. But there are no streams inside the database. So from a user perspective, those files were “in” the filesystem. But from an API perspective it was more nuanced than that. I could still use the Win32 APIs, get some file, open it, and from that point forward the semantics were exactly like NTFS. Because it was NTFS at that point.
Clark explains that you can look at SQL Server 2008, ADO.NET, and VS 2008 SP1 today and trace its lineage right back to WinFS. The schemas of WinFS and the required technology, which were used to store properties of objects, were shelved, because they are not needed any more. The WinFS APIs are now part of ADO.Net as the entity framework. Finally, “What’s getting delivered as part of VS 2008 SP1 is an expression of that, which allows you to describe your business objects in an abstract way, using a fairly generalized entity/relationship model.”
Clark details a whole set of new features and ideas that try to marry the database world with the filesystem world, and how they are trying to do this in a step-by-step fashion. According to Clark, this is exactly what lacked during the Longhorn days of WinFS. “That’s kind of where we got tripped up in the Longhorn cycle. We were building too much of the house at once. We had guys working on the roof while we were still pouring concrete for the foundation.”
Clark remains hopeful about the future of integrated storage. “But I do at some point want to see that place in my heart fulfilled around the shared data ecosystem for users, because I believe the power of that is enormous,” he explains, “I think we’ll get there. But for now we’ll let the concrete dry, and get the framing in place, and then we’ll see how the rest of the house shapes up.”