Bloat is in the eye of the beholder

I use that word a lot, so you’d think I would have a proper, precise definition at the ready, for times like this.

To be honest though, I don’t. I don’t think I can adequately define bloat, although I am completely confident I can show what it is. Here’s an example:

kmandla@cc99p01:~$ sudo aptitude install firefox
 Reading package lists... Done
 Building dependency tree
 Reading state information... Done
 Reading extended state information
 Initializing package states... Done
 Building tag database... Done
 The following NEW packages will be automatically installed:
   acl app-install-data apturl consolekit dbus dbus-x11 deborphan dialog
   docbook-xml esound-clients esound-common firefox-3.0 gamin gconf2
   gconf2-common gettext-base gksu gnome-app-install gnome-icon-theme
   gnome-keyring gnome-mime-data gnome-mount hal hal-info hicolor-icon-theme
   iso-codes launchpad-integration libart-2.0-2 libaudiofile0
   libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1
   libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common
   libcairo-perl libck-connector0 libcroco3 libdbus-glib-1-2 libenchant1c2a
   libesd-alsa0 libgail-common libgail18 libgamin0 libgconf2-4 libgksu2-0
   libglib-perl libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl
   libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0
   libgnomecanvas2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0
   libgnomevfs2-common libgnomevfs2-extra libgsf-1-114 libgsf-1-common
   libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl
   libgtkhtml2-0 libgtop2-7 libgtop2-common libhal-storage1
   libhunspell-1.1-0 libidl0 liblaunchpad-integration1 libnotify1
   libnspr4-0d libnss3-1d liborbit2 libpam-ck-connector libpam-gnome-keyring
   libpolkit-dbus2 libpolkit-gnome0 libpolkit-grant2 libpolkit2 librsvg2-2
   librsvg2-common libscrollkeeper0 libsexy2 libsmbclient libsmbios-bin
   libsmbios1 libsmbiosxml1 libvte-common libvte9 libwnck-common libwnck22
   libx86-1 libxres1 libxslt1.1 lsb-release notification-daemon pm-utils
   policykit policykit-gnome powermgmt-base python-apt python-dbus
   python-gconf python-gdbm python-gnupginterface python-gst0.10
   python-gtkhtml2 python-launchpad-integration python-pyorbit python-sexy
   python-software-properties python-vte python-xdg radeontool scrollkeeper
   sgml-base sgml-data shared-mime-info software-properties-gtk synaptic
   ubufox unattended-upgrades usbutils uswsusp vbetool xbase-clients
   xml-core xulrunner-1.9
 The following NEW packages will be installed:
   acl app-install-data apturl consolekit dbus dbus-x11 deborphan dialog
   docbook-xml esound-clients esound-common firefox firefox-3.0 gamin gconf2
   gconf2-common gettext-base gksu gnome-app-install gnome-icon-theme
   gnome-keyring gnome-mime-data gnome-mount hal hal-info hicolor-icon-theme
   iso-codes launchpad-integration libart-2.0-2 libaudiofile0
   libavahi-client3 libavahi-common-data libavahi-common3 libavahi-glib1
   libbonobo2-0 libbonobo2-common libbonoboui2-0 libbonoboui2-common
   libcairo-perl libck-connector0 libcroco3 libdbus-glib-1-2 libenchant1c2a
   libesd-alsa0 libgail-common libgail18 libgamin0 libgconf2-4 libgksu2-0
   libglib-perl libgnome-keyring0 libgnome2-0 libgnome2-canvas-perl
   libgnome2-common libgnome2-perl libgnome2-vfs-perl libgnomecanvas2-0
   libgnomecanvas2-common libgnomeui-0 libgnomeui-common libgnomevfs2-0
   libgnomevfs2-common libgnomevfs2-extra libgsf-1-114 libgsf-1-common
   libgstreamer-plugins-base0.10-0 libgstreamer0.10-0 libgtk2-perl
   libgtkhtml2-0 libgtop2-7 libgtop2-common libhal-storage1
   libhunspell-1.1-0 libidl0 liblaunchpad-integration1 libnotify1
   libnspr4-0d libnss3-1d liborbit2 libpam-ck-connector libpam-gnome-keyring
   libpolkit-dbus2 libpolkit-gnome0 libpolkit-grant2 libpolkit2 librsvg2-2
   librsvg2-common libscrollkeeper0 libsexy2 libsmbclient libsmbios-bin
   libsmbios1 libsmbiosxml1 libvte-common libvte9 libwnck-common libwnck22
   libx86-1 libxres1 libxslt1.1 lsb-release notification-daemon pm-utils
   policykit policykit-gnome powermgmt-base python-apt python-dbus
   python-gconf python-gdbm python-gnupginterface python-gst0.10
   python-gtkhtml2 python-launchpad-integration python-pyorbit python-sexy
   python-software-properties python-vte python-xdg radeontool scrollkeeper
   sgml-base sgml-data shared-mime-info software-properties-gtk synaptic
   ubufox unattended-upgrades usbutils uswsusp vbetool xbase-clients
   xml-core xulrunner-1.9
 0 packages upgraded, 134 newly installed, 0 to remove and 0 not upgraded.
 Need to get 38.2MB of archives. After unpacking 186MB will be used.
 Do you want to continue? [Y/n/?]

