pmuellr is Patrick Mueller, Senior Node Engineer at NodeSource.

other pmuellr thangs: home page, twitter, flickr, github

Tuesday, January 15, 2008

on qooxdoo

For some reason, I hadn't really looked at the qooxdoo JavaScript framework until last night. I remember noticing it when Eclipse RAP hit my radar, but I guess I didn't drill down on it. And after browsing the doc, playing with the demos, browsing the code, there are a few things that I really like about the framework.

explicit class declarations - So we know that ActionScript and the new drafts of the JavaScript language include explicit class declaration language syntax. Why? Classes provide a type of modularity that makes it easier to deal with building large systems. There are many ways to get this sort of modularity, and other toolkits provide facilities similar to what qooxdoo does. So why do I like the way qooxdoo does it?

It feels pretty familiar. It's fairly concise. Seems easy to introspect on, if you need to. I'm guessing it made it a lot easier to generate the gorgeous doc available in their API Documentation application.

On the downside, some ugliness seeps through. "super" calls. Primitive Types vs. Reference Types. Remembering to use commas, in general, since the class definition is largely a bag of object literals in object literals.

'window system' vs. 'page' GUI - Running the demos, it's clear that this is a toolkit to build applications that look like 'native' applications - a typical GUI program you would run on your desktop. Compared to the the traditional 'page' -based applications that we've been using since we've been surfing the web.

This is of course a contentious issue. Uncanny Valley and all that. Still, seems like there's potentially promise here, for at least certain types of apps.

we don't need no stinkin' HTML or CSS - Rather than follow the typical pattern of allowing/forcing folks to mix and match their 'GUI' bits of code via HTML, CSS and JavaScript, qooxdoo has a "you only need JavaScript" story. It's an interesting idea - it certainly seems like there's potentially value having to deal with just one language instead of three.

Here's some rational on the non-CSS-based styling.

The downside I see is that the API is fairly large, and without syntax assist, I can see that you'd be keeping that API doc open all the time to figure out what methods to call. This style of programming also seems more relevant for 'window system' UIs compared to building typical web 1.0-style 'page' UIs.

Test Runner - 'nuff said.

lots of documentation - I couldn't find any kind of introduction on the widgets in all this though. Still, this level of documentation seems to be above average, relative to other toolkits.

summary - Cool stuff. I'd wondered when I'd see a 'bolted on' class system in JavaScript that I liked, and this one is certainly getting close. Likewise, I've often wondered about completely library-izing the GUI end of browser clients; the shape here seems about right.

Anyone else played with this?


Jim said...

Yes, I have not only played with it, I have used it to build a large application that is current;y in use all over the world by thousands of clients. Coming from a classical software development background, this library was easy to pick up and very easy to create my own controls for use in my application. For anyone reading this post that has not tried qooxdoo, do yourself a favor and check it out (

Anonymous said...

My teams have used this extensively to build web UI for management applications for high end routers and switches.
1. NetDevices - Acquired by alcatel -lucent
2. Juniper Networks

Truly this toolkit was a savior for both my teams, having used it for four years, I haven't come across anything that is near Qooxdoo.

Excellent programming style, extensive samples that can be used out of box to build your functionality, excellent documentation and API Viewer.

JSEclipse editor supports AutoComplete and API help while coding (just like Visula Studio). You just need to drag and drop qx.js to enable this functionality.

Rudimentary forms of page builders have started popping up for Qooxdoo.

SQville said...

Great framework! Solidly engineered. The "dark horse" of javascript frameworks.

I too am currently using it to build admin tools. I like the fact that I can make my web app look and feel like a desktop app. It brings familiarity to my apps.

I'm also building a purely javascript (no images) based theme engine for qooxdoo called AIE ( I'd love to get your opinion on it. The objective is to narrow the "Uncanny Valley". Make the UI more desktop like. Let me know what you think.