Software bloat
|
Software bloat is a derogatory term used to describe the tendency of newer computer programs to use larger amounts of disk space, more CPU power and/or more RAM than older programs. Software exhibiting this tendency is referred to as bloatware or, less commonly, fatware.
Contents |
Why bloatware?
Software developers involved in the industry during the 1970s had severe limitations on disk space and memory. Every byte and clock cycle counted, and much ingenuity went into avoiding waste. The extra time spent by programmers to avoid this waste translated directly into smaller, more efficient software products, and hence was seen to translate directly into sales revenue.
However, technological advances have multiplied processing capacity and storage density by orders of magnitude and reduced the cost per MIPS and cost per bit by similar orders of magnitude (see Moore's Law).
Additionally, the spread of computers through all levels of business and home life has produced a software industry many times larger than it was in the 1970s.
As a result, the emphasis in software design is argued to have shifted away from tightness of design, cleverness of algorithm and thriftiness of resource usage. Instead, time-to-market has been seen to become the key.
The extra time needed to fully optimize software always delayed time-to-market, losing some revenue. But the improvement in quality due to optimization is thought to win this revenue back—however, it is now the case that the lost revenue due to delaying time-to-market far exceeds the increase in revenue that almost any optimization can produce.
The software industry has responded to this changing tradeoff by emphasized rapid code development by automating programming tasks that had previously been areas of fine craftsmanship, and re-automating on top of that. The result is multiple layers of software abstraction resting on top of each other, and the task of the modern software programmer often consists more of administering automatic code generators and pre-written components to their will than in the fine handling of software to be completely optimized—though, with the establishment of well-founded, stable, optimized and dependable software toolkits, this enables functional code to be created much faster and more powerful than coding up equivalents by hand, where development time would be significantly longer. A case in point is NeXT's OpenStep Foundation Kit and Application Kit—a set of reusable objects that enabled developers to create functional and usable code faster than conventional methods.
Some hold that the result of modern rapid application development practices, forgoing the optimization practices of the past, is that modern software running on faster computers does not present a user impression that is significantly faster—this user impression, due to the consumption of underlying technical advances by layers of software abstraction in pursuit of time-to-market, is the essence of bloatware. Unfortunately the abolition of this software abstraction can hamper the underlying development of the program. Software structures that are well crafted in place to allow for easy extensibility and maintenance will assist software developers in that upgrading existing code will be simpler and faster.
However, the optimization at the machine-code level need not be done by hand. Modern compilers often take optimization of code into consideration, and this forgoes the need for hand-manipulation of assembly code. Naturally, this software optimization is never one-hundred percent perfect, but then the resulting effect from a programmer making the optimized code fully optimized is negligible.
An example of this bloating is to look at video games throughout time: based upon existing ROMs that have been converted from the original assembly language and machine code (see MAME), the 1980 arcade game Robotron: 2084 is approximately 84Kbytes, the Atari 2600 home video game Yars' Revenge is about 4Kbytes, Doom, released in the mid-1990s, is approximately 13 megabytes, whilst today's Unreal Tournament, is about 1.9 gigabytes in size (as of 2003).
This is probably an unrealistic comparison, however; most of the Unreal Tournament size is due to game content: maps, models, textures and sound, which are much more detailed and of much better quality than in older games. Also, the complexity of the gameplay has improved dramatically, resulting in justified increases in the size of the game code.
Other products commonly considered bloated are Windows XP, Microsoft Office, Windows Media Player, RealPlayer, emacs, the Netscape/Mozilla suite, Adobe Reader, and a couple of instant messengers like ICQ (before ICQ lite) and MSN Messenger.
Still, why bloatware?
The question remains, then, why so many bloatware are around, even though their usability and commercial viability seem lacking.
Joel Spolsky in his Strategy Letter IV: Bloatware and the 80/20 Myth (http://www.joelonsoftware.com/articles/fog0000000020.html), argues that while 80% of the users only use 20% of the features, each one uses different features. Thus, "lite" software editions turn out to be useless for most, as they miss that one or two special features that are present in the "bloated" version. Spolsky sums the article with a quote by Jamie Zawinski: "Convenient though it would be if it were true, Mozilla [Netscape 1.0] is not big because it's full of useless crap. Mozilla is big because your needs are big. Your needs are big because the Internet is big. There are lots of small, lean web browsers out there that, incidentally, do almost nothing useful. But being a shining jewel of perfection was not a goal when we wrote Mozilla."
Bloatware in Linux
The term bloatware in Linux circles tends to be used by advanced Linux users as a pejorative to refer to distros that contain what they perceive to be an excess of software. It can also be used to refer to Windows. It is perceived that when a beginner-friendly distribution such as Linspire, Mandrake or SuSE is installed, a considerable number of unnecessary programs are installed that have a negative effect on the OS's stability or speed.
This is not strictly true. Most distros, include those named above, offer a preset selection of packages that the developer perceives that the average user might need or want. While it is true that most Linux users will only use a small part of this selection, it is possible, even for a beginner, to modify this selection to better suit his or her needs. This software can also be removed or more added later during use.
The wide range of Linux distributions mean that they can be contained on anything from a single floppy disk (1.44MB) to several CDs or DVDs. Mandriva, a popular distribution, is traditionally delivered on 3 CDs, or a single DVD. The latest version of Debian is contained on a massive 14 CDs. Slackware, the apparent distro of choice for Linux users against bloatware, also comes on 4 CDs.