The days of building Web applications from scratch are over, as a variety of JavaScript libraries are freely available to provide a solid foundation. One JavaScript library that I recently learned about is qooxdoo (its Web site prescribes pronouncing the name as "cooks do").
It is an open source AJAX Framework that simplifies building Web user interfaces.
I decided to take qooxdoo for a test drive, and the results left me feeling cold. If you want to check out the library for yourself, this article provides some information that will be useful to you.
How to get qooxdoo
Qooxdoo is freely available for download in these options:
|> Quickstart: This is the easiest way to take a peek at qooxdoo. A simple application is included, along with a pre-build script, so no software is installed on your system. You can view the samples via your browser.
|> Evaluation: This allows you to view qooxdoo in action without actually installing any software. You can run all sample code to get an idea of what qooxdoo can do for you.
|> SDK: All source code is included, so you can dig into the meat of qooxdoo. It allows you to build full-blown qooxdo applications. It does require some system setup to use the integrated tools.
|> Skeleton: This is a starting point for building custom applications via qooxdoo. The build process has been pre-configured, so you can concentrate on development as opposed to system setup. This download is included with the SDK installation as well.
|> RPC backend: A number of RPC servers are available in a separate download. This allows you to setup RPC calls to the servers in your JavaScript code (via qooxdoo).
Each download option includes a link for the latest stable build as well as a link to older builds. The downloads are contained within compressed files that include release notes and a readme file to guide you through any necessary setup. You can take a look at the quickstart or evaluation downloads to get an idea of what is possible with qooxdoo.
What qooxdoo provides
I am always a bit apprehensive when approaching JavaScript libraries or any programming language add-ons; my main concern is compatibility. I avoid libraries that extend basic functionality, thus adding its own twist. A good example of such an approach is most things from Microsoft.
I am happy to report that qooxdoo does not extend native JavaScript; this makes it easy to integrate with other libraries or custom code that you may be using on a project. The JavaScript within qooxdoo is completely object-oriented and based on namespaces. There are currently about 350 classes in the library.
The code has been tweaked and tested to eliminate any memory leaks, and popular browsers (Internet Explorer, Firefox, Opera, and Safari) are supported.
Along with the base JavaScript framework, qooxdoo includes a GUI toolkit and is AJAX enabled. Qooxdoo provides these features through its JavaScript code:
|> Event-based programming: It fully supports events-based programming to handle user interaction within the UI. In addition, you can use AJAX functionality to communicate with the Web server.
|> Layout manager: Qooxdoo provides various ways to lay out a UI, including the Canvas, Box, and Grid. The concept of a layout manager will be familiar to Java developers. The layout managers are flexible and provide support for auto-sizing UI elements.
|> Widgets: Various UI elements or widgets are available to quickly build a Web interface. This includes building a menu, toolbar, text fields, and so forth.
|> Themes: Qooxdoo allows you to set up and use consistent presentation or themes for a Web application. This includes such things as colors, fonts, borders, and icons.
|> Communication: Qooxdoo embraces AJAX. You can easily achieve server-based communication using the XMLRequest object.
|> Internationalisation: Qooxdoo has built-in support for both internationalisation and localisation, which provides support for all languages and locales across the world.
|> Build system: UNIX-style make commands supposedly hide complexity. Class dependencies are automatically resolved, and JavaScript compression is employed.
|> Optimised code: The code has been designed for high performance applications with no memory leaks present.
Licensing
Current and future qooxdoo releases are made available under the GNU Lesser General Public License (LGPL) and the Eclipse Public License (EPL). You choose which license to follow, so review both licensing options before using qooxdoo in an application.
My thoughts on qooxdoo
My very first impression of the qooxdoo library was positive, but this quickly went south as I dug deeper into actually using it. First, it has been developed on UNIX with UNIX in mind. This is painfully clear to non-UNIX developers when qooxdoo requires usage of many UNIX-based tools like make. The setup requirements for Windows are complicated, and the process of actually building and rolling out an application is confusing and not worth the time. However, you may have a different opinion when or if you give it a try.
You decide
The abundance of free code both simplifies and muddles the life of a developer. The code available via libraries such as qooxdoo is well-tested and rock solid, but deciding on which library to use (if any) can be an arduous process.
If you are looking to build power Web interfaces that employ AJAX functionality, qooxdoo may be a good choice. The key is that you need to spend time learning about it in order to make a well-informed choice.
Have you used qooxdoo in past or present development projects? Do you prefer other libraries? Share your thoughts and experience with the Web development community by posting to the article discussion.






