Software Obesity (was Re: Jargon file v2.1.5)

Marcus J. Ranum mjr at hussar.dco.dec.com
Mon Dec 3 07:24:02 AEST 1990


pst at ir.Stanford.EDU (Paul Traina) writes:

>[...] It's natural
>that sofware will grow and become more complex.  CPU's have done a
>good job of keeping up.

	I never could understand this attitude.

	*WHY* is it natural that software will grow? *WHY* is it natural
that it become more complex? *WHY* does it have to have ever more
expensive processors to run on?

	Because the idea of eliminating old "features" has never been
considered. If cars were designed the same way as software is today,
they'd all have buggy-whip holders (from "Car V1.0") and starter cranks
(from "Car V2.1") and electric ignitions (from "Car V3.0") and so on.

	Has anyone ever attempted any kind of studies to quantify the
effect (other than on size and CPU requirements, disk requirements, and
cost/seat) of adding "features" to software? I'd love to see some data
about the aggregate usefulness of software *within its problem area*
as features are added. What I mean by *within its problem area* is
to study text editors, for example, only in terms of their functionality
as text editors - rather than as LISP interpreters or news readers. :)
It's been my impression that only a small percentage of any given
program's functinality is ever used - possibly for each new set of
"features" that are added only a comparable percentage of those are
used as well, so the performance cost and monetary cost of the new
"features" is largely wasted. I'd love to see a study as to what
the adoption rate is of new "features" among users who are familiar
with the software already, and already have developed patterns of
use. If someone were to double the "features" in, say, X-window,
making it half again as large and half again as slow, how long
would it be before 10% of those new "features" were in active use?
how long would it take for 20%, 30%? - and would it ever hit 100%?

	My perception, which is doubtless flawed, is that once
software hits a certain basic level of functionality any additional
features are simply extensions of that software's functionality
outside of its problem area. In other words, once the developer
has sold you all the functionality you NEED in your spreadsheet,
it is extended into a rendering and visualization system as well,
giving pie charts, etc, ad nauseam - and, oops, you need another
2 Meg in your machine now. The fallacy here is the pursuit of the
"integrated environment" - users are unwilling to have to exit
their text editor to read news (for example) - but it's chicken
and egg - possibly their unwillingness is a result of the incredible
startup time their bloated text editor requires. :) Add to that
the confusion between different command interfaces, and it seems
that every significant software system tries to evolve into being
its own operating system - hogging and allocating all the resources
of the host hardware.

	I don't quite know how it happened this way. Software,
being unreal, is probably better able to fit together in modular
components than just about anything else - yet I can walk to
the hardware store, and buy a light switch that doesn't have an
integrated timer/thermostat/LISP interpreter, and I can still
build simple, elegant systems with only the functionality I
need - at a reasonable cost. The designers of UNIX had it right,
UNIX' modularity and simplicity made it ideal for handling just
about anything except commercial success.

	Sorry to ramble. All disclaimers apply, of course. I
don't speak for Digital, my cats, or my friends.

mjr.
-- 
	If your windowing system is placing undue demands on your hardware
and operating system, don't ask yourself what can be done to improve the
operating system or hardware - ask yourself why you are using that windowing
system.		[from the programming notebooks of a heretic, 1990]



More information about the Comp.unix.internals mailing list