I’m a software developer by trade, working on web-based applications for a small software company in the UK. Recently I’ve been working on a new development framework, plus some real-life applications, based on XUL. This restricts the applications to running on Firefox (or some other Gecko-based application), but we’ve decided that this is an acceptable trade-off for the more powerful user interface (UI) it gives us as a result.
Specifically I’m using what’s called “remote XUL” – but which should probably be renamed as “the bastard stepchild of XUL that nobody – especially not The Mozilla Corporation – seems to love”. Usually XUL is consumed locally – the Firefox UI is written in XUL and stored on your computer, as are any extensions you’ve added to it. Remote XUL, however, is XUL delivered from a web server, much like any other web page. It has one big pro, and one big con:
PRO: It is centrally managed, so updating the XUL on the server updates the applications for every user
CON: It has tighter security restrictions than local XUL – in many cases they are unnecessarily tight. This severely limits what can be done with remote XUL.
In our case the PRO outweighs the CON, so remote XUL wins. Our users access the applications either via Firefox or Prism – the latter allowing them to run our applications as though they were normal desktop apps, without having to know that they’re actually running inside a cut-down web browser.
In addition to remote XUL, we use a whole slew of other technologies which are bolted together to produce the final application. Below is a quick list – I’ll go into more detail on these in future posts:
- SQL database
- Web server & scripting language
- DTD files
Phew! That’s quite a few subjects to know about. I’m far from being an expert in any of them – and the first couple I largely defer to other developers, leaving me to concentrate on the front-end code.
In future posts I’ll add some more detail about how all these technologies fit together – and some of the problems and pitfalls I’ve experienced along the way.