Tuesday, May 26, 2009

whose computer is it, anyway?

Programmer's Appreciation Day is my proposed holiday where you line up all the programmers and people get to go down the line and slap those who have made some incredibly stupid decision that makes everyone's life miserable.

There is a special place in my heart for every programmer who writes a program that (1) has absolutely no reason that it anyone would want it to be running all the time, yet (2) automatically installs to start whenever you start Windows, and (3) provides no way to stop the damn thing or stop it from starting with Windows.

Actually, like many of my PAD candidates, this probably really isn't a programmer's fault. I expect there are marketing turds out there who think this is a good way to give their software higher visibility --annoy the hell out of everyone with the misfortune to use the software. But if you lined up all the marketing people for something like Programmer's Appreciation Day, I'm afraid it would be a blood bath. People would be smuggling in knives, crowbars, pistols, and sawed-off shotguns, and it would be all over for most of the marketing staff of most major software manufacturers.

And ultimately, this is really Microsoft's fault, for giving us a software installation model where the user has no control over what the software does. Once you click the button for "OK, let this program run", then it is out of your hands. There are a few after-the-fact measures like firewalls on outgoing links (which was someone else's idea, not Microsoft's), but the fundamental infratructure is still messed up.

When a piece of software installs, it should have to ask specific permission to do any of the following:

1. start without a OS-controlled specific user request
2. continue running after the user presses the X in the title bar or does some other OS-understood action to close the software (you would always have to give the software a few seconds to clean up and exit gracefully, but this would prevent it from just going to the taskbar or hiding itself but continuing to run)
3. enter full-screen mode where the task bar and application title bar are hidden
4. capture the mouse where the mouse can't be moved out of the window
5. take over any of the operating-system keys like ALT-TAB.
6. access the internet (and the user should be able to give restrictions on how it accesses the internet)
7. create any files (and the user should be able to specify a limit)
8. access any files that it did not create (maybe with exceptions for files opened with an OS-controlled Open-file dialog --I'd have to think about the possible abuses of that).
9. replace any software services or libraries currently on the system (this includes taking over handler tasks for file types that already have handlers)

There are some more, but you get the idea. The problem is that marketing types have taken over the software industry --at least the big houses-- and these people don't really care about putting out good-quality software that does what the user needs. They have discovered that they can sell to the majority of users just with flashy graphics, and that the large majority of users don't really know or don't care when the software is doing things for the benefit of the software publisher rather than for the benefit of the user.

That's one of the reasons that I prefer to use open-source software whenever I can find something that does the job I need. It may not be as flashy as commercial software, may not have as many features, and may not be quite as stable, but I can be pretty sure that the software was written by people for their own use, and so it will do what the user wants it do to --not what some marketing dweeb thinks will benefit the publisher.

No comments: