Free Republic
Browse · Search
News/Activism
Topics · Post Article

Skip to comments.

Rethinking software bloat.
Information week.com ^ | 12/17/01 | Fred Langa

Posted on 12/17/2001 4:33:52 AM PST by damnlimey

Rethinking 'Software Bloat'

PRINT THIS ARTICLE
DISCUSS THIS ARTICLE
WRITE TO AN EDITOR
 
Fred Langa takes a trip into his software archives and finds some surprises--at two orders of magnitude.
By Fred Langa

 
Reader Randy King recently performed an unusual experiment that provided some really good end-of-the-year food for thought:
I have an old Gateway here (120 MHz, 32 Mbytes RAM) that I "beefed up" to 128 Mbytes and loaded with--get ready--Win 95 OSR2. OMIGOD! This thing screams. I was in tears laughing at how darn fast that old operating system is. When you really look at it, there's not a whole lot missing from later operating systems that you can't add through some free or low-cost tools (such as an Advanced Launcher toolbar). Of course, Win95 is years before all the slop and bloat was added. I am saddened that more engineering for good solutions isn't performed in Redmond. Instead, it seems to be "code fast, make it work, hardware will catch up with anything we do" mentality.
It was interesting to read about Randy's experiment, but it started an itch somewhere in the back of my mind. Something about it nagged at me, and I concluded there might be more to this than meets the eye. So, in search of an answer, I went digging in the closet where I store old software.

Factors Of 100
It took some rummaging, but there in a dusty 5.25" floppy tray was my set of install floppies for the first truly successful version of Windows--Windows 3.0--from more than a decade ago.

When Windows 3.0 shipped, systems typically operated at around 25 MHz or so. Consider that today's top-of-the-line systems run at about 2 GHz. That's two orders of magnitude--100 times--faster.

But today's software doesn't feel 100 times faster. Some things are faster than I remember in Windows 3.0, yes, but little (if anything) in the routine operations seems to echo the speed gains of the underlying hardware. Why?

The answer--on the surface, no surprise--is in the size and complexity of the software. The complete Windows 3.0 operating system was a little less than 5 Mbytes total; it fit on four 1.2-Mbyte floppies. Compare that to current software. Today's Windows XP Professional comes on a setup CD filled with roughly 100 times as much code, a little less than 500 Mbytes total.

That's an amazing symmetry. Today, we have a new operating system with roughly 100 times as much code as a decade ago, running on systems roughly 100 times as fast as a decade ago.

By itself, those "factors of 100" are worthy of note, but they beg the question: Are we 100 times more productive than a decade ago? Are our systems 100 times more stable? Are we 100 times better off?

While I believe that today's software is indeed better than that of a decade ago, I can't see how it's anywhere near 100 times better. Mostly, that two-orders-of-magnitude increase in code quantity is not matched by anything close to an equal increase in code quality. And software growth without obvious benefit is the very definition of "code bloat."

What's Behind Today's Bloated Code?
Some of the bloat we commonly see in today's software is, no doubt, due to the tools used to create it. For example, a decade ago, low-level assembly-language programming was far more common. Assembly-language code is compact and blazingly fast, but is hard to produce, is tightly tied to specific platforms, is difficult to debug, and isn't well suited for very large projects. All those factors contribute to the reason why assembly language programs--and programmers--are relatively scarce these days.

Instead, most of today's software is produced with high-level programming languages that often include code-automation tools, debugging routines, the ability to support projects of arbitrary scale, and so on. These tools can add an astonishing amount of baggage to the final code.

This real-life example from the Association for Computing Machinery clearly shows the effects of bloat: A simple "Hello, World" program written in assembly comprises just 408 bytes. But the same "Hello, World" program written in Visual C++ takes fully 10,369 bytes--that's 25 times as much code! (For many more examples, see http://www.latech.edu/~acm/HelloWorld.shtml. Or, for a more humorous but less-accurate look at the same phenomenon, see http://www.infiltec.com/j-h-wrld.htm. And, if you want to dive into Assembly language programming in any depth, you'll find this list of links helpful.)

Human skill also affects bloat. Programming is wonderfully open-ended, with a multitude of ways to accomplish any given task. All the programming solutions may work, but some are far more efficient than others. A true master programmer may be able to accomplish in a couple lines of Zen-pure code what a less-skillful programmer might take dozens of lines to do. But true master programmers are also few and far between. The result is that code libraries get loaded with routines that work, but are less than optimal. The software produced with these libraries then institutionalizes and propagates these inefficiencies.

