Friday, May 29, 2009

Broken Metaphors, Broken Promises

So I decided I'd give Microsoft's Windows 7 a fresh try, doing a full install from scratch and choosing only their desired defaults, in an attempt to use it "the way Microsoft intended." I figured that perhaps I was getting a bit stuck in my ways, and that perhaps some of my ways of doing things are outdated our outmoded and I should try doing things as though I were learning how to use Microsoft's Windows for the first time, and let go of the past. Use a fresh pair of eyes.

I got the system up and running quite easily. Microsoft makes install a painless affair these days, which is much appreciated. Its a straight-forward and simple interface for choosing which drive to install upon, and deleting any existing partitions is quite simple, as is recognizing which drive is which, when more than one is plugged in. These are huge time savers, and give me the sense that what I am doing is easy, and simple, which keeps the anxiety down to an absolute minimum. Perhaps this is one of those truths that is under appreciated: a simple interface that gives you the freedom to be in control directly reduces anxiety that you may make a devastating mistake (like obliterating the wrong partition or installing on the wrong drive). Overall, the install is a lovely thing.

Once the system was up and running, I had a very easy time with device drivers. As in, it came equipped out of the box with everything my systems needed (that's right, systems, plural. I actually installed to an older Core 2 Duo E6600 on an Asus mobo, as well as to my newer i7 920 on an MSI x58 Pro mobo. And in both cases, all necessary devices were found & installed without any aditional web searches, or appeals to a non-extant floppy, etc... they were simply there, out of the box, like I would always want them to be).

So in terms of installation, Windows 7 makes an excellent showing for itself. There are some short-comings. Mainly in terms of missing features which I have desired since Windows NT: namely, the ability to set different parts of the OS to use different partitions or different drives to store different parts of itself. For example, I have often wanted to set where the user's folders should go. On the OS drive? Nope, I would much prefer them to be on a larger drive, so that I can spend a small fortune for the boot drive but keep pretty much everything else elsewhere. Same thing for the Program Files. I would love to be able to place these on another volume, so again, the OS would be on a super fast but smaller boot drive (say an SSD, though in the past it would likely have been a 10K RPM drive), while everything else would be placed on other drives, and not necessarily all on the same other drive. For example, how about C:\ is the OS, D:\ is Program Files, and E:\ is User's folders. The pagefile would be another thing that should be configurable at installation, though this is more minor these days given that the OS can have that reconfigured after installation.

Since I was doing this installation with the intention to "do it as Microsoft intended", when I was presented with the "type of network" I chose "Home Network" rather than skipping this phase. Once things were up and running, I connected the two machines to the same homegroup... Microsoft's newest spin and interface for sharing files & folders on a private LAN. This process was quite easy, and again I applaud the programmers and designers involved in making this a fairly obvious and simple configuration step.

I began to get exicted that perhaps, at long last, Microsoft had built an abstraction that would actually allow ordinary human beings to easily set what files & folders should be shared, and have some confidence that they were actually limited to those folks that they intended, to whit, those in their local homegroup. Poking around the interface in Windows quickly showed me that I could share any of my libraries to a homegroup, and that I could easily add additional folders to a library! Voila! I had a good set of abstractions for both my local machine and for accessing those same resources across the network: just place them in a shared library, and I'd be good!

So I added E:\Music, where I've got my 55GB of music that I've ripped from my CD collection to my Music library. I was able to easily set the library to save new music to the E:\Music folder, rather than my Users\...\My Music folder! Good, this is shaping up to be a useful feature! Now all I needed to do was to see if I could access this stuff easily from the second PC, the only other machine in my homegroup at the moment...

And this is where Microsoft's abstractions and interfaces fell flat on their faces. I wish this was a new experience, an anomaly, a fly in the ointment. But frankly, I've been a sometimes fan-boy and sometimes critic of Microsoft since Windows 3.0 (I started out as a major fan-boy, dead set against the lame OS-2 interfaces, and the even lamer GEMM and other similar "GUI/Multitasking" OSes of the time).

When I logged in to my other PC (the E6600 based machine), I was able to see my main PC instantly! Good! This itself is perhaps a huge improvement over Vista. Plainly stated: Microsoft's file-sharing code has been abysmal since they killed NetBIOS / NetBEUI in Vista (really since XP, since they deprecated it there, which meant that unless you manually installed it and configured things right, XP acted just like Vista and failed to see most of the machines on the network, and whenever it did happen to see a machine, it would often have long inexplicable delays when navigating to a given network share or machine).

I then opened the Music share, expecting to find the 55GB collection of music hosted on my primary PC, only to see a library / share that doesn't contain the folder & files that I intended it to! I just wasn't there! Huh?!

So like any 1/2 way sensible PC user, I began experimenting. I went back to my PC, and made sure that the necessary folder was in fact a part of the library. Yes, yes it was. Okay, so make sure that the library is shared. Hmm... this was not as self-evident. Right-clicking on the library gave me a list of choices: Make it private, Share with homegroup read-only, or share with homegroup read+write. But there is no indication of whether it is currently shared. I realized that I could open up the control panel and dig down in there until I found the homegroup configuration applet, and that would in fact have a check box indicating that the Music library was shared. But from the windows explorer, I had no direct way to confirm this. Knowing too that there was such an entity available to my other PC indicated that it was in fact shared made it further obvious that it was... but still - no way to verify this directly, on the object itself (remember object oriented interfaces..?).

Okay, so no way to verify it, so I'll just select "share with homegroup read+write" again. Check this on the other PC: nope, still no additional music folder within that library across the network.

Go back to my primary PC. Lets explicitly issue the share with homegroup to the Music folder within the Music library to try to get Windows 7 to acknowledge that "yes, everything in this shared library should, um, yes, be shared." Go back to my other PC and check... nope. No Music subfolder. (Another note to the UI designers at MS: There isn't any obvious feedback when you share something from Windows 7 that it is... well, shared. I tried issuing the command to share this folder multiple times... because I wasn't sure I had clicked it right the fist time given that NOTHING WHATSOEVER APPEARED TO HAPPEN the first time... or the second.)

And then I noticed something on the remote PC: my main PC now had an additional share listed under it: Music with an icon like the older versions of Windows would use to indicate a shared folder: a folder connected to an RNC-style pipe-like network... in addition to the shared Music library. Ugh! So now I appeared to have shared the Music folder in question, but under its own share, not as part of the Music library on my principle PC! Yuck!

After a few more attempts to unshare that share, and explicitly uncheck and recheck the shared status of the library after adding Music to it, I eventually gave up. I assume that based on this, Microsoft just didn't allow for someone to share something through a library other than the folders that were originally there (and I assume that are physically located under \Users\, which I noticed is actually a share that Windows 7 automatically created, but doesn't appear as one when I browse the PC from my other PC).

