Menu

User Interface consistency; or lack thereof

March 21, 2011 - Programming

Starting with the recent release of Internet Explorer 9, I’ve noticed a disturbing trend about the latest generation of Applications that run on Graphical desktop environments.

Absolutely none of them seem concerned about user-interface consistency.

An Application running on windows should look like a windows application. a Application running on Linux should look like the other applications the user is running It’s not really that hard to do; the functionality is free with the Operating system. With windows you merely create a window and it has the proper decorations for the version of windows; the same code on windows XP will produce a Luna themed window (if a Luna theme is used) or a Aero Glass themed window on Windows Vista, or a standard window on Windows 2000. Similar themes are found in OSX, Linux, and so forth.(I will get to Chrome OS in a moment). My point is the functionality is free. Additionally there are any number of cross-platform environments that can be used that will make your windows look as they should on the appropriate system. GTK, Qt, and so forth. Additionally, with some languages and environments that isn’t even necessary; the very core of Java is basically built on the premise of portability so these burdens are pretty much held by the class library. .NET’s Windows Forms can be run via Mono (MonoDevelop doesn’t yet have a working designer for them, but everybody knows true programmers don’t use designers! :P).

Despite this- or perhaps in spite of this- we have these new browsers, starting with chrome, providing what is termed a “next generation” interface. Take Chrome, for example. It completely redoes the entire non-client area of the window. I wouldn’t mind the spartan interface that it presents (no menu, no real toolbar, etc) if they didn’t decide that they could just change the basic window arrangement as if they owned it. The title bar, in their infinite wisdom, for example, no longer has a title. Instead it is merely a short strip that sits above the Tabs, which in and of themselves appear to sit inside the title bar itself (if you click and drag an empty area to the right of any tabs you can drag it, so it is treated as a non-client area if no tab is there, and as a tab button otherwise. Last but not least- the interface appears to be more or less designed for windows. To be fair it actually doesn’t fit in on any Operating System, but they appear to have unanimously decided that Chrome is going to use the windows-themed caption buttons for minimize maximize and close. It doesn’t matter if you want your windows to look “classic” in windows (have the classic theme selected) google chromes title bar will still look the same. The only real theme change I’ve noticed make a difference is with Aero Glass enabled they actually properly extend the title bar glass frame to within the tab bar, but aside from that it doesn’t respect theme or user preferences at all.

On Windows Vista and 7 it seems to use the “standard” Aero glass buttons for the caption buttons. But with windows 7 there is a bit of a woopsee:

The bottom is the Chrome Caption buttons. the top is from a firefox window in the background. Firefox (without any addins to do otherwise) uses the default OS rendering for the window chrome (outer elements). Ironically, or perhaps to live up to their name, Chrome draws this Chrome itself; for absolutely no good reason except to make a stylistic impression. This is pretty much a non-issue; the X button does stick out a little, but it is no doubt an easy fix, and the function of the buttons is the same, so no loss, right?

Well, consider for a moment- that if they hadn’t gone and redeveloped the wheel for the window chrome here they wouldn’t have this bug, which is clearly based on theri own hard-coding of the offset of the caption buttons from the right side of the window when the window is painted. problem is while they seem to use a hard coded offset (or otherwise an incorrect value) they are painting the standard windows caption buttons using the theme API (this is good, on the whole) the issue is because Windows 7 made some of the buttons slightly larger, so now they are drawn inproperly.

it’s not just the fact that skinned windows (and truly, let’s not fool ourselves- what Chrome is doing is absolutely no different then winamp skins or itunes skins or windows media player skins) are entirely inconsistent, it’s that it’s absolutely impossible to do them properly, and they become a maintenance nightmare.

Even Microsoft’s own teams have been bitten by this bug; A good example is Word 95.

Microsoft Word 95 was, perhaps expectedly- designed to run on Windows 95. Windows 95, as us old folks may remember, was a rather major shift as far as the general Windows Interface was concerned. the windows were designed to be more “3-D” and the caption buttons of windows were redesigned. Microsoft Word 95 had a- feature, however. See, rather then use the boring old standard window manager (which was of course sparkling fresh at the time) they decided to basically rewrite and subclass their main application window to all hell and draw it on their own. I have no doubt this was in part considered only because they had to do some other stuff that involved them needing to do that so they figured what the hell.

The result was that Word 95 had a title bar with italicized text and a gradient background. Fun? No. Useful? No. Good to show off at the executive meeting? Yeah.

Now this was all well and good; aside from the gradient and title bar, the word 95 title bar looked and acted just like any other windows 95 title bar.

But then came around XP and Luna themes. Now by this time it was 6 years later and most people were using at least word 97 for a number of reasons that I won’t get into here, but the point is still valid; in any case, with Luna themes, Word 95 still looked the same way it did before. This was because during compat testing they discovered that word 95 didn’t work at all with the Luna themes so there was an appcompat patch that forced windows to deal with word 95 in a different fashion (And to all those screaming “OMG they were taking advantage of their monopoly”, they did this with a variety of programs, not just theirs).

The problem was that word was handling a series of events and messages that were almost always given to the Default window procedure. The default window procedure would perform the default actions; these were handled by the window manager, and in later windows revisions was used to support “theming”. This isn’t quite the same as an application like WindowBlinds which aggressively hooks into every single window and pretty much forces it’s styles onto them, though. In any case, because Word handled it, it never called The DefWindowProc() so default processing never occured, one example being, for example, when it painted the non-client area.

A secondary issue was of course that word 95 was written for windows 95 and the API had changed since, so some of the things that worked without issues on windows 95 and that word 95 gleefully performed no longer worked in Windows XP.

In any case, after that, people sort of realized “shit, we better start respecting themes and may as well let the window manager do the grunt work, that being it’s job, after all”. So for the most part, programs looked like they should.

Then there was chrome. I don’t generally resort to expletives, but Chrome’s theme management and look and feel are utterly fucking stupid.

Let’s see a few screenies of it running on XP for starters:

 

Mac Inspirat

Royale Noir

Classic Theme

So, what do we have? well, at the left we have a Luna theme, some mac inspirat thing, I don’t remember. Anyway, notably, nearly all applications (except command prompt) adhere to the theme. Except chrome. In fact, even chrome’s colour being similar is a huge coincidence. Next we have Chrome, again, running on XP, this time with Royale Noir as the theme. Does it respect a damned thing about the theme? Hell no, it still draws everything as if it has exclusive control over what I see. Fuck you chrome. Respect my theme, dammit. It’s drawing it’s buttons in a Vista-ey style, too. This is windows XP, you are running on windows XP, don’t try look like you are running on Vista/7. And while you are at it, could you respect my colour and text settings? I went and changed my window background and text colours, with the fizzling hope that maybe chrome would actually, you know, have a configurable UI, but nope. It only changed the background of the search and favourite buttons, which I might add aren’t bloody windows so why the hell are they even affected anyway?

 

So I decided to try to set the “use system theme” option.

 

There isn’t one on the windows build. Seriously, what the hell Google? Why the FUCK does google not only get away with this utter blasphemy (oh, your custom font size? No, fuck you, it’s going to be ten point, so if you are blind or hard of vision you better bring a fucking magnifying glass) but they are actually being <copied> for this. It’s like a software company went out and raped a bunch of puppies, and now Microsoft and Mozilla are like “oh hey, that looks like fun” and they go and rape puppies too. It doesn’t make raping puppies right dammit.

 

And why the completely arbitrary colour choice? sky blue? FOR ALL my themes? I even went and fiddled with all sorts of the advanced appearance settings, couldn’t get chrome to respect a damned single one of them.

Windows is hardly the only OS with which chrome has this complete disrespect for User-selected themes and colour options. On Mac OSX, it’s closer- it still has the OSX themed window management buttons… for what that’s worth to usability. In any case, I speak of Linux.

As I type this, I am on my laptop, running Linux Mint 10. Linux as far as I’ve experienced is extremely solid. I still don’t think it’s a major contender (alongside Windows and OSX) but it is definitely climbing that hill. But regardless that isn’t what this post is about. My current “default” configuration is one of the default mint themes. I forget which one, but it’s not really that important. In any case, as I understand it, many of the common desktop environments support the use of plugin “window decorators”. mine is the default; most applications use it. But as can be seen in the above image, Chrome doesn’t.

 

And again, with the blue. what the hell is with chrome and the colour blue, anyway? In any case, I found the option in the wrench.. menu… thing, and was able to enforce the use of the system theme:

FINALLY

So, finally, I was able to convince chrome to use the default Window decorator- or, at least, it is pretending to, not sure. It still has no menu, because apparently using 23 pixels of screen space is a blasphemy… as if those 23 pixels will mean the user won’t need to scroll anyway. regardless of that, it’s rather stupid that it’s a non-default option to use a system default. It’s the analogous of having an application that has a “preference” for “use system colours and fonts”. I mean, what the hell? the option, if provided, should be to allow the user to use non-default colours and fonts, not to default to some retarded colour configuration chosen seemingly arbitrarily (blue when absolutely no elements in the desktop configuration of mine called for it, for example).I fiddled about with some of the theme settings; there was a setting to “use GTK theme” selecting it made the huge change of making all the blue areas green. Again, why I have no idea. Why not just call it “use green theme”. seriously. a few icon changes and making it “green” seems unrelated to a Windowing toolkit, especially since most GTK applications actually respect the users choice of window decorator.

In any case, I decided to do some more experimentation with another Window decorator I picked up, Emerald.

Emerald

Emerald is a awesome window decorator. They’ve done a stellar job on it. And every single one of my applications that I have (a rather wealthy assortment, thanks to the diversity provided by Open Source projects, even if it takes a little while to find a “ripe” one) works perfectly fine with it.

Except, of course, for chrome:

What? use default system decorator? No, you need to change a preference that. I will use blue, you like blue anyway.

With emerald enabled (I closed down chrome, used Alt-Arrow to move to another desktop, and started up emerald in a console with emerald –replace, switched back, and restarted chrome) I was greeted with.

The exact same damned thing it gave me the first time. This was with the “default” setting to use the non-default system theme. I’m not sure which project manager was able to dictate this to the staff but he needs to be given a copy of a UI design book… particularly about respecting the options the user has already chosen. This theme as you can see is clearly to emulate Windows Vista/7’s “Aero Glass” design. It works very well, even if some of my performance goes down the drain; either way, it’s damn fine for running on an intel chip. In any case, it’s blue again. The fact that the caption buttons (for minimize,maximize, and restore) look the same is pure coincidence; the fact that they happen to coincide with the window decorator settings I’ve chosen has nothing to do with the actions of chrome. So I decided to see what would happen if I told it to “use system theme”…

 

sigh.  Chrome… why do you even try? Seriously? I tell it to use the system window decorator, and it decides that it won’t show caption buttons. I really don’t know why. I suspect it still draws parts of it itself, so really when you choose the “use System theme” setting, you are choosing “use system theme, but I’ll still draw shit for no reason despite your option not to”. Not having caption buttons at all for what should look exactly like the window caption area shown above the blank chrome titlebar is not forgivable at all.

At this point I have no doubt some people are thinking that maybe this is emerald’s fault. The utter lack of reasoning required for such a thought process I cannot fathom; no other application I’ve tried has this problem. Only chrome. coincidentally it’s also the only application that has a complete disdain for using any theme settings on any OS I’ve tried so far, deciding that it’s going to use themes, colours, and fonts that it wants to use, not that the user prefers to use as set in appearance options. I cannot help but think there is a connection.

Now, to be absolutely fair here- Chrome is hardly the first application to do this. it’s merely following in the footsteps of equally badly GUI designed applications, such as Winamp and even Windows Media player itself, both of which supported themes and weird skin shit that made no sense. I mean, it’s a bloody MEDIA PLAYER. you use it to play music and you minimize it. What the hell is wrong with looking like a normal application? It’s called CUA(Common User Access) people,

Microsoft made sure to apply this pointless principle to Internet Explorer 9. You would think they would have damn well learned something from the utter nonsense that was Word 95. “OHHH! let’s make our title bar italic and gradient and shite!” was the tagline there, seems now it’s “let’s just do what the other browsers are doing” which given the bullshit that IE has had to go through isn’t a unsurprising verdict. At the same time, IE only runs on windows and it doesn’t look like a windows application. That doesn’t even touch the fact that you have to reboot after installation. What the hell year is this? 1993? Does it need to make changes to my autoexec.bat and config.sys files as well? The only type of applications that seem to respect user options as chosen are office-type applications (excluding lotus notes, but that’s an entirely separate ball of WTF I don’t even have the webspace to adequately describe the extent of), and “professional” grade Open Source applications; for example, pidgin, looks like a windows application. Windows Live Messenger doesn’t. It’s like they put “Windows” in it’s name to remind people that, No, this isn’t a picture of art created with induced vomiting after eating crayons, it’s a Windows program! See! it has WINDOWS right in the name!

The reason for this? well, while there might be a few differences here and there and some of the functionality that is focussed on by them is often trivial or only useful to a small set of people, largely Open Source developers concentrate on features that will be used. Companies develop their commercial offerings in the interest of what sells, and this is the major difference; what sells is what looks good to the executives who have the authority to hand out the cash, and what looks good is apparently pastel vomit covered windows. So that’s what they make.

 

Have something to say about this post? Comment!