Monday, February 27, 2006

Transmitting GUIs: When interfaces become data

While it might be old news to some of you, I just recently heard about XUL(pronounced Zuul), which apparently is what Mozilla's suite of applications, such as Firefox and Thunderbird, built their GUIs on. Most recently, an open source music player, Songbird, also uses XUL.

When I first started using Java's Swing, it seemed pretty simple. However, when working with web applications, I found it much easier to get a GUI up and running in HTML, CSS, and AJAX than it was with Java's Swing (However, some things are still hard in web apps that Swing does well). So I wondered if there could be a similar thing for desktop applications?

I guess that's what the people at Mozilla thought of too. What makes XUL interesting is that it employs an XML schema to define the GUI. And since it's still XML, you can embed other forms of XML in there, such as SVG and MathML. XML is usually used to describe data, but in XUL, it's used to describe a user interface.
There's no Data, only XUL
But on the converse, if it's expressible in XML, isn't the description of the GUI the data being represented?

Currently, we tend to think of the GUI as a cohesive part of the application. But that shouldn't be the case with XUL, since it's data. Then, you can certainly also send the GUI back and forth between applications. What use could this possibly have?

Well, for one, many programmers have long said that HTML was never meant to be used for applications. It was only meant to display hypertext. What we've done so far was use a lot of workarounds, to make it seem like it's an application. It could be entirely possible to have XUL servers, and not just HTTP servers. Upon looking it up, they have Remote XUL for that purpose. I imagine that with smaller and more powerful devices, the client-server model will still exist, but to the user what-is-a-server and what-is-a-client will become vanishingly small. Your mobile phone might be a server to a number of other future devices in the house.

Another idea is one about Walk-away GUIs. Say, you were looking at a map application of a place you're going to survey. With walk-away GUIs, you would be able to send a mobile version of the map application GUI to your mobile device to take with you out on the field.

Already, the web applications have small versions of themselves. Blogger has a "blog it!" mini control that lets you post things quickly. has firefox extensions that lets you tag quickly. This could be sent to mobile devices, so that you can use it while you're out in the field, without high bandwidth (otherwise, you'd just run the application from the XUL server).

I think that this, coupled with Human Area Networks, you can visually transfer the GUI from a desktop to a mobile device, much like in the future thriller, Minority Report, where Tom Cruise could move a picture onto a plate, which could be removed and transferred. While their application was to move a picture from machine to machine (inefficient), the idea makes far more sense for transfering GUIs between applications on different platforms.

I also see XUL as being an easy way to update and patch software out in the field, as well as being extensible beyond current GUIs. If there are future devices with a different dimension to their GUIs, XUL would be flexible enough to be backwards compatible, as well as being able to support current GUI innovations.

Currently, XUL is only used with the Mozilla applications. Will XUL catch on? I don't know. It might be impractical in cases where bandwidth was low.

There seems to be other problems with XUL.


  1. Off topic: I had a prof who taught (his pet peeve) that acronyms with three letters or less should be spelled out, not read. For example, GUI should be G-U-I rather than "gooey" and I am picturing him cringing at "zuul".

    On the other hand, "There's no Data, only XUL" is frickin' awesome.

  2. another reason why having a GUI be as readily modified as firefox can be a bad thing