How to use Windows regularly without hating it (much)

Lesson Two: Kill the bloat.

Software installation and removal in Windows can be absolutely painless or an absolute nightmare. Issues in regard to this commonly-performed task are exacerbated significantly by the prevalence of so-called "bloatware". Because of this, the process of removing unneeded software, which should be simple, instead becomes a topic unto itself.

On the Origins and Nature of Bloat

It began as a truly great idea: provide a strategic alliance between businesses at the same time as you are providing added value to the consumer. Take an operating system, and open its customer base as a market to other companies by distributing their products with your core software. The consumer benefits, the OS developer profits handsomely, the third parties get free market penetration for their product. It seems a true marriage made in heaven... at least for a business arrangement!

Irrational exuberance and that basic component of human nature, greed, denigrated this Good Thing as time went on. The phenomenon of "bloat" arose from this excess, as the relationship ceased to provide value and substituted annoyance and consumption of otherwise-productive disk space by unnecessary programs - programs which the average Windows user was at first almost incapable of removing for themselves.

Now, bloat is even becoming a problem for Linux-based offerings as it enters the mainstream through various companies which turn a profit while giving away their product freely. Some of the software is genuinely useful, and can even represent significant cost savings in comparison to what the end-consumer would have to pay if it was purchased through a retailer.

Unfortunately, a lot of it is unnecessary crap bundled with the pretense of added value, but which really is put there for lucrative vendor contracts granted thanks to the guaranteed distribution to an established customer base. Microsoft is an expert in that department. To their defense, many companies did very useful things in the way of customization thanks to the flexibility which was granted with later versions of Windows, even though there were abuses.

The presence of bundled software can be a real problem. Read through your product documentation thoroughly, trying to discern critical software on the system, and then use the built-in facility in the Control Panel to remove unnecessary programs you find are installed on your system. For reasons which are about to become clear, you should not under any circumstances simply delete things and assume the job is done unless you know exactly what you're doing.

The Hive : A Tale of Woe

"The hive" is the internal name for the Windows registry. It is a giant repository of data to which applications can freely add, composed of an indexed set of keys. It was originally intended to allow programs to "register" their presence with the operating system and thus to centralize that information so that Windows would know that they were available. Neat idea. Perhaps even useful. So far, so good.

But, when programmers were given the ability to create registry keys, the Registry became a popular place to dump all sorts of information. In UNIX environments, it's common practice for a program to use a configuration file to store its settings. For some reason, Windows migrated away from this, and the industry trend became using the registry to store program settings, often abandoning configuration files altogether.

It probably seemed like a great idea at the time. It offered the convenience of a centralized collection of program configurations, hidden away from unknowledgeable end-user meddling. It also presented the prospect of easily identifying software installed on the user's machine. But as more software gets installed on the machine, it fills up with thousands of registry keys thanks to the additional configuration and version information.

Why Deletion isn't Simple in Windows

In the old days, it was fairly easy to delete things you didn't want from your system. Programs would generally place themselves in one directory or as the root of a hierarchy, and their meddling would usually be confined to that directory. As I mentioned, when the registry was developed, it was to allow the Windows operating system to know what programs were installed, and thus was the provider of information to the system as to software resident on the machine.

What this entails for us, of course, is the fact that simply deleting programs from the system by manually removing them will no longer completely get rid of them. Because the registry entries made are not removed, Windows will mistakenly believe the program is still resident, because its keys still exists there. This can lead to a huge backlog of now-orphaned registry entries full of worthless keys. I can assure you that the majority of modern programs use the registry far too much. Unfortunately, this information will remain even if the programs are removed. Playing with the registry directly is not advisable, because it is very complex if you don't know what you're doing. If you do, make sure that you know what you're changing and that you have a backup before you make any changes.

By the way, if you are going to be using the registry in your development, it is even more vital to back it up. Win2k and XP make it pretty easy to back up the registry. Modern incarnations of Windows have quite good recovery abilities, but it's unwise to rely on them except in desperation. If your software is modifying or creating registry keys, it is asinine to fail to back up your registry - and you deserve what you get if you ignore this recommendation.

DLL Hell - Hey, At Least it's An Egalitarian Hell!

As if it needed to get more complicated, Windows introduced the DLL. The DLL (Dynamic Link Library) disguised itself as a Good Idea. It provided an encapsulated set of functions which could be accessed by an external program. But it was implemented without concern and provisions made for:

  • Version control of any kind.
  • A design policy ensuring backward compatibility.
  • Providing a logical place to put the files.
  • A built-in way to deal with file dependencies.

A short translation: administrative nightmare. Most Windows installers simply dumps these DLL's indiscriminately into the /system and /system32 subdirectories of the main windows directory. The only "version control" offered is the file system kindly noting that an existing file is going to be replaced, after which it's quite possible that other programs will no longer work!

Programmers refer to this Microsoft-originated phenomenon of notable human stupidity and lack of foresight as "DLL Hell". Although it's a certainly a pain from the end-user perspective, the programmer who's preparing an installation package may well corrupt an end-user system by inundating his operating system with DLLs which are incompatible or by overwriting existing DLLs which legacy applications depend on.

There are many other issues related to this phenomenon, but they are beyond the scope of this article. Consult this writeup for an excellent overview. Microsoft's .NET initiative tries to address this issue, and hopefully will put this whole topic to rest.

A final word of warning

In recent times, it's become popular for vendors to stop distributing a physical copy of the software bundled with your machine. Instead, one or more disks are given to restore your system to factory default. Be aware of the fact that if you are a victim of this annoying use of OEM flexibility, you will not have a legitimate Windows CD to insert if something breaks and the OS tries to fix it. Needless to say, it also means it's a lot more difficult to fix things when you accidentally delete critical files in the process of uninstalling a program.

Hey, there should be a law against this kind of crap!