Windows redone (43)

1 Name: #!/usr/bin/anon 2006-02-15 22:03 ID:YJPrUgHV This thread was merged from the former /code/ board. You can view the archive here.

We've all used Windows. A lot of us use it for games and desktop applications. Quite a few of us love it. And I'm sure we've all got things we hate about it too.

I have a few bones to pick:
a) Drive letters:
Most files are organized into folders. For example, "C:\Program Files". But each filesystem and device has its own root folder, like "A:\", "C:\", and other letters assigned in the stone age.

(backward compatibility, blah, blah, blah, it's been several decades, blah, blah, blah)

b) Folder structure:
Yes, we've all heard the reasons why we should spend forever typing "C:\Program Files\Accessories" and "C:\Documents and Settings\Brian\My Documents", why there's "C:\Windows\System" and "C:\Windows\System32", or why on some versions it's "C:\WinNT". So what?

And then there's the programs that think they're somehow special so their default installation location is something like "C:\Cygwin" (cough). Or libraries that think they're special (hello, DirectX, I hate you with a passion).

The folder tree is a mess, no matter what the reasons given.

c) Libraries and binaries:
Related to the above, all the binaries and libraries are scattered all over the place. Take a look in the Start Menu. Do you know where every program in there keeps its files? Where its libraries are? And what happens if you have different versions of a library installed in different places? Fun!

Yes, in this era of programs that can run from anywhere, that's one solution. Yet, while Unix had library dependency issues, its layout was a lot more effective. Several programs need to use the same code? Put it in a library and install it once. Code has a buffer overflow? Patch the library and the problem is gone system-wide.

It's not that hard to devise a solution that combines simplicity and consistency with shared libraries and programs. Where is it?

d) No executable bit:
Running programs is a lot easier than the unix world. On the other hand, identifying them with a file extension is amazingly insecure. Malware can be accidentally executed right out of an email, zip file, or from the web, since ".exe" in the filename is all it takes to be runnable. Why isn't the OS more careful? Setting permissions may not be an ideal safeguard, but the linux desktops I've seen were a lot safer when it came to running programs. Oh, XP also has a convoluted compatibility mode system.

e) Configuration:
I love starting regedit and looking at my registry. ~90% of the crap I see there is meaningless gibberish. It's like every program thinks it has a god-given right to stick irrelevant settings on my computer.

And then there are the ones that don't store a registry entry, instead plopping their files in the same directory as the executables, or sometimes even right in C:\! Isn't that convenient?

f) GUI:
The GUI basically can't be customized, except cosmetically. There's only one window manager, and it sucks. Worse yet, the GUI can't even be turned off: it has to be loaded at all times. That's a huge waste of memory when all I want to do is use the command line.

So now I've got a hundred megs of RAM wasted on bitmaps? When all I'm doing is moving files around? WHY?!

g) ZOMG EASE OF USE!

Does f) sound familiar? Do you often hear the refrain, "but it's intuitive and standard so everyone can do what they want without learning! Even grandma! Yayayayay lololol!"?

Guess what? As an experienced user I don't give two hoots about your ease-of-use-without-learning. I want a system that does what I tell it, and isn't built on comfortable illusions that fade away the second I try to do anything sophisticated.

Guess what? As a developer I don't care about your fucking ease-of-use-without-learning either. I want a way to get my work done (that isn't held together by cruft and duct-tape)!

If you had a free hand, what would you wish was changed? Do you disagree with me? Flame away and show me where I'm wrong.

Name: Link:
Leave these fields empty (spam trap):
More options...
Verification: