About 2 weeks ago I found out about Songbird, a media-player that is suppose to be “the last media player ever” (I’m assuming that because it will be so good, we won’t need any other media player). Songbird is written in XUL which is a user interface markup language also used by Firefox and Thunderbird. The interesting thing about XUL is that it looks like HTML. So anyone who is familiar with HTML can look at the XUL tags and kinda know what to do.
Here are a couple of my assumptions about Songbird relating to XUL. I’m assuming that Songbird is going to be using XULRunner. XULRunner is great because you can run XUL applications without the need of Firefox or Thunderbird. The only problem I see with XULRunner is the fact that applications run through XULRunner, kind of like Java applications are run by the Java Virtual Machine. So you don’t see appname.exe in the table of processes, rather you see xulrunner.exe. If I had to write a XUL application this would bother me big time. I like seeing my apps name in the table of processes (Task Manager). I’m assuming that the developpers of Songbird will want that too which is why I’m guessing they’ll be compiling XULRunner themselves to fit with Songbird instead of using the available binaries. This has the added advantage that they can compile it to fit Songbird’s specific needs. Another advantage of XUL is that you can let someone who isn’t a programmer design the interface of the application without it actually working and without the need for compiling the app. Just run xulrunner application.ini at the command line and the application starts.
While XULRunner has many advantages, it has it’s weaknesses. One obvious weakness I’ve noticed is the application’s size at runtime. A basic XULRunner application takes at least 10 MB. It’s the XULRunner runtime environment that is taking all that space. A lot of people have been asking the Songbird developpers to make it leaner and faster than iTunes. I’m not sure how they will do that considering that Songbird seems to put together a lot of different open source project together (XULRunner, VLC, ml_ipod…). It would be great if in the near future, you can choose to disable certain XULRunner features in order to save memory.
Update: I’ve found a pretty simple way of deploying an application running XULRunner thanks to this tutorial. This still doesn’t solve the fact that your application will still be named xulrunner.exe in the table of processes. But a simple solution to this is to rename your copy of xulrunner.exe to whatever name you want (e.g. appname.exe). Then you can add a appname.bat file in the application folder with the following syntax: start xulrunner/appname.exe (appname.exe is whatever you renamed xulrunner.exe to). Alternatively, I’m sure you could compile a C++ program to do whatever the bat file does and somehow avoid that console window that shows up for a split second.
My solution doesn’t make for a professional application. This is why I think that you’d still have to compile your own copy of XULRunner for your specific application.