We’re going to examine 7 toolkits in just a minute after discussing how to deal with this topic. These 7 are:
Some people say that Linux is all about is choice. True or not: When it comes to toolkits, it’s usually the programmers who have to make a choice. They have to check if a toolkit provides all the features they want and if they feel comfortable with its syntax and so on. However this blog entry is not about recommendations for programmers (there’s probably enough material out there already).
From which perspective are we going to look at them, if not from a programmer’s? Simple! From the perspective of a distribution creator wannabe! 😉
Distributions and toolkits
For a distro creator things are much easier here – he could decide at will or even decide not to make a decision for one but support several (or all) available toolkits instead. There are reasons why this makes sense. Many modern systems combine for example Qt and GTK+ since the users often “mix” applications of both TKs. You like the well-known VLC? Then you have Qt on board. Using GIMP, too? Not without GTK+! Thanks to the theming ability, you usually won’t even notice that your default applications relay on different toolkits.
However there’s also a very good reason not to provide several toolkits by default: They all use up valuable system resources! In the planing especially for a light-weight distribution, it’s a very good idea to make a decision towards one standard toolkit and package default applications which use this particular one.
However it’s not as easy as that in this case. There are lighter and heavier toolskits. Of course the lighter ones lack several features that the others provide. But even more importantly for us: There are huge differences in the number of applications available for each TK! Unfortunately it’s the lightest TKs which have the lowest number of programs using them… So let’s take a closer look at this post’s topic!
As I said before, we won’t examine the TKs in their technical aspects (or distinguish between toolkit, development framework, etc). Of course things like FOX not supporting themes can be very relevant when deciding on the right standard toolkit for our distro. But that’s beyond the scope of this blog entry.
We’re just going look at the various TKs in terms of how “heavy” the are. To do this, we compare the amount of drive space they need, how long they take to compile and how many dependencies they have. The first is done with the Arch Linux packages for the particular TK and the rest on a fresh Gentoo VM (emulating a single core 2.66 GHz pc with 2 GB ram and compiling with -j1) with just X11 installed. There are however a few things which make our comparison a bit difficult – for that reason I’ll explain each toolkit on its own first and provide a table at the end of the post.
I thought about including Qt3, too, for a moment. Why? Well, it would have made a nice comparison on how much heavier Qt4 is and besides that, Trinity DE still uses it. But Qt5 is already on its way and so I decided to discard it.
Qt4 is one colossus of a TK! The Arch package (qt-4.8.2-3-i686.pkg.tar.xz) is 21.0 MB in size and 80.4 MB uncompressed!
It’s so big that it was split into smaller packages on Gentoo (qt-script, qt-bearer, qt-sql, qt-xmlpatterns, qt-opengl, qt-core, qt-phonon, qt-test, qt-declarative, qt-demo, qt-mobility, qt-qt3support, qt-svg, qt-dbus, qt-multimedia, qt-webkit, qt-openvg, qt-assistand, qt-gui). 115 packages have to be compiled and installed and 386 MB downloaded from the net to do this! The source code for Qt alone (qt-everywhere-opensource-src-4.8.2.tar.gz) is 234 MB in size; the total compilation process takes 3:20:45 of which Qt alone takes 2:32:14!
GTK+3 is not actually a stand-alone TK but in fact extends and as such depends on the older GTK+2.
The Arch package (gtk3-3.2.3-3-i686.pkg.tar.xz) is 6.6 MB in size (together with GTK+2: 13.3 MB) and uncompressed it needs 51.5 MB (together with GTK+2: 106 MB).
Building it on Gentoo means compiling and installing 89 packages whose source code is 132 MB in size of which the GTK+3 source makes up 12 MB (together with GTK+2: 24.6 MB. Compiling takes 45:51 minutes of which 5:37 are for compiling GTK+3 (together with GTK+2: 11:27 minutes).
The Arch package for GTK+2 (gtk2-2.24.10-3-i686.pkg.tar.xz) is 6.7 MB in size and 54.4 MB uncompressed.
To install it on Gentoo, 88 packages have to be built and 120 MB of sources downloaded. GTK+2 source code makes up 12.6 MB of that. Compiling the whole thing takes 40:00 minutes and GTK+2 alone takes 5:50 minutes.
GNUstep, being based on the objective-c language, has the disadvantage that the whole GCC needs to be recompiled with OBJ-c enabled on Gentoo. This is of course a very big factor, but while I wanted to mention it, I’ll subtract the GCC recompile on the comparison.
GNUstep consists of several packages by default. The Arch packages (gnustep-back-0.22.0-3-i686.pkg.tar.xz, gnustep-base-1.24.0-3-i686.pkg.tar.xz, gnustep-gui-0.22.0-3-i686.pkg.tar.xz, gnustep-make-2.6.2-2-any.pkg.tar.xz) are together 3.9 MB in size and 16.7 MB uncompressed.
Building on Gentoo means installing 93 packages for which 206 MB of source code needs to be downloaded (including GCC recompile) or 92 packages, 141 MB in size (without GCC recompile). The packages (gnustep-base-1.24.0.tar.gz, gnustep-gui-0.22.0.tar.gz, gnustep-make-2.6.2.tar.gz, gnustep-back-0.22.0.tar.gz) are 7,0 MB in size. Compiling takes 1:27:13 (including GCC recompile), 43:51 minutes (without it) and 4:22 minutes for GNUstep alone.
The Arch package for FOX (fox-1.6.40-1-i686.pkg.tar.xz) is 3.9 MB in size and 13.8 MB uncompressed.
Building it on Gentoo means compiling 6 packages whose source is 5.0 MB in size of which FOX’s source code makes up 4.3 MB. Compiling it all takes 5:59 minutes and FOX alone takes 4:49 minutes.
OpenMotif’s Arch package (openmotif-2.3.3-2-i686.pkg.tar.xz) is 3.3 MB in size and 10.3 MB uncompressed.
Installing it on Gentoo means building 4 packages for which 6.7 MB of source code has do be downloaded, 5.9 MB of source for OpenMotif alone. Building it takes 3:29 minutes while OpenMotif alone takes 2:58 minutes.
FLTK (pronounced “fulltick”) is a very light toolkit. It’s Arch package (fltk-1.3.0-3-i686.pkg.tar.xz) is just 1.0 MB in size and uncompressed it only takes 4.7 MB of space.
To install it on Gentoo, 7 packages have to be built, which needs 7.2 MB of source code downloaded from the net. 4.0 MB of which is for FLTK source. Building only takes 2:42 mintes and for FLTK alone it’s as little as 1:04 minutes!
||Build time (h:m:s)
||1.0 / 4.7
||7.2 / 4.0
||0:02:42 / 0:01:04
||3.3 / 10.3
||6.7 / 5.9
||0:03:29 / 0:02:58
||3.9 / 13.8
||5.0 / 4.3
||0:05:59 / 0:04:49
||3.9 / 16.7
||141 / 7
||0:43:51 / 0:04:22
||6.7 / 54.4
||120 / 12.6
||0:40:00 / 0:05:50
||13.3 / 106
||132 / 24.6
||0:45:51 / 0:11:27
||21.0 / 80.4
||386 / 234
||3:20:45 / 2:32:14
All sizes in MB.
*) without recompiling GCC for OBJ-C support
**) Including GTK+2
The winner and most light-weight toolkit is easily FLTK. It has the smallest installed size, smallest source and shortest compilation time, both including dependencies and on its own. Only in the number of dependencies it’s beaten by OpenMotif and FOX which are quite light-weight in the other aspects, too. With GNUstep things become a lot more heavy and GTK+ or Qt are of course full-blown toolkits which provide about every feature you’d need but are also very bloated.
We’ll drop FOX and GNUstep from now on, since there’s no working desktop environment using them at the moment (There’s a project to create a FOX DE, but it seems to be inactive since 2005 and Ètoilè (GNUstep) is a mess right now) which makes them irrelevant for our purpose. There was of course some value in adding them to this comparison, though.
Before we go on with comparing TKs and DEs while running some standard applications somewhen next month, the next post will deal with creating a live-cd. This will be an essential task sooner or later and I also need it for “DDD”, one of Eerie’s sub-projects which was not yet revealed (don’t expect too much, though).