That’s not news, really. I borrow that from a post from almost two years ago, when I was speaking in a roundabout way about the same thing.

Are all those dependencies still required? I wouldn’t doubt it, but I’m not going to check on it either. If anything, I think I am safe in assuming that it’s worse now than it was two years ago.

That, to me, is bloat. You need one application — a web browser — and you get a huge list of suggested software, including libraries and applications that are, by some reports, completely unrelated to the task at hand.

It’s true, you can thin that list out considerably, simply by telling Ubuntu that you don’t want its recommendations, only its requirements.

Whether or not the remainder is sufficiently lean is for you to decide. For me, it’s not — not when there is a 9.8Mb precompiled static-linked version available straight from getfirefox.com, needing almost nothing additional to get started.

That might be what is at the core of the issue though: Bloat is almost purely subjective. What looks horrific and stomach-churning to me is quite acceptable to someone else on the planet, and probably more than just one.

So much in the same vein of default desktops, bloat is what you decide it is. If more than 186Mb of disk drive space is an acceptable sacrifice just to look at videos of snails racing, then you may proceed at your leisure. No one will stop you.

On the other hand, I will rely on my 364Kb prerelease version of elinks 0.12 to surf the web, because from where I sit, they do the same thing. Of course, I don’t get to watch snails race. πŸ™„

To say software bloat is bad and that you should avoid bloated desktops or inefficient operating systems is simply one person’s opinion. You’re free to agree or disagree, and run your system as you like.

You determine your own level of involvement. Enervate your system with as much or as little software as you like, because it’s yours and no one gets to tell you how to use your computer.

We all freed ourselves of that bloat when we stopped using Windows and Macs. :mrgreen:

P.S.: Don’t think for a second that this “bloat is subjective” nonsense is going to keep me from harassing you about bloat. πŸ‘Ώ