You And I Are To Blame, Too!
All the above reasons matter, but I suspect that "featuritis"--the tendency to add feature after feature with each new software release--probably has more to do with code bloat than any other single factor. And it's hard to pin the blame for this entirely on the software vendors.

Take Windows. That lean 5-Mbyte version of Windows 3.0 was small, all right, but it couldn't even play a CD without add-on third-party software. Today's Windows can play data and music CDs, and even burn new ones. Windows 3.0 could only make primitive noises (bleeps and bloops) through the system speaker; today's Windows handles all manner of audio and video with relative ease. Early Windows had no built-in networking support; today's version natively supports a wide range of networking types and protocols. These--and many more built-in tools and capabilities we've come to expect--all help bulk up the operating system.

What's more, as each version of Windows gained new features, we insisted that it also retain compatibility with most of the hardware and software that had gone before. This never-ending aggregation of new code atop old eventually resulted in Windows 98, by far the most generally compatible operating system ever--able to run a huge range of software on a vast array of hardware. But what Windows 98 delivered in utility and compatibility came at the expense of simplicity, efficiency, and stability.

It's not just Windows. No operating system is immune to this kind of featuritis. Take Linux, for example. Although Linux can do more with less hardware than can Windows, a full-blown, general-purpose Linux workstation installation (complete with graphical interface and an array of the same kinds of tools and features that we've come to expect on our desktops) is hardly what you'd call "svelte." The current mainstream Red Hat 7.2 distribution, for example, calls for 64 Mbytes of RAM and 1.5-2 Gbytes of disk space, which also happens to be the rock-bottom minimum requirement for Windows XP. Other Linux distributions ship on as many as seven CDs. That's right: Seven! If that's not rampant featuritis, I don't know what is.

Is The Future Fat Or Lean?
So: Some of what we see in today's huge software packages is indeed simple code bloat, and some of it also is the bundling of the features that we want on our desktops. I don't see the latter changing any time soon. We want the features and conveniences to which we've become accustomed.

But there are signs that we may have reached some kind of plateau with the simpler forms of code bloat. For example, with Windows XP, Microsoft has abandoned portions of its legacy support. With fewer variables to contend with, the result is a more stable, reliable operating system. And over time, with fewer and fewer legacy products to support, there's at least the potential for Windows bloat to slow or even stop.

Linux tends to be self-correcting. If code-bloat becomes an issue within the Linux community, someone will develop some kind of a "skinny penguin" distribution that will pare away the needless code. (Indeed, there already are special-purpose Linux distributions that fit on just a floppy or two.)

While it's way too soon to declare that we've seen the end of code bloat, I believe the signs are hopeful. Maybe, just maybe, the "code fast, make it work, hardware will catch up" mentality will die out, and our hardware can finally get ahead of the curve. Maybe, just maybe, software inefficiency won't consume the next couple orders of magnitude of hardware horsepower.

What's your take? What's the worst example of bloat you know of? Are any companies producing lean, tight code anymore? Do you think code bloat is the result of the forces Fred outlines, or it more a matter of institutional sloppiness on the part of Microsoft and other software vendors? Do you think code bloat will reach a plateau, or will it continue indefinitely? Join in the discussion!



TOPICS: Editorial; Miscellaneous
KEYWORDS:
Navigation: use the links below to view more comments.
first previous 1-20 ... 61-8081-100101-120121-129 next last
To: damnlimey
"...wheres that take it back button when you need it?"

LOL.
It'll be included in the next release but you'll need an extra gig of memory.

81 posted on 12/17/2001 12:37:42 PM PST by ez2muz
[ Post Reply | Private Reply | To 22 | View Replies]

To: damnlimey
thanks for the tiny apps link
82 posted on 12/17/2001 12:38:38 PM PST by dennisw
[ Post Reply | Private Reply | To 5 | View Replies]

To: Rain-maker
Do you really think that w/ XP Microsoft will spy on your computer for *stuff* that is not 100% kosher?
83 posted on 12/17/2001 12:40:56 PM PST by dennisw
[ Post Reply | Private Reply | To 25 | View Replies]

