Consistency Isn’t Skin Deep

Late last week we ran a story on how the Google Chrome team had decided to use Gtk+ as the graphical toolkit for the Linux version of the Chrome web browser. It was a story that caused some serious debate on a variety of aspects, but in this short editorial, I want to focus on one aspect that came forward: the longing for consistency. Several people in the thread stated they were happy with Google’s choice for purely selfish reasons: they use only Gtk+ applications on their GNOME desktops. Several people chimed in to say that Qt integrates nicely in a Gtk+ environment. While that may be true from a graphical point of view, that really isn’t my problem with mixing toolkits. The issue goes a lot deeper than that.

Qt does a pretty good job of making sure its applications do not stand out graphically – or better put, it makes sure Gtk+ applications do not stand out in a Qt environment. It’s trivial to make sure Gtk+ and Qt applications mingle nicely without offending one another too much. The problem, however, is that beauty is only skin deep.

When I state that I do not like to mingle toolkits in Linux it has less to do with the graphical side of the coin – the behavioural part is far more important. Consistency in a graphical user interface isn’t merely a matter of using the same theme; it has much more to do with behaviour and layout.

And this is where the problems occur. In general, GNOME developers design the user interfaces of their Gtk+ applications different than how KDE developers design their Qt interfaces. KDE developers value choice, configurability, tweakability, whereas GNOME developers tend to work towards providing the necessities, and leaving out options that they deem confusing or pointless. This is of course a gross oversimplificiation, but the point remains. I’m not trying to say either approach is better – I’m just stating that they are different.

This difference in approach leads to differences in user interfaces. I can tell a Qt application apart from a Gtk+ one from three miles away – even if they replicated each other’s looks perfectly. They arrange their widgets differently, put common options in different places, use different widgets for similar options, and so on, and so forth. The end result is that I have to think about where to find stuff, and I don’t like that.

When I’m using a KDE environment, Gtk+ applications annoy me because they do not behave like the Qt applications I’m currently using. When I’m in a GNOME environment, it’s vice versa; it are the Qt applications that annoy me. This has nothing to do with placing blame or about what toolkit is better; when using environment A, I have certain expectations about where to find stuff – add in applications from environment B, and these expectations are of no use anymore. I find that frustrating.

I can already see several people firing up the comment box, ready to start off about how the situation on Windows isn’t much better – and they’d be right. However, that’s not a valid argument, and it’s totally irrelevant to this discussion. I find this problem just as annoying on Windows as I do on Linux, but at least Linux gives me the ability to stick to one toolkit and have a consistent desktop – whether that be Qt or Gtk+. Windows being a mess in this regard does not negate my problem.

Some people see the competing toolkits as a problem, but I really don’t. People who like consistency and the KDE approach, can stick to a strict Qt desktop, and people who like consistency and the GNOME approach can stick to a strict Gtk+ desktop. People who just don’t give a rat’s bum can use whatever they want. Everybody is happy!

Consistency is a concept that goes deeper than mere looks.

