On Fri, 12 Aug 2005 10:07:17 -0500, All Things Mopar
You can look at things from the "needs" perspective, as in "consumers
expect software that is defect-free".
You can look at things from a "resource" perspective, as in "it is
impossible to create complex software that is defect-free".
And you can see the collision course that is coming.
Software isn't fundamentally any different than development of
any other commodity. The world's consumers have cleaned up
just about every "hard" commodity by choosing quality over
non-quality, and by choosing from cost-efficient producers
over inefficient producers.
Software is different, in a couple of ways:
- it is pure data, and can be duplicated free of cost
- it is 100% human invention
- it has 0% naturally-resillient properties
The first is the factor that everyone loves, and why industry is
scrambling over itself to be as "soft" as possible. It's the ultimate
product scalability jackpot; sell a massive number of units, get rich
quick. OTOH, the development costs are hard to recover if you sell
only a few units, which is why custom sware is often costly suckage.
The second factor is why software is so riddled with defects.
When you combine the two factors, you see why poor software quality is
not "punished" by market forces as it would be in "hard"
manufacturing. A defective hardware item has to fixed the hard way,
via a hard product recall and replacement. A vendor takes huge pain
when this happens, and if it happens a few times, the vendor will
typically not survive. But a software defect can be "fixed" simply by
making replacement code available for download.
Let's look at this from the "needs" perspective.
Initially, because software could be duplicated with no cost,
consumers tended to simply copy the programs they wanted to use,
without paying the vendor.
Software vendors trained consumers to pretend software was a durable
item with "hard" per-instalce value, that should be paid for as such.
In other words, we would pretend it was impossible to copy programs
for free, and would buy an instance of the software as if it were a
durable hardware item, such as a hard drive or processor.
Software vendors went further to deliberately break programs so that
they couldn't be copied free of cost, artificially nullifying one of
the natural advantages of software, so as to compel payment.
Generally, consumers have accepted this. We pay for a single instance
of software, and having paid for it, we expect it to work and be free
of defects (or at least, free of dangerous defects).
The first change from this model came from antivirus vendors. The
nature of that industry requires ongoing development to keep up with
new malware; in fact, the value of the product lies not so much in the
original program, as the availability of regular updates.
So it's not unreasonable for av vendors to sell on a "subscription"
basis, as in; buy a copy of the av program as if it was a permanent
"hard" item, and yet only be able to use it for a year before being
required to pay again. This was the start of "software as service".
The "service" model works like this; you accept that software is not,
in fact, a "hard" item of lasting value, but an ongoing quest to find
and fix defects. You pay for this post-sale defect-chasing as a
"service" for a set period, after which your software dies.
It's what I call "rental slavery".
Let's look at this from the "resource" perspective.
Human beings have an error rate, even when doing mindless repetitive
tasks. If I ask you to write a particular sentence 1000 times, the
chances border on the inevitable that you will make errors. This post
will contain several errors; some detectable via spelling checker,
others not, e.g. often I write "but" instead of "buy", etc.
When you make a "hard" item from natural materials, you can generally
count on the behavior of those materials. Your "creative" input is
limited to what you do with those materials; there's less scope to
screw up - e.g., you can design an axe badly, so that the head flies
off the handle, but the wooden handle with inherit the predictable
charactaristics of wood, and the steel head, those of steel.
Software is 100% human invention, so at the very least, you expect the
human error rate to permeate throughout software. If a flaky coder
makes one error in 100 lines, and a good coder one error in 1 000
lines, both will create bug-riddled 1 000 000 line programs.
Now a human brain can only hold so much, and modern software far
exceeds this capability. So multiple human brains have to co-operate
when creating this software, and new opportunities for errors arise at
the interface between brains - either between peers working on the
same code, or when a "black box" created by one is used by another.
Software engineering tried to formalize the process of creating code,
and especially between peer programmers and re-usability of "black
boxes". This is a trade-off against performance; today's PCs may have
(say) 1000 times the hardware resources of the original PC, and yet
may run equivalent software only 10 to 100 times as fast. The rest of
the gains are eaten up by "bloated" coding practices that are slower
to run, but quicker to develop - and crucially, more reliable too.
By now, programming has reached the point that we accept defects will
always be present. The question is how to apply that awareness.
One way is to just carry on as if there was no problem. Pretend that
natural "hard" scopes can be replaced with artificial ones made out of
code (e.g. no more cable needed to join a LAN, tune in via WiFi and
rely on code security to wall out the bad guys). Pretend that code
will do only what it is designed to do, so that it can be assumed safe
to handle incoming material ahead of the user's intent.
The other way is to recognise that you cannot build robust machines
out of flaky materials, and stop trying. Limit the risks that code is
allowed to take. Limit unsolicited exposure to external materials.
Use natural cover (e.g. the need for cables to join a LAN) instead of
holding up a soggy cardboard shield against whatever's out there.
If software vendors can persuade consumers to accept rental slavey in
place of durable ownership, then this meets the vendors' needs for
onging revenue to cover ongoing bug-fixing. It also assures future
revenues, which helps if you are already fully-grown and need to shift
value from "hi-growth" to "blue-chip" status.
As it is, if consumers think a new version of the product they already
own does not add value, they can simply use the existing version and
ignore the upgrade. No sale, no revenue. But if rental slavery was
in effect, the consumer would be obliged to swallow whatever upgrades
the vendor wanted to push, and wouldn't care as much as they'd be
paying anyway. When the new versions outgrow the old hardware,
they'be obliged to replace that too; a nice boost to the rest of IT.
Software is, in effect, a rare situation where it doesn't pay to be
too high quality. If there were no need for updates, there'd be no
need for an ongoing relationship between user and vendor. As soon as
there is an ongoing need for patches, such a relationship can be
compelled by the vendor. The worse the code, the more frequent the
updates, the tighter the vendor can make that dependency.
Currently, things are pretty tight as it is - we are expected to leave
our systems open to unsolicited code changes delivered automatically.
When we go to the vendor's site to download some patch we have to have
to stay safe, the vendor can require us to allow dropped ActiveX to
run, and we must jump through hoops to prove we are licensed users.
Then the code that we download (at our expense) can change settings,
re-assert UI elements, hijack file associations, import data from
other email programs and set themselves up as the default email
program instead, etc. Great vendor leverage, that is made possible by
the product being flaky enough to need patching.
So, given the choice between curbing features and software ambitions,
and SEing the users into a far weaker set of consumer expectations and
rights, is it any wonder things are as we have allowed them to be?
------------------ ----- ---- --- -- - - - -
The rights you save may be your own