1
Dan McDonald - 20/05/08
Thanks, this was a good, brief overview of the framework.
» Report offensive content
2
PICO - 05/08/08
Yes, your assessment of the Qooxdoo framework is RIGHT ON THE MONEY. It is a good framework, it is headed in the right direction, BUT it is just not quite there yet. It is an overall confusing mess. You CAN get good results (like I did) if youre willing to spend a LOT of time figuring things out for yourself. The documentation, while there is a lot of it, actually is not very helpful at all. Alot of it is outdated, or simply missing, or written in terse broken english that is not helpful at all. That being said, I think Qooxdoo can and will get better. I think the devs need to concentrate on making this a little more straighforward for windows developers specifically. Having to use cygwin is a pain in my ass, along with all these compile and moving shit around and folders freakin everywhere VERY CONFUSING
» Report offensive content
3
Jason Sage - 18/08/08
I am not a stranger to UNIX or Linux (though no wiz either) so I don't mind Cygwin. I spent all day today attempting to install the qooxdoo SDK. I failed and I think its partially because the makefile stuff points to python2.5 in /usr/lib and the Cygwin I installed today had python2.5 in a different directory. (I was following the instructions on the qooxdoo website "how to" document verbatum to make sure I had the correct "optional cygwin" software) The qooxdoo makefile had python referenced as in /usr/lib ... So I tried to copy python2.5 to that directory so make would find it... no dice.
I don't know "make" well enough to get much from the error messages - (just enough to locate the wrong path :) )
I finally went back to tinker with the "Build" zip file thats available for download. (BTW 0.7.3 I think is the version I have) I was able to paste some code from the demo to a copy of the quickstart project they give ya and I was happy it ran!
I got this annoying (helpful I'm sure but) debug window popup thing. I'm posting the code (just a demo "virtual tree 1" from the "demobrowser" application, that ships with qooxdoo, worked into my quickstart "template" sample they give ya.
NOTE I also copied the media in the "resource" folder from the demo to the same relavetive location in my quickstart directory (to get the graphics and whatever things the qx classes (or I) might want.)
So - I'm still not using the SDK - but - for now - I'm going to give this qooxdoo thing a fair shake - it looks very pretty when its running!
(P.S. Look at the end of the posted source code. There are two lines:
qx.log.Logger.ROOT_LOGGER.removeAllAppenders();
qx.log.Logger.ROOT_LOGGER.setMinLevel(qx.log.Logger.LEVEL_ERROR);
They remove the debug window popup. The gentleman who posted that on the mailing list said - the second of these two lines might not be necessary but he uses it on his released stuff. So - comment out - have debug window - uncomment - Woo Hoo! No Popup!)
--Jason
» Report offensive content
4
Sergei Kolomiets - 10/09/08
We used qooxdoo in several complex projects based on ASP.NET.
There are no problems with installing and working with this framework.
You can look at demo application, that was written at odd moments.
http://demo.dewspot.com
Server backend is ASP.NET and MSSQL.
» Report offensive content
5
kenny - 22/11/08
I am puzzled by the Unix comments. I am on Windows and there was no install issue, I just downloaded, went thru the hello world example, then started building my site (porting it from the Dojo version which followed the jquery version with YUI being s wrong turn in there somewhere).
qooxdoo is its own framework, but so are the others. what qooxdoo does that the others do not is let me forget html/css exists.
meanwhile, in many small ways I am finding hints of excellence. yes the doc like all doc is sometimes hard to follow, but it is generally good and there are tons of examples. and the mailing list is responsive.
qooxdoo also looks to be faster than the others I tried.
» Report offensive content
6
Me, myself and I - 18/08/09
Just downloaded SDK, went through the hello world app like a breeze. I see no problem with it, from the point of view of installation and configuration.
However, I don't really like that there's a toolchain to be used to build apps. A simple lib or bunch of libs, to include or not on your pages, would be much more convenient for me.
» Report offensive content
7
Tseliso - 12/11/09
It took me a week to code an extensive RIA application that will soon go live and have a commercial life. I see myself as a Java developer and eclipse is still my IDE of choice when coding Qooxdoo code (with JS plugin of course). I'm used to using Cygwin and although i had to spent almost a day upgrading the Python bits i can say that it was a breeze.
I have tried GWT only in terms of other frameworks that try to do what Qooxdoo does, but at this rate I dont see myself changing anytime soon.
» Report offensive content