Implementation Spotlight: Xero
What is Xero?
Xero is both a company and a product. The company was founded in Wellington, New Zealand in 2006 and is listed on the New Zealand Stock Exchange. Xero has offices in New Zealand, Australia and the UK but it’s sold globally, with over 17,000 customers in over 50 countries.
The product is an online accounting system designed for small to medium businesses, that provides financial confidence and clarity to business owners and their advisors in real-time?—?anytime you need it, anywhere in the world.
“Ext JS won out on all counts… [Ext JS] builds beautiful yet powerful user interfaces quickly and easily.
Xero has all the functionality you would expect from a modern accounting system, including daily automated bank feeds, invoicing, debtors, creditors, sales tax, expense claims, fixed assets and multi-currency. Xero also provides comprehensive reporting, which includes sales tax reporting, aged reporting, management reports, reconciliations and annual reports with full drill-through capability.
Xero has also just morphed into personal finance with the release of Xero Personal. One of the reasons Xero looked at doing a personal edition was because many small business owners blur their personal and business expenses. Xero Personal will work great on its own but it will also complement the business product.
Why did you choose Ext JS?
Do you have advice for developers starting out with Ext JS for the first time?
As with any library Ext JS does have some quirks?—?the same object hierarchy that makes it powerful also requires a high learning curve to get your head around. Actually, the size of the library in general is partly the reason for this. It’s likely that if you want it, Ext JS does it, but you’ll just have to find it.
It’s very important to get an understanding of the breadth of the API and the best place to start is with the documentation and examples that come with Ext JS. A lot of newcomers to Ext JS complain about the lack of documentation, but it’s actually pretty thorough and gets better with every point release. You’re also provided with the complete source and having access to the source means that if it’s not documented you can use a combination of Firebug and the raw source files to figure out exactly what’s going on. The code is both very well written (and pretty much self-documenting) and the work done on improving the unit test coverage across the library has made it even easier to pick up all the nuances of such a massive library.
At Xero we found the easiest approach to picking up Ext JS was to choose a fairly complex page and build it from scratch using Ext JS. That required us to actually think about what components we would need, how those components would interact and the kind of data those components would operate over. Once we built that one page we were able to take those learnings and apply them to the next page, reusing code, objects and understanding.
What features could we add to Ext to make building a rich application easier in the future?
As with any library there is always going to be a bucket list of features every developer wants, however due to the object oriented and componentized nature of the library it’s fairly easy to create those yourself. Because of this, it would be great if some of the code was broken down it smaller units with tight encapsulation. You can get into traps of overriding functionality that requires you to copy quite a bit of code that has since been deprecated in newer versions of Ext JS.
And obviously any and every performance improvement that’s possible is very welcome to an application that is as heavily oriented toward the user experience as ours is.