10 thoughts on “Bloat is in the eye of the beholder

  1. prinzzchavo

    You made your point quite clear…BUT in the end, we all end up watching snail races from time to time(I guess)…and, on that purpose, there are several other (un-bloated?)possibilities(IMO, swiftfox/opera and non-automated installations should do the trick)

    Apart from Webbrowsers, I find it difficult these days to stay away from bloating the system. I might be doing something wrong, but even my most basic system installation goes easily over 1 Gb

    E.g.: Arch Linux, openbox, openoffice, openjdk, wine, and a bunch of other, lighter programs…6.5Gb!! Even when I have qt and gtk2 installed(because of skype and some other programs) it makes no sense at all, that the rest of dependencies take so much diskspace.

    Reply
  2. Mario Figueiredo

    You cannot ask us to follow your reasonin and then tell us that Windows is bloat. Where’s the argumentation for that? Nowhere, if we are to agree with you.

    Running a Windows 7 machine with no special configuration options, takes away ~800Mb of my 3Gb RAM. Under these circumstances (and because I rarely ever experience paging) It’s not bloat. And when I start optimizing my system, I can reduce that to ~500 MB.

    Truth is I agree bloat is subjective. But to users’ tastes and requirements, but also to the current hardware. What really doesn’t bother me on a x64 machine with 8GB of ram, could probably make me scream in anger on a 1GB i686 machine.

    But from a developer standpoint, bloat is a very precise and precisely measurable variable in any program. And that’s where most bloat reside. Not on what users choose to install on their machines, but on how developers choose to code their applications.

    Reply
    1. anon

      holy crapola, I’ve seen Vista use less than this even. However, it’s still bloated: XP managed to sturggle with 256 MB (though Firefox actually runs kinda smooth)

      In contrast, I can get a pretty feature-rich desktop entirely in RAM (64 MB at that) using Tiny Core Linux using WindowMaker, SIag, XFE, Dillo, and some games too πŸ˜‰

      Reply
    2. LM

      I do feel like my Windows system is less bloated than my Linux and FreeBSD systems. The programs I run on Windows either have things linked statically or have less dll dependencies. That’s probably because you usually have to install Windows programs individually, not using a package manager to pull down everything you need. I think it might have helped to qualify which version of Windows feels bloated. Windows 98 SE runs better and faster on my 64 MB machine than FreeBSD 7.2. I run mostly the same applications on Windows and Linux and FreeBSD, but for some reason, I feel like the choices made when compiling the Windows applications were much cleaner and pulled in far less dependencies than what repositories for FreeBSD or Linux seem to offer. Would be nice if there were more options other than compiling everything from scratch in Linux that would still let you cut down on library dependencies.

      Reply
      1. bryan

        If you think that staticly linked libraries are faster and have less bloat, you may want to keep track of StaLi, the suckless distribution. So far it’s shaping up well and only uses staticly linked libraries and executables from what I understand. The available software may not be to your liking (dwm, xterm,surf, mplayer & dmenu if memory serves) but you’re free to change that.

        Reply
        1. LM

          I’ve checked into StaLi. Sounds like a great concept. However, when I asked about things like backward compatibility and binary compatibility, was told the project was more interested in other goals. Looked like it would be of more use to someone working with embedded systems at this point. Also ran into some other interesting distributions such as PC-BSD, Glendix, gobolinux and t2 sde, but none of them is exactly what I’m looking for. I keep thinking I’d like to do my own Linux from Scratch, but I just don’t have the time to build it all. Would be nice, with all the Linux distributions out there, if I could find one with similar goals and add my efforts to it, rather than wanting to reinvent the wheel because I can’t find what I’d like. Thanks for the suggestion. I’ll keep searching.

          Reply
  3. Soroush

    You should tell apt to ignore recommended-dependencies with --no-install-recommends. These are the packages that are not dependencies but supposedly provide better overall experience while you are using the software. Hopefully it will get rid of most of the bloat.

    Reply
  4. steve

    K.Mandla, have a look into modifying/making/adding a file called apt.conf that goes in /etc/apt/ … mine looks like this

    // auto-remove breaks on meta packages
    APT::Get::AutomaticRemove “0”;
    APT::Get::HideAutoRemove “1”;

    // Recommends are as of now still abused in many packages
    APT::Install-Recommends “0”;
    APT::Install-Suggests “0”;
    Debug::pkgAutoRemove “0”;

    This config allows me to install an xfce4 desktop in just over 1GB of hdd space and avoids horrendous lists like you got there. The ‘no-install-recommends’ is the same thing, but I don’t want to type that everytime I install something.

    Reply
  5. Ninad

    Hi

    The link getfirefox.com redirects me to firefox.com

    I was not able to find the pre-compile static linked version from firefox.com

    Ninad

    Reply
    1. K.Mandla Post author

      This should link straight to en-US version for Linux that you can decompress into a folder, and run from that directory.

      You may need to add dbus-glib and the alsa-lib package before it will start though. Most distros already have those installed. Cheers. πŸ˜‰

      Reply

Leave a reply to steve Cancel reply