I’ve got a Google Alerts hint set on compiz. That means that whenever something new pops up in Google’s index about compiz, I’m usually one of the first to know. Google sends me a nice little email saying exactly who is saying what about it.
A recent trend I’ve noticed is this myth that compiz is bloated.
My argument here is that compiz is not bloated but rather it is modular.
That last link is a nice little definition of bloat from Wikipedia:
Software bloat is a term used to describe the tendency of newer computer programs to have a larger installation footprint, or have many unnecessary features that are not used by end users, or just generally use more system resources than necessary, while offering little or no benefit to its users. – (c) Wikimedia Foundation
So the way I see it, there are three ways of defining software bloat:
- Large installation footprint
- Lots of unnecessary features
- Large memory / CPU footprint
I’m going to be focusing on the last one more, since that is the one that would be of most concern.
Large installation footprint:
Considering the fact that compiz has tons of plugins, the installation footprint of compiz tends to be quite large. Perhaps not as large as most windows applications these days but certainly larger than your typical window manager. However compiz by definition is a modular window manager. The size of the actual executable for compiz-0.8 with debug symbols and all is 909.3KB as I measure it here. Metacity comes in at a more lightweight 531.1 KB but it doesn’t have a plugin interface (that I know of). Compiz 0.9 is slightly heavier at about 3.3MB but is written in C++ which means lots of symbol mangling and repetition but it has the OpenGL and Composite bits ripped out. This makes it rather lightweight for a C++ version of compiz. (libopengl.so is about 2.0 MB, libcomposite.so comes it at about 842 KB)
Compiz has gotten a bit bigger in that sense but it has been redesigned so that it is not as bloated by including so many features in it’s core. You can use compiz as a similar window manager to metacity without all the opengl and composite stuff.
What tends to be large is all the plugins compiz comes with. You have move, resize, place and decoration as sort of essential plugins (all quite small) but then you have the plugin packs with quite large plugins. However compiz itself is quite small.
Lots of useless features that nobody ever uses
A fairly good example of bloatware was probably the first one that comes to mind, which was Windows Vista that comes from our friends at Redmond. You’re probably thinking though ‘You so crazy! Comparing a window manager to an OS!’. But consider this, most of the ‘features’ that came with Vista that nobody ever used or wanted (*cough* Windows Mail *cough cough* Windows Activation) were part of the core distribution of the OS. The compiz plugins, asides from Move, Resize and Place are not really.
YouTube videos tend to show off how much bling you can fit in a 10 minute screencast with compiz. That causes some pundit to say ‘Wow, look how pointless that is’ which eventually manifests into ‘Compiz is bloated because some pundit saw useless compiz features on YouTube and didn’t actually use a minimal version of compiz’. Remember that all this ‘useless bling’ are implemented in plugins, we have very strict rules about what goes in core and the more stuff that can be taken out of core the better. (Example: OBS plugin, or more recently the entire OpenGL and compositing bits).
In compiz 0.9 we have a CMake buildsystem that allows for very flexible builds of lots of plugins in one pack or just a few. It is possible for distributions to ship a version of compiz with just the core functionality quite easily.
Memory / CPU footprint
People seem to be concerned these days with ‘the amount of memory and CPU time compiz take up’. First of all, if compiz or Xorg have high CPU time /when idle/ than it is most likely your broken proprietary graphics driver. Rendering should not happen on the CPU. Secondly, just in case the WRAP loops for lots of plugins do happen to take up CPU time when they just check variables then disable them, we have added code that allows plugins to have their functions called at all, which means less CPU time wasted on superfluous variable checking every paint cycle.
Planet readers, here is where it starts to look ugly, so for the memory argument, please just hit the more tag
Read more »