To: ArGee
There are other reasons why Bloatware nearly always beats non-bloatware.
84 posted on 12/17/2001 12:44:22 PM PST by bvw
[ Post Reply | Private Reply | To 79 | View Replies]

To: dennisw
Welcome,there's some interesting and useful stuff there.
85 posted on 12/17/2001 12:47:03 PM PST by damnlimey
[ Post Reply | Private Reply | To 82 | View Replies]

To: damnlimey
What do you think are the real reasons for "Bloatware"

Process, schedule, and cost.

Once you get something running, and an OS built around it, the financial and time arguments against brand-new development, and in favor of "adding on and working around," is well-nigh insurmountable.

86 posted on 12/17/2001 12:50:48 PM PST by r9etb
[ Post Reply | Private Reply | To 1 | View Replies]

To: bvw
People are intelligent and act intelligently.

Well, that's the answer I would have chosen. I haven't seen much in the way of evidence to back up your claim. Remember the NASDAQ bubble?

Feel free to post your own list of possible answers.

Shalom.

87 posted on 12/17/2001 1:04:14 PM PST by ArGee
[ Post Reply | Private Reply | To 84 | View Replies]

To: r9etb
If one builds a a grand building that way, the whole cobbled-together thing falls down.

Bloatware doesn't. Sometimes, but not often.

In practise -- Bloatware grows better than non-bloatware. Why?

Something different is going on.

88 posted on 12/17/2001 1:07:55 PM PST by bvw
[ Post Reply | Private Reply | To 86 | View Replies]

To: ArGee
The NASDAQ is still around.
89 posted on 12/17/2001 1:09:07 PM PST by bvw
[ Post Reply | Private Reply | To 87 | View Replies]

To: ctdonath2
They're not selling new machines at 1/10th the price because people don't want them.

Maybe so, but the other day I was in a branch of the Bank of America, formerly SeaFirst, and saw a ghost on every desktop -- the old black-and-white, postcard-sized screened Macintosh. And I thought, "Why not?" It's probably all they need . . . .

90 posted on 12/17/2001 1:09:59 PM PST by JoeSchem
[ Post Reply | Private Reply | To 42 | View Replies]

To: ThinkDifferent
Unfortunately, too often today programs seem to be bigger *and* buggier, so linking libraries may not be the culprit there.

Your very well made points aside, I was only addressing the bloatware issue. If you want to discuss the bugginess of bloatware, that's another matter entirely. :) Regards,

91 posted on 12/17/2001 1:36:12 PM PST by usconservative
[ Post Reply | Private Reply | To 78 | View Replies]

To: usconservative
The bugginess of bloatware is absolutely a necessary part of its success. A very significant and necessary part.
92 posted on 12/17/2001 1:52:31 PM PST by bvw
[ Post Reply | Private Reply | To 91 | View Replies]

To: stainlessbanner
Don't you dare take me off the bump list!! Thanks for putting me on the list, btw...
93 posted on 12/17/2001 3:08:45 PM PST by Bitwhacker
[ Post Reply | Private Reply | To 9 | View Replies]

To: bvw
Two observations

  1. There is a real apples and oranges comparison in the original article when the Linux distribution is compared with the Windows operating system . Sounds good at first read, but it really is a specious line of reasoning. The linux kernel, the shell, a GUI and the basic Unix tools should take up very little space indeed. All the other stuff in a linux distribution are truly applications. This may seem like a minor difference but it is not, as Windows has massively blurred the line between application and OS. The result is a bloated OS that is not well enough insulated either from misbehaved applications (IE being the best example that I know of) or for that matter from code in the OS that more properly belongs in an application. The model of a small OS kernel, and layers of functionality on top of that culminating with the application is a good one, and one that Microsoft has always ignored. This is a real issue.
  2. Secondly there are other very legitimate reasons for code size increasing. There are dozens of people on this forum who choose to cast the issue in a moral light. Laziness, incompetence, poor management, time to market issues, etc. etc. There may be some of that but that is not the driving factor. I would submit that one reason for code bloat is the simple idea that working code is no small matter. If you have been working on a project for 10 years and it has been field tested and battle hardened, and thousands of bugs have been filed against it, are you going to rip the damn thing and start over to satisfy someone's aesthetic sense? I don't think so. You keep going in an incremental fashion because it works and it is just too damn expensive to take a chance with starting over. Do you want your bank, or your hospital or your airliner to pull out their working code in favor of some genius's slimmed down, svelte code? I don't and I don't think you do either, because the old, working (bloated code) has already been through that weird corner case that will "never happen" (but somehow did) and some engineer found a fix for it, and that's one more bug that's not going to bite you in the a** when you can least afford it. It ain't a moral issue, it's just a practical one, it's hard to come by good, working, robust code and when you get it you stick with it and just tinker or add on. That's the nature of the beast.

