Name: !jEtRn2gPRg 2011-09-18 2:22
Software bloat and its impact on computing today
I've been noticing a disappointing trend of modern developers creating software
that is becoming more and more inefficient: in code size, memory usage, and
run times, for basically equivalent tasks. As the days where software had to
share 640 KiB of memory have long disappeared, so has the skill of developing
fundamentally simple and cruft-free software it seems.
A key example is a comparison of implementations of `cat' over various
operating systems from the UNIX family [1], which is meant to be an extremely
simple program. GNU's `cat' consists of 782 lines, which is absolutely
ridiculous for a program that is, at a fundamental level, intended to
concatenate streams. `cat' is not meant to number lines, squeeze blank lines,
or format non-printable characters, and these features are arguably almost
never used.
I am becoming frustrated by popular software projects, even in the open-source
world, that suffer from extreme levels of unnecessary cruft. It disappoints me
to mention the GNU project as being a notorious offender in the creation of
bloated software. `emacs' is often jokingly referred to as an `entire operating
system', but this metaphor is far closer to reality than many people realise.
`GRUB', the GNU project's bootloader, is not a bootloader; it is also
comparable, in size and functionality, to an `operating system', and much of
its functionality is blatantly unnecessary for its perceived core purpose:
booting operating systems.
It is rare to find software today that follows the traditional UNIX philosophy,
even on operating systems inspired by UNIX. The UNIX philosophy consists of
concepts whereby software should be simple, orthogonal in nature, and modular,
among other good development practices. `Plan 9 from Bell Labs' gets it right
in many areas where other, more popular operating systems, don't. Unfortunately
it has not become a success over its predecessor, UNIX, because UNIX is widely
seen as `good enough', however technically inferior it may be.
However, in comparison to today's operating systems, even traditional UNIX
looks impressively lean, clear and simple. At some point in the future I do
plan to develop an operating system that is somewhat inspired by the design and
philosophy of UNIX.
[1] https://gist.github.com/665971
I've been noticing a disappointing trend of modern developers creating software
that is becoming more and more inefficient: in code size, memory usage, and
run times, for basically equivalent tasks. As the days where software had to
share 640 KiB of memory have long disappeared, so has the skill of developing
fundamentally simple and cruft-free software it seems.
A key example is a comparison of implementations of `cat' over various
operating systems from the UNIX family [1], which is meant to be an extremely
simple program. GNU's `cat' consists of 782 lines, which is absolutely
ridiculous for a program that is, at a fundamental level, intended to
concatenate streams. `cat' is not meant to number lines, squeeze blank lines,
or format non-printable characters, and these features are arguably almost
never used.
I am becoming frustrated by popular software projects, even in the open-source
world, that suffer from extreme levels of unnecessary cruft. It disappoints me
to mention the GNU project as being a notorious offender in the creation of
bloated software. `emacs' is often jokingly referred to as an `entire operating
system', but this metaphor is far closer to reality than many people realise.
`GRUB', the GNU project's bootloader, is not a bootloader; it is also
comparable, in size and functionality, to an `operating system', and much of
its functionality is blatantly unnecessary for its perceived core purpose:
booting operating systems.
It is rare to find software today that follows the traditional UNIX philosophy,
even on operating systems inspired by UNIX. The UNIX philosophy consists of
concepts whereby software should be simple, orthogonal in nature, and modular,
among other good development practices. `Plan 9 from Bell Labs' gets it right
in many areas where other, more popular operating systems, don't. Unfortunately
it has not become a success over its predecessor, UNIX, because UNIX is widely
seen as `good enough', however technically inferior it may be.
However, in comparison to today's operating systems, even traditional UNIX
looks impressively lean, clear and simple. At some point in the future I do
plan to develop an operating system that is somewhat inspired by the design and
philosophy of UNIX.
[1] https://gist.github.com/665971