Microsoft has a pleasing blog setup that has the Windows 7 team write up posts about development of Windows 7. On the 19th of November, a post about the history of the Taskbar and the ideas they used to improve it was posted. The post was generally great. It explained the trade offs about disk usage over time. Windows, over the years, got progressively bigger in order to handle users demands and expectations.
Ooo, disk space. The thing I absolutely hate about Windows in this respect isn’t that it uses lots of disk space. I can live with that. 15GB is nothing when I’ve got 500GB harddrives.
The problem is that Windows decides that all of this must pretty much be one atomic blob. It’s 15GB on *one* disk on *one* partition.
This causes problems in several ways. First, for those of us who prefer to keep Windows on a separate partition so we can easily reinstall it, it’s hard to predict how much disk space to put on that partition. And later on, when you inevitably run out of disk space *anyway*, being able to move parts of Windows to a separate partition would be a lifesaver.
Of course this would be simpler to do for some components than others. I’m not suggesting that the \System32 folder should be able to be relocated, but all the rollback/uninstaller stuff could easily be relocated, both when installing Windows and later on, when the folder already exists. It seems like half the folders under \Windows don’t need to be there at all. “Offline Web Pages”? Isn’t that something my browser needs to keep track of, rather than the OS? The log files from each and every installation? I don’t mind them existing, but why under \Windows? The place is crowded enough as it is. This is pretty much the same reason why I don’t use the many folders you create by default under my user account folder. I don’t want my many gigabytes of music stuffed into *that* folder on *that* partition. That’s where I want to keep the data I work with and change on a regular basis. My music is much more static, I just need to listen to it. That can easily be somewhere else, even in a folder with no write access, I don’t care, just not there.
And Program Files? Great, *one* folder for all programs, which quickly, especially once you install a few games, end up taking hundreds of gigabytes. The idea that all of a user’s data can fit into two folders (User folder and Program Files) is just ridiculous.
I could (and do) use hardlinks and junction points to try to split this up, but this brings us to another important point. Pretty much nothing, except the core NTFS filesystem takes these into account. As you showed, disk space usage is computed wrong because Explorer doesn’t understand the various kinds of symlinks. Installers *always* fail to understand them as well. If I install something to D:\Games\SomeGame, the installer will check how much disk space is free on D:\, whether or not Games or SomeGame are junction points, which leads to applications refusing to install when there are plenty of disk space, or installers running out of disk space after they’ve passed the disk space check (Which, coincidentally causes the VS2008 installer to hang so it has to be killed from Task Manager).
Please, if the necessary API’s don’t yet exist, add them so installers can compute *correct* disk space requirements, and for heavens sake, make your *own* software (like Explorer) aware of the feature you added to the filesystem almost a decade ago.
I already mentioned that I’d like to be able to relocate the folders containing uninstall/rollback information, which really has no business being hidden in \Windows, but another question is, why is it there at all? Yes, it’s a valuable *option*, but is it something that all users need for everything they install, forever and ever?
Once a piece of software has turned out to install correctly, and work as expected, I don’t really need the original installer any longer, do I? I can’t imagine why Id would ever uninstall a Windows service pack or or other update. So why do I have dozens and dozens of $NtUninstall folders under \Windows?
Yes, for the paranoid sysadmin, that might be a useful option. But *option* is the keyword then, isn’t it? The rest of us have no intention of ever uninstalling KB954211, whatever it is, so why do I need a $NtUninstallKB954211$ folder?
Finally, relying on Windows Update to install missing drivers is… interesting. I’ve never ever managed to find the correct driver there. Occasionally, it suggests I install some 6 month old driver, or more often, one with no version number or date at all.
Of course keeping it up to date with new drivers is a pretty big task, and I don’t blame you for not offering the latest version of every driver. But failing to tell me which version you’re offering to install is unacceptable, and makes Windows Update completely useless for drivers. I need to know which *version* of the driver you’re installing, the date at which it was released, and if you’re feeling friendly, detection of the currently installed driver version would be handy too. And of course, a link to the manufacturer so I can manually grab the latest driver in case you’re offering a very old one.
Instead, what I see now is pretty much “New ethernet driver. See this link for more information”, and then one of the infamous links Microsoft does so well, linking to a generic and totally useless help message saying I should contact my system administrator for more information.
I’ve thought something along the lines in the comment above for quite some time. Why do I have to have my music videos and documents attached to that single drive? I run JkDefrag every few days and there is always a huge junk of red. Huge. Why does windows need to store all sorts of garbage, like service pack uninstallers on that drive? Optionally I don’t need them and they’re deleted or I optionally keep them, but somewhere else. The program files folder has always been silly to me. When I was younger and I didn’t know as much, I thought that by copying the programs folder, the programs would allow me to use all of the programs that I would normally use. I can see why Windows wouldn’t want you to have Programs Files folder elsewhere, since it’s pretty fundamental, but it’s nevertheless annoying.
How about a compromise? Allow users to choose a primary and secondary storage location for their account folder. Should the primary location be removed who knows what (who knows why), the secondary takes over. For instance, I would have my primary be E:/Users/Ryan/ and secondary would be C:/Users/Ryan. I’d love to use Windows pre-made folders, but only if their on the right (safe) drive. Core settings would, of course, be stored on both drives, but the actual files, like Music, Video and Documents would reside in a better and safer place.
I think the reason Windows has the single drive mentality because when Windows was born, you’re just plain lucky to even have a hard drive. Everyone knows that it still uses the NT Kernal at it’s core and with that, I believe the single drive style of systems is still persistent. However, it’s 2008, and all desktops should have more than one drive, one for Windows and one for everything dear to our hearts.