XUL Rocks!

Ovid on 2003-02-10T19:38:34

After much struggling with heirarchical menus in DHTML and dealing with numerous bugs, we've been searching for an alternate solution. We tried embedding a browser in a wxPython or wxPerl app, but no dice. Finally, a coworker asked me about the Mozilla development tools. I had heard of XUL (rhymes with 'zool'), but never tried it. After a bit of research and playing around with it over the weekend (there's a great tutorial on XulPlanet), I came in this morning and tried to implement it. I added the XUL mime type to my Apache httpd.conf file, restarted Apache, and changed my frameset menu to point to my new XUL document. It works perfectly, is easy to use and gets us the cross-platform support that we lacked (but we can't use IE, aw shucks).

XUL is not perfect, though. It's debugging support appears fairly limited and getting up to speed is not trivial. It helps to know basic HTML, CSS, XML and RDF. Further, the two languages that are currently implemented are C++ and JavaScript. Perl and Python are planned and I can't wait for them to come out. We're not going to use C++ and JavaScript is very limited in terms of what we want to do (anyone know of a JavaScript equivalent to DBI?).

I'm also concerned about shipping a production application with XUL, but it's been out for a couple of years now and I'm crossing my fingers about stability. Everything else has been a failure, though, so it looks like this is a good way to go ... I hope.


XUL

gnat on 2003-02-10T19:56:55

Write a Perl wrapper around the C++!

--Nat
(he says glibly)

Re:XUL

Ovid on 2003-02-10T21:29:21

Ha, ha, ha! Thump! (that's the sound of a programmer laughing his head off).

Hey, I know what can be done. We'll just tell Ingy how really cool it would be if we can do this and he'll whip it out in an afternoon :)

Re:XUL

gnat on 2003-02-10T22:22:52

Your ingy solution is just a specific case of the tried and true code gnome approach: check a broken hack into CVS and check out a working system the next morning :-)

--Nat