In the spirit of the Xmas holidays, here are some improvements Microsoft should make to its next version of Windows to contribute to a more peaceful Earth.
1. Let me move an installation of Windows to completely different hardware, and let me replace the motherboard without having to reinstall Windows.
Today, when you install Windows, it configures itself in some pretty mysterious low-level ways to be specifically tied to the motherboard you installed it on. You can’t, for example, swap out the motherboard for a different one, install all the drivers for the new motherboard, and expect Windows to work correctly without all kinds of mysterious problems (blue-screens, crashes, hangs, etc) — you have to reinstall Windows. Similarly, you cannot take the hard drive containing your installed copy of windows, transplant it into a different machine, and then boot that installation of windows up on the new machine — Windows will completely flip out and fail to bootstrap and run correctly.
There are many common, real-world scenarios in which users need to swap hardware around (such as motherboard/disk failure and replacement, or upgrading from an older machine to a newer one), and they really shouldn’t have to reinstall all their OS and applications when this happens. Having to reinstall the OS and applications is a HUGE ANNOYANCE AND WASTE OF USER’S VALUABLE TIME.
2. Get rid of Product Activation and Windows Genuine Advantage and stop treating paying customers like criminals.
In addition to the problems I stated in item #1, the new "Product Activation" in XP and Vista uniquely ties an installation of the OS to a specific hardware fingerprint. That means if you have to replace the motherboard, or you try to transplant a windows installation from one machine to another, even if it could technically work, product activation will stop you when it detects that the hardware has changed.
It’s also pretty annoying that Vista requires you to activate online over the Internet. Not all machines have Internet connections, you know! Even worse, when Microsoft’s product activation servers are having problems and go offline, or when Microsoft eventually goes out of business, how is everyone supposed to activate their legitimate copies of Windows?
Beyond all that, it’s just disrespectful and distrustful to treat your paying customers like criminals by default. You won’t win any user love or customer love by treating them all as guilty until proven innocent.
3. Add a "No To All" button to Windows Explorer’s copy confirmation dialog.
UPDATE: For Windows XP, see this workaround: http://forums.tweaktown.com/archive/index.php/t-5494.html
UPDATE: This issue is resolved in Windows Vista, because the confirmation dialog has been completely redesigned to have a checkbox to "apply my answer to all remaining files to be copied".
4. Get rid of all the duplicate ways of doing things in the UI
You can hit CTRL-C, or you can right-click and choose "Copy" from the pop-up menu, or you can select "Edit->Copy" from the main application Window. Why all the unnecessary duplication? Why do we always need 15 different ways to do the same thing? All that does is make the system as a whole unnecessarily complex to use! Microsoft ought to make a sweeping pass over all UI in the operating system and make sure there is only one way to do each task. That will also considerably reduce the number of scenarios that need to be tested.
5. Get rid of the need to "install" or "uninstall" anything
You should never have to "install" the OS, a program, or a driver, period. You should be able to run Windows directly from the CD it ships on, or directly from any media you copy the contents of the CD to. A program (or driver) should be just a single file that you run directly (or drop in place), not a colleciton of files and registry settings that must be installed/uninstalled. If you want to backup all the programs you have on your system, or move them to another system, you should be able to just copy the single file that is the program itself, rather than having to keep around the original "installation image" (SETUP.EXE and associated files) used to originally "install" the program.
6. Get rid of the awful concept of shared libraries/components
Shared libraries sounded like a good idea at the time: they would conserve disk space and ensure that all programs using a library would benefit simultaneously from improvements and fixes to the library. But in practice, shared libraries have proven to be an awful idea, creating dependency and versioning problems and conserving only negligible disk space on modern systems. Ordinary users are more interested in having a simple, reliable, dependable system than in saving 100kB by sharing the same binary file among 3 programs. It’s time to get rid of shared libraries completely: just force every program to include its own copy of any library it may rely upon, and put the responsibility for pushing out library updates back onto the application makers. The benefit? No more broken library dependencies or versioning problems, which account for probably 50% or more (by my guestimation) of modern Windows problems.
7. Enforce under-the-hood referential integrity
In my experience, more problems than I can count have been caused by one part of Windows (such as, say, a registry vaule) referencing something that has changed or no longer exists (such as, say, a file).
Many under-the-hood references exist in Windows: a configuration file can reference a registry path, a registry value can reference a file path, a registry value can reference another registry path, a registry value can reference a path into the system’s device map, etc. Whenever one of these references gets out of sync with the thing it references, the user ends up with mysterious problems.
There needs to be an over-arching sync and notification framework to enforce referential integrity of all these things. For example, it should be impossible for a file to get deleted from disk if there are still outstanding references to it anywhere on the system. This framework I am proposing should prevent such things from ever happening in the first place.