The best toolkits make it more difficult for the developer to do the wrong thing and easier for the developer to do the right thing.

Nowadays, it seems that more and more user interfaces are being built by people with very little knowledge of how user interfaces should be built. There was a time when user interface designers and usability people would carefully construct a user interface for ease of use and efficiency of use. Some products are still built this way. However, today a significantly larger number of companies and individuals are building applications, many used internally by a company for their purposes, for issue tracking, time tracking, project management, and so forth. Almost none of these are built by UI designers. Instead, they're built by people with no real knowledge of UI design at all. Many applications designed for end users are even created by graphics designers. Why is this? Perhaps UI designers are more expensive, or perhaps it's because, since no-one else knows UI design well, they don't think to hire a UI designer.

And so you end up with applications that everybody except the creators think are horrible but nobody wants to say anything.

Let's take a look at three UI toolkits: the upcoming Longhorn/Avalon toolkit (the one with XAML), the Apple Aqua toolkit, and Mozilla's XUL.

I've been scanning through a lot of the new MSDN info about Avalon, and many of the examples really seem to encourage developers to create radically new styles of UI widgets. Many of the examples demonstrate changing background colours, fonts, or adding gradients or vector graphics to UI elements. Take a look at the current documentation for the Button class. The very first example given demontrates changing the background color. The third example shows how to add some coloured rectangles inside the button. It seems that Microsoft really wants to encourage user interfaces to be built by graphic artists, rather than by UI designers. This is even true today, for example, how IE has a feature which lets a page author change scrollbar colours.

Let's compare that to the Aqua toolkit. I'm not intimately familiar with it, but my quick glance around the documentation suggests that not only do they not encourage button colour changing (in the Human Interface Guidelines), Apple provides no examples of it, and I don't think it's even possible to change the button colour.

Is this a good thing? Yes! In fact, I've thought quite a bit about it, and I can't think of any reason why a user interface needs to have buttons in a different colour to everything else. Anybody who thinks there is, isn't a user interface designer.

Themes are generally acceptable though, since they change the overall appearance, and they are entirely at the control of the user, not the developer. And consistency is a good thing.

Mozilla's XUL is part way in-between Avalon and Aqua. It does allow changing colours and fonts and so forth, but it's design tends to encourage one to put appearance info into a stylesheet. Due to the nature of its 'chrome system' and because Mozilla has support for themes, this provides an incentive not to change the appearance of UI elements, since one can never tell what will break if the user selects a different theme. In fact, some style changes don't work unless you look more into how the elements are constructed and add more specific style properties. Thus, XUL developers don't change the appearance.

If you look at the XUL Tutorial, you might note that I barely make a mention of style properties until much later, and even then, it's mostly under the guise of themes.

This is one of the largest disadvantages of Avalon. It seems that in five years, we'll be seeing a lot of Windows applications with purple diamond shaped buttons, translucent scrollbars, and funky animations. The talking paper clip was only the beginning. Using Longhorn will be like you're trapped in a giant Flash animation that you can't escape from.