The PC file system is a double-edged sword. The file systems of DOS/ Windows have allowed the PC Users to enjoy a simple and flexible store for data for a long time. And although it's designed to be a metaphor for traditional file cabinets, with folders and files, in reality, it is just as limited.
Sure, I can use Windows Explorer to move files about, copy them over the network and delete (then recover) them. People felt windows gave them freedom to explore their PC - within the windows environment - because they could access all the data on their Hard Disk, Floppy disk or CD-ROMs. It was called Windows Explorer for a reason, don't get me wrong - I'm not trying to belittle Windows 95 by saying its shell was basically a File Manager - but it was certainly a prominent feature - and one that people liked.
But this level of point-and-click flexibility which Microsoft really committed to with Windows 95 also haunts us today.
Here's why -
It doesn't give us a rich data experience, it allows users to play around with stuff they shouldn't need to and - it doesn't make the separation between executable code and data very well. It doesn't allow files to be "paper clipped" together in the same way they are in the real world - unless you put them in a folder. It doesn't make the separation between replaceable data (i.e. that which came from a CD-ROM or network installation) with that which is original material from the user and the file system boudary is a physical device.
Not only is user data and system data all mixed together on this "all things to all people/programs" store, but the user data can typically only be understood by the Application that was used to create it.
Still keen on the file system?
"But wait" you say - "if you want a rich data experience use why don't you use a database?"
Databases sit atop the file system and provide a standard way (SQL) to access data stored by a proprietary server (i.e. SQL Server, DB2, MySQL etc).
The schema for each table is defined by the author of that table. e.g. there is no de-facto standard for a Contact.
There is another problem - the implementation of SQL tends to vary between vendors. There is another problem still - SQL Implementations tend to be server-based, and therefore have boundaries like file systems do.
So, on the one hand we have File Systems which are too accessible, too simple but have low overhead and can store anything and on the other hand we have Databases which are too complex and too customisable, rely on servers and have high overhead.
So what's the solution?
We need to bring the two concepts together to produce a rich data experience, with the simplicity of a file system. My computer should become "My Data" - that's all I'm interested in, do I care about the fragmentation of my file system, do I care how many files are on the root of drive C: ? Do I want to be able to copy the program files folder? Do I want to trawl through folders to find the right file?
I want my data, I want other people's data and I want it in a rich way and most importantly - I want it instantly!
So how is Microsoft doing against this yardstick?
Well since Windows 98 we've been trying to sort out the mess of the file system - we added "My Documents", with Windows 2000 we modified Explorer to hide the root of drives and Windows directories by default. With XP we got rid of My Computer from the desktop.
With Windows Vista we'll introduce the first part of that rich search experience, and we'll introduce transactional support for NTFS.
Later we'll introduce WinFS which is our first attempt at bringing a database and file system together.
I have a dream, where C: is irrelevant. I never want to go into "My Computer" again - I don't want to know what the folder hierarchy of my hard drive is, and I don't want to have to wait ages to find anything.
I want to deal with people, document titles and types. If there is an obscure document written by a singe author stored on a server under the stairs in some pokey building in a far away country - I want to be able to find that document in seconds!
If I save a file to my USB memory stick and put it in my pocket - then when I search for that file on my laptop I want it to know that I put that file on that memory stick, I want it to tell me when I did and offer me an offline copy of that memory stick from when it was last inserted - (after all what else are we doing with all that free space on people's hard disks?)
If I'm in a meeting at a customer site with another colleague - and I'm trying to access a document stored at our company HQ - but I have no connectivity, I want my laptop to also query my colleagues laptop to see if his laptop has a copy of this file and access it from there.
I want data at my finger tips, across physical device boundaries and I want to be able to share it with other people seamlessly.
I wait in anticipation...