Thursday, December 01, 2005

End User License Agreement

I'd heard this some time ago as a Swedish joke. Its really a Stupid joke, rather than a slam on any nationality. There is no attempt here to make it generic. Generic jokes end up like this:

Ethnic #1 goes to her Rabii...

On with the joke.

Ollie visits Sven, who is busy in the back yard sawing wood with a cross cut saw. Ollie says to Sven, "Sven, that looks like hard work. Why don't you get a chain saw?" So Sven goes to Sears & Robuckson and buys a chain saw. Later Sven is talking to Ollie. "That chain saw is no good. Its even more work than the cross cut saw. I'm going to return it." Ollie is amazed and says, "Sven, you've got to show me this chain saw. They're wonderful. There's no way it won't save you work." So the next day Ollie visits Sven and Sven shows Ollie the unit. Ollie says, "It looks like a good one to me". He picks it up and pulls the chord. The chain saw roars to life. Sven says, "What's that noise?"

When people purchase new stuff, a computer, an iPod, a child's toy, they often come to me with questions on how to get some feature to work. These are people who see me pick up some item and make it do something they've never seen it do. They figure i'm some sort of technology genius, and figure i know everything. By the time they ask questions, the documentation, which has never been opened, is gone - misplaced or even thrown out. Sometimes the item has been partially disassembled, with parts missing. They expect me to fix it. Its really frustrating, as its often something i've never seen before.

When i ask for the documentation i sometimes get puzzled looks. "Nobody reads that stuff". And i reply that i even read the Warranty and License Agreements.

I'm not a lawyer, so maybe i don't get all the nuances out of the License Agreements. Most of them say that you must agree that the seller is absolved of any liability stemming from your use of the product, within the limits established by local law (which may not absolve them of any liability at all). Typically these License Agreements only pertain to software aspects of the product. Software is treated differently from other works of engineering. Why is that?

One reason is that software makers demand it. Software is hideously complicated, and errors are difficult to detect and impossible to avoid. The software that guides the Space Shuttle into space is thought to have around 50 errors. One might expect that if such a thing is known that every effort would be expended to find these bugs and fix them, so that we don't lose a multi billion dollar orbiter and seven astronauts. The fact is that the bug count is an estimate. There is no direct evidence for any of these bugs. And every expense has been spent looking for them - something like $10,000,000,000. Even Microsoft does not have enough money to eradicate every bug from Windows. If Windows had to be bug free in order to go on the market, it wouldn't go on the market. Hence the demand to be exempt from liability.

Why is software so hard to make error free? Well, for one thing, its more complicated than any other engineering task. A 747 has something like 10,000,000 fasteners. But most of these look like each other, with only dozens of different kinds. In contrast, software consisting of a million lines of code would have a dozen routines acting like glue, which would be called many times throughout the rest of the code. Very few sections of the code would look like other sections. So there are tens of thousands of modules, all of which may interact in odd ways with every other module. The 747 is looking pretty simple by comparison.

Software entities are more complex for their size than perhaps any other human construct because no two parts are alike. If they are, we make the two similar parts into a subroutine -- open or closed. In this respect, software systems differ profoundly from computers, buildings, or automobiles, where repeated elements abound. - Fred Brooks


The great Fred Brooks is one of the most ignored luminaries in the practice of computer science. Very sad, really.

So, how do you protect yourself from buggy software? Easy. Buy simpler devices. The number of bugs appears to grow with the size (complexity) of the code. Simpler is better.

No comments: