Thursday, March 26, 2009

Flamebait

I feel like I'm channeling Bill Maher just now, because what's going through my mind is...

New Rule: Software that doesn't work straight out of the box is broken.

Granted, there are many and varying degrees of "broken." A whole continuum. Maybe even a multi-dimensional continuum.

There are not, however, any valid excuses for broken software, only acknowledgement.
  • If your software only supports certain hardware configurations and you don't document it, it's broken.
  • If your software does not run on certain operating systems and you don't document that, it's broken.
  • If your software is a web application, but you only optimized it for one browser, it's broken.
  • If your software relies on other programs that the user is responsible for obtaining and you don't make this process as brainless and painless as possible, it's broken.
  • If your software runs significantly slower on one OS than another, it's broken.
  • If your software whacks the user's data or system configuration while they were following your instructions for use (or even doing something that a reasonable layperson would consider intuitive), it's broken. Really, reeeally broken.
  • If your software doesn't toggle between similar file formats more or less gracefully, it's broken.
  • If your software isn't part of the operating system or a system service, but requires a system reboot after an upgrade, it's broken.
  • If the user has to hamstring or downgrade other software to use yours, it's broken.
  • Oh, and if you expect your users to work around these things (and call them stupid when they don't) because you're giving your work away for free, not only is your software broken, but you're also a wanker.
It's that last point that I want to hammer home. Frankly, I don't care how many hours of blood, sweat, toil and profanity went into any bit of software. Giving away software that doesn't work as advertised doesn't make you generous. Giving away functionality--no matter how useful--wrapped in a half-baked interface doesn't make you generous either. Caring about your users enough to put yourself in their proverbial shoes does. The caring bit applies to before, during and after you write the software.

Tonight's rant was brought to you by the never-ending great gobs of suckage that is video/audio on Ubuntu. Fortunately, no lasting damage was done, which is an improvement from, say, ReTune wiping out my iPod or Envy whacking my video configuration to the point where XWindows wouldn't start or OpenSUSE refusing recognize a SATA drive after I changed motherboards. The only upshot is that I can't determine whether the program I have to write for school will actually play the .MIDI file that I downloaded to test it.

And now that I've named a few names, I expect to be flamed for the st00pid n00b or Windoz suxor or whatever it is I am for daring to suggest that Linux fanboys and fangirls stop beating their chests over how evil Microsoft and Apple are. Which is not unlike being lectured for my materialist ways by the hippies on the neighboring commune because I have this fetish for hot running water and toilets that flush.

Ubuntu is my OS of choice, hands down. But I refuse to make excuses for the absolute junk that makes it into the repositories. Because to do otherwise is flat-out insulting to the end user--who, by the bye, does not in fact have unlimited hard drive space, much less time for software that does not do what it says it does. Mercifully, Ubuntu also does a fantabulous job of scrubbing other people's lame software off the system.

And, now, if you'll excuse me, I need to switch over to the Windows side so that I can actually get some work done.