The two characters from the ads who personify a PC (left, John Hodgman) and a Mac (Justin Long). (Photo credit: Wikipedia)
One of my dear friends on G+ saw my earlier blog post whining about what’s wrong with Windows 8. He challenged me to dive deeper into the complaints. I decided that would would be a good blogging mini-series, even though I’m trying to steer this blog clear of purely technical crap. That’s a long-winded way of saying, “Challenge accepted.” Besides, I’m just idling while Adobe Creative Cloud soaks up my hard drive space.
Let me first put this blog mini-series into context. If you look over this blog you’ll see that in 2006 I made a marked, deliberate switch to the Mac platform. I was sitting in Microsoft building 26, I believe it is (or 25)… wherever the test lab is located… in Redmond. We were running a massive amount of tests on our proposed Exchange system design. This Exchange system had kept all of us up for many, many nights at a time. That’s when Steve Jobs announced the switch to Intel. Since I had to support Mac, Windows and Linux platforms at NASA, I wanted to get one of these machines immediately. I fell in love with it.
During the course of my love affair with the Mac I discovered that there are a great many ills with Windows that are bizarre and ridiculous shortcomings. I know a lot of people have issues with the Windows 8 GUI. I’m one of those people. I didn’t like the Office 2010 ribbon and I still despise it. I generally am not in favor of software that rearranges menus based on what it thinks you want or need to do. Ironically, the people who claim that’s a good feature often complain about Apple’s control over the platform, but that’s another debate.
If this makes you take my feedback with a grain of salt, that’s fine, I understand. Ultimately, we’re all trying to get the same things done. We all work together on this shared collective called the Internet and it’s up to us to choose… individually… how our sausage is made. Every day I find myself booting Windows to do something because I feel like doing it there. Perhaps I feel like booting Linux to do something because it’s more fun to execute it there. Whatever. Let’s take all of that out of the mix and figure out why Windows has not been my platform of choice for full-time production since 2006.
When Chris challenged me to this I decided I would take each one of these topics one by one and work through them, stream of consciousness style. Some of this will come off as ranting or even rage. You’ve been warned. I’m not going to go in order. The first one I’ll discuss is:
The concept of application installations (and all the garbage that comes with it – DLL’s and the like) is completely broken.
When you first use a Mac and understand how applications work and why they’re portable, this annoyance becomes more of a glaring misstep. An application that you install in Windows becomes a permanent extension of your operating system. The only exception to this rule is lightweight applications like Adobe AIR or Java applets.
Don’t believe me? Consider how many hours you’ve spent trying to exorcise a piece of software from your Windows OS since Windows 95. When you install a piece of software using an installer like Windows Installer or Installshield, most or all of the following happens:
- Binary executables are written to the hard drive.
- Slices of code are written to the system registry to tell Windows where these binaries are located and what to do with them.
- Dynamic link libraries (*.DLL) files are written to the hard drive. In most cases these are DLL’s that are provided by Microsoft themselves, written to your hard drive to support the application you installed.
- Bits are scattered into your Windows folder in some cases.
- Shell extensions are installed in various places to support plugging into Windows Explorer or other applications (also written to the registry).
- Bits of files are written into the system to inform Windows what files were written into the system and where they are located so that if you ever hit the uninstall button, Windows can theoretically remove them.
Several of these concepts are completely broken and fully responsible for why your Windows installation gets worse and worse over time. When I was a full-time Windows user, I had to reinstall the operating system at least once a year to return it back to a useful state. OS X and Linux has proven to me that the entire concept of that is just ridiculous. An operating system should not get slower as you use it. Why the hell would you want to use it if that’s going to happen?
Let’s dissect each of these bullet points and dive a little deeper into why they’re bad.
Binary executables are written to the hard drive.
Well, okie. That’s not too bad. That’s why you’re installing something.
Slices of code are written to the system registry to tell Windows where these binaries are located and what to do with them.
The registry is a single-file database that exists on every Windows installation. It’s a single. File. Database. Microsoft has long had this bizarre fascination with databases as The Answer To All Performance Problems. They will cram all of your Outlook data into a single file database. Not only will they do that… let’s one-up that a little. They’ll cram thousands of users’ worth of data into a single-file database when you use a Exchange. That’s right – it doesn’t matter how much money you spend on hardware to make Exchange perform better. If that single file becomes corrupt, thousands of users lose all of their data and you either get to restore it or pray they have an offline copy of it.
But I digress. We’re talking about the registry. It’s a single-file database. Sure, there are bits of the registry that make up the user side of it and it’s stored in your profile, but the fact is the system registry is a single-file database. This means every Windows installation on the planet has a single point of failure. Consider the fact that it’s a database. This means that it suffers from regular database problems. If it gets corrupted, it’s toast. If you add data to it, that data is a permanent relic of the database. Even if you try to delete the data you end up with white space where the data once stood. You can try to compact the white space if you like, but the fact is those little bits of code are permanent. If you pull out those pieces of data from a rogue install there is a good chance it will harm some other portion of the registry or your system. This is why viruses are such a pain to destroy in Windows and once you get one, you really should just nuke the system from orbit and start over with a fresh installation.
The amount of time and money lost to the care and feeding of the registry is insane. The whole concept of this thing is broken and should not exist. I didn’t even realize what a problem this thing is until I used a Mac where… lo and behold… there is no registry to corrupt.
It’s been nice.
If you uninstall an application you will find that bits and pieces of code are left in the registry. The uninstaller does not remove these entries in the registry because it could either damage the system’s ability to handle something else or because the uninstaller is so awful it just forgot to remove it. Even if it does remove it, you get the white space issue I mentioned. So yeah, whatever you installed is a permanent relic of your Windows installation until you reformat. I find that ridiculous.
Dynamic link libraries (*.DLL) files are written to the hard drive. In most cases these are DLL’s that are provided by Microsoft themselves, written to your hard drive to support the application you installed.
These are runtime libraries that are tested and declared compatible with your application. Over time, you will have multiple copies of these DLL files in multiple places. If you install later versions of applications or other applications that use these DLL’s, they could be overwritten or trashed. Most of the time you just end up with multiple copies of multiple versions of multiple DLL’s. The end result is a troubleshooting nightmare when things go wrong. If you spend more than 4 hours fixing a Windows problem, most of the time you should just reformat and reinstall. Ridiculous.
Bits are scattered into your Windows folder in some cases.
This is something that is bound to happen with almost any operating system, I admit. In some cases you’ll install a kext (kernel extension) or whatnot on the Mac and it’ll write something out to operating system’s base folder. I get that. I generally do not like that. I like my operating system to be as read-only as possible. Windows does a lot to keep the user out of the c:\windows folder. Why can’t it do the same to keep applications out of there, if it’s so bad to do?
Shell extensions are installed in various places to support plugging into Windows Explorer or other applications (also written to the registry).
This is kind of the same as writing to the c:\windows folder, but sometimes these shell extensions are written to c:\Program Files or the (x86) version if you have 64-bit Windows. (Three places to store programs? Really?) They’re really, really hard to get rid of if you need to pull them out. (See the registry complaints).
Bits of files are written into the system to inform Windows what files were written into the system and where they are located so that if you ever hit the uninstall button, Windows can theoretically remove them.
My problem with this is that no uninstaller… ever… in the entire history of Windows installers… has ever properly removed all files left behind by a program installation. Seriously. If you go out and uninstall a program, take a few minutes to look over the registry and hard drive folders (Program Files, etc.). That program is still all over your hard drive. Again, Adobe AIR and other lightweight applications are the exception here.
Once you install a program, it’s a permanent part of your OS. Period. The only way to get rid of it is to reformat.
I never really understood that there was a better way to do this until I got on a Mac. Mac handles directories with a .app extension as an application. All of the files and resources required to run that particular app are bundled inside that directory. There are obvious advantages to this:
- Drag an app to the trash. The directory is deleted and the app is permanently removed from your system. All traces of it are gone.
- Drag an app to an email message. OS X will zip up the directory and attach the zip file.
- Applications are sandboxed into their own directory and user space.
Linux is a similar story, but sometimes you end up with binaries in /usr/bin or /usr/local/bin and it can be just as hard to extract.
There you have it. I dissected one of the reasons Windows is broken. All of you people complaining about the GUI in Windows 8… cut Microsoft some slack. They’re trying some new GUI. GUI can be changed and people can get used to it. The real problems with Windows aren’t being addressed. It’s the same problems that have been around since the early 90′s and I don’t see Microsoft getting rid of the way they do things. They’re locked into one type of software engineering and it’s not going to stop.
That’ll keep me away.