And so we end up with a broken metaphor: A library is a Microsoft concept for agglomerating a set of folders on my PC under a common heading to make it easy to store associated material under a single navigable start point. And a library can be shared. But a library can't share those things I add to it, making it... broken.

I'm a sophisticated, dyed in the wool, hard as nails, software developer and computer user for more than 25 years now. And I can look at all of this, and find the limits of what it can do for me, and I can shake my head and curse Microsoft's ineptitude, and get what good there is out of this situation. I can even begin to plumb where they probably went wrong (in intrinsically sharing Users\ but failing to fully support agglomerated folders transparently), and this kinda-sorta makes some sense to me. Its stupid, but I get why it required additional effort and thinking on the designers parts to get this element right, why it didn't "just work" as one would expect it would.

But how do I explain this to anyone? When my wife wants to share something... how does she come to terms with it? When my in-laws get stuck on this, what is my answer to them? I'm sure many of you have experienced that moment when they look at you like you're lying to them, like you're intentionally giving them a hard time, that somehow you, as representative of all things computer, have conspired to make this thing much more difficult and unfriendly than anyone in their right mind would ever think possible! That you must be in on some sadistic secret, intended to hurt "ordinary people." And to be honest, I sometimes think I am. Or at least, I look at Microsoft and I think they surely are! I mean, how much harder could it possibly have been to make this obvious usage scenario work intuitively, correctly, all the time, without myriad bizarre-o rules and short-comings? And why even bother to have such a half-baked feature as this? Besides causing sadness, frustration, and pain in their unfortunate and unwitting victims, what good does such a miscarriage of UI-design yield?

This whole sordid episode reminds me of so many other Microsoft creations and inventions. The "compatibility folders" for Vista and above. Their so-called "security" in Vista and above. The many poorly conceived and implemented abstractions for the file system over the years, which leave users only more and more hopelessly unable to find their stuff, and comprehend what they're doing when they save a file. Or how about their convoluted and often useless system for managing file type associations?

The library metaphor is a solid one. But a half-assed implementation is a death-blow to its usefulness and ultimately to its adopt-ability by the average user.

It seems to me that Microsoft is forever trying to make things better for end-users by going in absolutely, utterly, completely the opposite direction that they should: instead of simplifying things to make them comprehensible, they add additional abstraction and complexity, further obscuring and making utterly incomprehensible what should be a very simple thing indeed. How, I ask Microsoft's designers and engineers, is added complexity ever, in a million epochs, going to increase comprehendability?

Or do you see things differently?

No comments:

Post a Comment