Last week, I spent some time giving KDE a good second look over, spending roughly 2 hours figuring out how to tweak the theming and desktop to be closer to how I wanted to work with a workstation. And then, it was ready for work. Serious work. Contrast this with Gnome, which, after spending several weeks tweaking and attempting to accept/live with its flaws was still being too much of a productivity zapper.
This can be partly blamed on the underlying toolkits behind these (Gnome uses GTK, while KDE uses Qt). Yes, I am biased towards Qt, despite it being C++ and GTK being C. Although it's true that usually I've been rather vehemently opposed to the use of C++ as an awful language, that is not such a problem in some cases as this situation highlights, because:
A crappy toolkit in any language (great or crappy) will still be a crappy toolkit. There's no masking that fact. Indeed, crappy toolkits which are highly dependent on some crappy features of a crappy language are even worse than anything else (*ahem* OpenCV), as it actually becomes impossible to use some things at all. At the very best, the toolkit will only seem a bit less painful to use because you're not dealing with the low level garbage thrown about by its language of choice.
However, a brilliant toolkit transcends crappy languages. Although it may be written in a crappy language, the great design means that it is actually worth porting the toolkit to greener pastures, where greatness + greatness = best combination around.The differences between these two toolkits are quite obvious. Yes, you can (given enough time, effort, and pain relief) achieve similar results in both toolkits. The basics are pretty similar, with some things carrying across from Java Swing too. However, the difference lies in the details. With Qt, most things can be achieved quite easily through a combination of nice + predictable API's, sensible defaults, and a general lack of verbosity. GTK on the other hand is the exact opposite: its API's are inconsistent, call various concepts and settings by weird and very verbose names, and have braindead defaults (which may have made sense for a few months in the 1990's but not anymore) which almost certainly will need to be modified in verbose ways.
Even if not doing most of these things via code, the GUI designers are like night and day - one exudes beauty and clarity, while the other is a programmers' late night hack job done without any graphical sensibilities. And as I've mentioned before, there lies our problem: the crappy tools+environment which burden developers with a lot of ugly crap they have to wade through while developing their own creations will inevitably rub off on their work.
- Crappy tools = more effort spent trying to do things/get things barely functional. That takes away from other time and energy that could have been spent trying to improve presentation and workflow issues.
- Ugliness/chaotic environments gradually breed a lowered standard for what they consider acceptable
Having spent months slaving away trying to get some (Py)GTK GUI's working over the summer months (and several longer but also more productive months with Java Swing in the months preceeding that), it was quite a breath of fresh air recently to pick up PyQt again after over a year or two of not having had a chance to use it and be able to easily to bash up a few complex systems in a matter of hours. Sure, finding solutions (in API docs or online) for certain problems is always frustrating no matter what toolkit you use, but if the majority of things fall into place quite easily, then you need to do less of this.
Anyways, back to Gnome and KDE.
At the end of the day, many Linux themes are butt ugly. There seem to be many people out there with fetishes for 3D boxy bevels and combinations of garish low-contrast colours. Gnome and KDE are practically tied on this one, though I'm still looking for a KDE theme which has slightly more padding on its buttons (they're sadly a bit small and cramped looking stilll).
As far as icons go, most icons are pretty good, although the more modern Gnome ones (and/or practically anything that is following the recent monochrome fad) are getting increasingly illegible. In particular, I'd like to particularly call out the back arrow icon that Tango/Gnome uses: that thing is complete and utter crap! It's NOT VISIBLE AT ALL under most if not themes, especially lighter ones where the combination of thin lines and light-gray lines just makes it COMPLETELY INVISIBLE on toolbars.
Speaking of the back buttons, it's pretty irritating that the Nautilus (a Gnome file browser) developers thought it was acceptable to take the forward/back buttons from their customary top-left location and dump them on the far-right beside a "search" toggle. This breaks years of muscle and spatial memory of practically every computer user who's ever used a file browser OR a web browser recently (there are other culprits out there who also break this, but at least have the courtesy of leaving these buttons relatively close to where we're used to finding them). Sure, there are other alternatives out there, but gah!