93 Comments

  1. slougi 2009-02-16 2:22 pm EST
    • siride 2009-02-16 3:08 pm EST
  2. Darkmage 2009-02-16 2:30 pm EST
    • dagw 2009-02-16 2:43 pm EST
      • Darkmage 2009-02-16 3:11 pm EST
        • AlexandreAM 2009-02-16 6:01 pm EST
          • michi 2009-02-16 7:32 pm EST
          • Darkmage 2009-02-16 10:01 pm EST
  3. ggeldenhuys 2009-02-16 2:51 pm EST
    • niemau 2009-02-16 2:55 pm EST
      • kaiwai 2009-02-16 9:17 pm EST
        • j-kidd 2009-02-17 12:48 am EST
          • Delgarde 2009-02-17 1:12 am EST
          • jpkotta 2009-02-18 8:24 am EST
          • WereCatf 2009-02-17 1:57 am EST
          • Torsten Rahn 2009-02-17 3:40 am EST
          • Darkmage 2009-02-17 4:30 am EST
          • boudewijn 2009-02-17 9:21 am EST
          • ari-free 2009-02-18 4:24 am EST
          • gustl 2009-02-17 10:20 am EST
          • j-kidd 2009-02-17 3:46 pm EST
          • reinouts 2009-02-17 10:40 pm EST
          • j-kidd 2009-02-19 1:10 am EST
      • ggeldenhuys 2009-02-17 7:03 am EST
        • sorpigal 2009-02-17 12:38 pm EST
      • thavith_osn 2009-02-17 11:41 pm EST
    • dagw 2009-02-16 3:09 pm EST
  4. xnoreq 2009-02-16 2:54 pm EST
    • Thom Holwerda 2009-02-16 2:58 pm EST
      • xnoreq 2009-02-16 3:22 pm EST
      • steviant 2009-02-16 3:29 pm EST
        • xnoreq 2009-02-16 3:52 pm EST
      • segedunum 2009-02-16 3:29 pm EST
        • Darkmage 2009-02-16 3:33 pm EST
        • Thom Holwerda 2009-02-16 3:40 pm EST
          • dagw 2009-02-16 6:07 pm EST
    • noamsml 2009-02-16 10:08 pm EST
  5. TechGeek 2009-02-16 3:16 pm EST
    • arpan 2009-02-16 3:59 pm EST
      • sorpigal 2009-02-17 12:49 pm EST
    • abraxas 2009-02-16 8:05 pm EST
      • dagw 2009-02-16 8:35 pm EST
        • abraxas 2009-02-16 9:42 pm EST
          • dagw 2009-02-16 10:42 pm EST
          • abraxas 2009-02-17 6:10 am EST
          • dagw 2009-02-17 8:21 am EST
          • abraxas 2009-02-17 1:11 pm EST
      • sorpigal 2009-02-17 12:44 pm EST
    • ari-free 2009-02-18 4:15 am EST
  6. segedunum 2009-02-16 3:25 pm EST
    • Darkmage 2009-02-16 3:28 pm EST
      • segedunum 2009-02-16 3:46 pm EST
        • Lousewort 2009-02-16 6:32 pm EST
          • mtilsted 2009-02-16 7:55 pm EST
          • sachindaluja 2009-02-18 4:12 am EST
          • leos 2009-02-16 8:03 pm EST
          • sbergman27 2009-02-16 8:14 pm EST
          • dagw 2009-02-16 8:36 pm EST
          • segedunum 2009-02-17 2:27 pm EST
          • Lousewort 2009-02-17 4:12 pm EST
          • segedunum 2009-02-17 5:25 pm EST
          • Lousewort 2009-02-17 6:38 pm EST
          • DrillSgt 2009-02-17 6:52 pm EST
          • sbergman27 2009-02-17 7:03 pm EST
          • DrillSgt 2009-02-17 8:24 pm EST
          • Lousewort 2009-02-17 7:12 pm EST
          • sbergman27 2009-02-17 7:17 pm EST
    • Thom Holwerda 2009-02-16 3:39 pm EST
      • dagw 2009-02-16 3:54 pm EST
      • segedunum 2009-02-16 4:07 pm EST
        • darknexus 2009-02-16 4:47 pm EST
          • segedunum 2009-02-17 2:32 pm EST
      • porcel 2009-02-17 4:07 pm EST
    • acobar 2009-02-16 4:06 pm EST
  7. Kokopelli 2009-02-16 3:43 pm EST
  8. FunkyELF 2009-02-16 4:10 pm EST
  9. spiderman 2009-02-16 6:13 pm EST
  10. michi 2009-02-16 6:32 pm EST
    • BluenoseJake 2009-02-16 9:04 pm EST
  11. Jason Bourne 2009-02-16 7:09 pm EST
    • michi 2009-02-16 7:43 pm EST
  12. TLZ_ 2009-02-16 7:29 pm EST
  13. jello 2009-02-16 7:40 pm EST
  14. jamboarder 2009-02-16 11:28 pm EST
  15. FishB8 2009-02-17 12:11 am EST
    • WereCatf 2009-02-17 2:04 am EST
      • lemur2 2009-02-17 4:34 am EST
  16. IkeKrull 2009-02-17 2:50 am EST
    • Delgarde 2009-02-17 4:42 am EST
      • IkeKrull 2009-02-17 6:11 am EST
    • anda_skoa 2009-02-17 12:48 pm EST
  17. sorpigal 2009-02-17 12:29 pm EST
  18. antwarrior 2009-02-18 10:36 pm EST