Many developers have their favorite programming languages, often to the point of religious fervor (case in point the C# vs VB.NET debates amongst Microsoft developers). I’ve never been one to be too religious about the language I use – I always like to choose what’s best for the job at hand (and anyway C# is WAY better than VB.NET ;-)).
I usually separate libraries into 2 categories:
- widget libraries (like Script.aculo.us) extend the core library, tend to be based more around web controls and user interface components and depend on the core library to enable it to do cool stuff
At Xero we chose ExtJS. ExtJS started life as a widget library extending (hence the name) the Yahoo User Interface (YUI) core, however over time it’s grown into one of the best standalone libraries available (combining both widgets and a robust core library into one). While most libraries tend to be open-source, ExtJS is one of the only libraries with a commercial license (though they’ve recently changed their tune on that with the release of ExtJS 3.0 Core with an MIT free software license). The fact it’s commercial wasn’t a factor for us – it’s the quality of the library that won out over it’s rivals. It’s quite beautifully built, and even though it had some quirks and does require a learning curve to understand those quirks, it’s extremely powerful and allows for the creation of some quite stunning user interfaces. I recommend giving ExtJS a look (even if you currently use another library it’s designed to sit on top of other core libraries if you prefer them (such as YUI, Prototype and JQuery) so you can just use it when you need it).
Widgets based on or extending ExtJS are baked into our user interface – the invoice grid is an example of our custom implementation of the ExtJS grid control. Obviously we had our own requirements, but the programming model is so good it was very easy to extend and incorporate our touches to their existing control. ExtJS is very easy to style giving us complete control of the look and feel of their controls so that it fits within our own tight design guidelines.
Working on an application like Xero gives the team here a lot of scope for playing with different technologies and applying them to complex interface problems (usually brought on by our design team). Fortunately for me I absolutely love trying to solve them.