94 posted on 12/17/2001 3:18:59 PM PST by 2 Kool 2 Be 4-Gotten
[ Post Reply | Private Reply | To 92 | View Replies]

To: damnlimey
cool site; I have and use a couple of those progs. maybe when I retire I can get back into the programming habit :-)
95 posted on 12/17/2001 3:19:33 PM PST by fnord
[ Post Reply | Private Reply | To 5 | View Replies]

To: fnord
Yep,did you check out "menuet OS"an OS that fits on 1 floppy.
I believe it can be run from the floppy as well.
96 posted on 12/17/2001 3:48:27 PM PST by damnlimey
[ Post Reply | Private Reply | To 95 | View Replies]

To: ThinkDifferent
IIS should not be installed by default on Windows Server installations. It is sufficiently complex that it needs a lot of configuration. Either that, or it should be completely locked down with absolutely no permissions at all.
97 posted on 12/17/2001 4:31:15 PM PST by Bush2000
[ Post Reply | Private Reply | To 70 | View Replies]

To: damnlimey
My preferred text editor is PC-Write version 3, circa 1988. I still use it, and it runs nicely on modern machines. 'Course it ran pretty well on my 4.77Mhz 8088 also.

What is the difference between hardware and software?

As time goes by, hardware gets smaller, faster, and cheaper; software gets bigger, slower, and more expensive.

98 posted on 12/17/2001 7:42:59 PM PST by supercat
[ Post Reply | Private Reply | To 1 | View Replies]

To: Dominic Harr
I actually have one more thing to add to this discussion -- OO programming also can increase code size tremendously, in return for adding flexibility, stability and code reusability.

Unfortunately, for some reason, development systems today have gotten terrible at controlling 'dead code' bloat. It used to be normal for development systems to only include code which could actually be called; now it seems they throw in everything.

Part of this I think can be blamed on the design of C++, which does not allow the necessary interactions between the compiler and linker to determine what code is actually needed. As a simple example, many virtual methods are in practice never overridden; a static analysis of the software would be able to detect this and replace all of the virtual-method calls with "simple" CALL's. Unfortunately, this condition can't be detected until link time, after all of the code has already been generated.

It would be interesting to do a static analysis of some modern software and determine what portion of the code can in fact ever be executed. I would not be surprised if almost half the code in today's bloatware is 100% completely useless.

Another thing which should be noted: many of the applications which 'should' require fact CPU's seem to benefit from them. Quake, for example, runs much more nicely on a faster machine than a slow one. Many other applications, however, seem to have random 'snooze times' [where the application stops responding for a few seconds]; these seem independent of CPU speed. It would be interesting to know, during the times that someone is actually waiting for the CPU to do something, at what efficiency the CPU itself is running [as opposed to waiting on cache misses, etc.]

99 posted on 12/17/2001 7:51:28 PM PST by supercat
[ Post Reply | Private Reply | To 33 | View Replies]

To: damnlimey
One of the things I like about my job is that there's value in getting a piece of PICmicro or 8x51 code into a small code space. My greatest accomplishment in that regard was squeezing a brush pressure control module, including a terminal-based setup function, into a 1Kword part [that was a tight fit, but the 16F84 was at the time the only in-circuit reprogrammable PIC available]. Too bad there's not much need for such skills in the PC world...
100 posted on 12/17/2001 7:54:34 PM PST by supercat
[ Post Reply | Private Reply | To 1 | View Replies]


Navigation: use the links below to view more comments.
first previous 1-20 ... 61-8081-100101-120121-129 next last

Disclaimer: Opinions posted on Free Republic are those of the individual posters and do not necessarily represent the opinion of Free Republic or its management. All materials posted herein are protected by copyright law and the exemption for fair use of copyrighted works.

Free Republic
Browse · Search
News/Activism
Topics · Post Article

FreeRepublic, LLC, PO BOX 9771, FRESNO, CA 93794
FreeRepublic.com is powered by software copyright 2000-2008 John Robinson