JavaScript RIA frameworks. Building a GUI for the web…
Last fall for the annual AGU (American Geophysical Union) conference, myself and my NOAA and Russian Academy of Science (RAS) colleagues put together a web UI to show what was possible using some of our data and web services.
The culmination of that effort was the Auroral Resources Toolkit (ART)
The RAS folks focused on back end tech, including the map tile servers and data proxies to avoid cross domain requests (which most browsers deny). As such, the UI was up to me, and the science and science code was up to my NOAA colleagues.
This project started out as a Dojo/Dijit based solution, but I quickly found that for a UI of this complexity Dojo required way too much effort on my part. I was implementing many things myself that a RIA framework should handle automatically. So, I set off to find a framework that let me focus on my logic, while handling the minutia of a GUI on its own. Dojo can do many of these things, but it still requires extensive app specific DOM knowledge (and manipulation) and solid a CSS design. Trivial GUI tasks such as dropping an internal window on the browser border and having an automatic window container response require custom code, time and effort. I was spending too much time in the guts of the GUI logic, and not enough time on my actual application. Progress was slow and painful.
So, I began creating prototypes with several other options including GWT, ExtJS, SproutCore, and one I’d never heard of prior to this, called QooxDoo (cooks-do, or Qx).
GWT is decent, but in my opinion if you’re going to develop a JavaScript based UI, develop it in JavaScript. ExtJS has a license that it is too restrictive for the RAS folks, SproutCore was interesting but didn’t excel in any area I needed. Finally, I came upon QooxDoo (Qx), and am very glad I did. The resulting UI turned out pretty well for an alpha/prototype, and we’re in the process of incorporating feedback from AGU and beefing everything up for Space Weather Workshop at the end of April.
In the end, it came down to the development process required to use each framework. I strongly favored the model provided by Qx, that being a programmatic API driven development process, rather than an HTML,CSS,DOM muckery driven one.
Dojo, Ext, jQuery etc. are all applicable to certain problems. The associated development processes for what I needed to accomplish were just too time consuming.
I wouldn’t use Qx for everything, but for larger more complex UI’s ? Absolutely.