Neil's Place

November 17, 2003

12:21 PM Macromedia doing XML UI's too

Macromedia gives a preview of their upcoming development tool Flex. It's a server-side application that runs alongside J2EE servers which generates Flash dynamically from XML descriptions. Unlike XAML, it's actually much more similar to XUL. It even has HBox and VBox tags. No mention of whether it supports the flex attribute as suggested by the name.

It uses ActionScript like Flash does, which is similar to JavaScript, although the examples given suggest that getElementById isn't used, so I don't know what DOM features are available. You might be pleased to hear though that it uses CSS for presentation. Databinding is done by web services and similar tags.

It's entirely server side and generates Flash to be sent to the client. Since it's Java-based, it does have support for interacting with server Java objects and such.

There's little documentation at the moment. I could only find a white paper and an introduction, so I'm not sure how sophisticated Flex really is.

Comments ( 32 )

November 15, 2003

Questions Parable
I was going to write about this, but Eric has done a better job

November 14, 2003

1:55 PM UI Toolkit Customizability

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.

Comments ( 11 )

November 10, 2003

7:15 PM Canvas Tag

I've been working on and off for the last couple of weeks on a canvas tag for XUL. The canvas tag is an element designed to allow custom drawing, one of the few main things that XUL doesn't have. It's based on the patch in bug 102285 which creates an image buffer in which one can set the pixels. My version will do that too, but can also be used with a callback to a script to do the drawing.

It works quite nicely. With it, I've created some SVG-like elements entirely in XBL, which resize and flex and so forth properly. Canvases can also be nested.

There's still quite a bit of work to do, but if anyone has ideas on what they'd like to be able to do with a canvas tag, add a comment here.

Comments ( 40 )

November 9, 2003

12:01 AM XUl Usage Poll Results

There must be more people reading this weblog. There were four times as many votes in the latest poll as with previous polls. Or perhaps it is all the people linking to the XAML/XUL discussions that are creating more traffic. Or, perhaps people are just interested in the poll.

Most people thought that XUL would get more popular with either the availability of a XUL IDE or the endorsement by a 'standards organization'. I selected the latter of those two.

Standards organization endorsement might not increase Mozilla's usage, but it would likely create other mostly compatible implementations. A XUL IDE would allow people who have used other visual tools to easily learn XUL development.

Of the other options, 'A XUL Specification' is perhaps useful, but as someone pointed out in the comments, would be created as a result of the standards organization endorsement. For XUL documentation, there actually already is a suitable amount. Most people probably want more documentation on the Mozilla API, rather than XUL itself. Another problem is outdated documentation on, which should be removed. Also, I do plan on adding user notes to at some point, which some people seem to think will help. (I do not necessarily share this opinion).

Few people opted for more powerful and extensible elements. I suspect that many people do still want this, but it won't do much to increase usage of XUL.

Lots of people want to be able to use other scripting languages. I suppose that has the advantage that there would be many Python, perl, ruby, etc... developers that could interface with XUL applications.

I should have put Remote XUL on the poll as well, since I think that is an important feature and people get headaches with the various issues that exist with remote XUL currently.

I have, however, recently discovered some additional information regarding one of the items on the poll, which suggests that particular item will become a reality. I won't say what that information is however.

Comments ( 7 )

November 6, 2003

2:55 PM My Tasklist

I have lots of XUL/Mozilla related tasks to do. Here is a list in no particular order:

  • finish observer service info
  • add controllers info to tutorial/reference
  • add scrollbox/scrolling info to tutorial
  • continue work on XUL <canvas> tag
  • fix XPCOM reference stylesheet, header and footer
  • add user notes capability to tutorial and other pages
  • write security document

Comments ( 46 )

November 4, 2003

1:27 AM Video in Tooltips

I read somewhere that MS recently demonstrated that their 'Longhorn' OS could display video anywhere and then showed a video playing in a tooltip. Ignoring the uselessness of that specific example, I realized that you can actually display video in tooltips in Mozilla already. Here is a screenshot. (I would give an example but I'd need a suitable freely usable video - for the screenshot, I used a RealPlayer file from

Here is the related XUL:

<tooltip id="tooltip" orient="vertical"
            style="padding: 1em;">
  <label value="This is a tooltip"/>
  <html:embed src="..."/><!-- or use html:object -->
<button label="Hover here to see a really funky tooltip"

It's not perfect of course, since plugins tend to do what they feel like and you don't always have control over how they play. Mozilla would need to implement SMIL to handle it properly.

Comments ( 25 )

November 2, 2003

1:20 PM XUL Usage Poll

What do you think would most encourage more usage of XUL?

A XUL specification
Endorsement by a standards organization
More documentation
More powerful and extensible tags and widgets
Proper support for python, perl, ruby, etc...


Comments ( 22 )

November 1, 2003

12:57 PM System caches

A good cache system for temporary files really needs to be implemented at the system level, not at the application level. This way the system can clean up temporary files of all types from all applications when space is running low. The system should use all of the remaining unused space available for temporary files. I wasn't kidding when I created this image of cache settings. To ensure that users don't get worried about low disk space, the system should ignore the cache when calculating the total free disk space. For instance, if normal files are occupying 60% of available space, and temporary files 38%, the system will still report that there is 60% of the space free. Actually, memory caching should be done the same way.

Comments ( 11 )