qooxdoo 3.0 released

 

We are happy to announce a new major release of the framework, qooxdoo 3.0.

Many thanks go to the entire community for making this happen: the team of core developers, 1&1 as the supporting company, all contributors, and last but not least the users and enthusiasts who brought in questions, comments and suggestions.

qooxdoo 3.0

The release of qooxdoo 2.0 about a year ago was a landmark in the framework’s ongoing evolution to become a universal JavaScript framework. Now with the release of qooxdoo 3.0 each of the three major application domains, i.e. Desktop, Mobile and Website, ship with substantial if not radical improvements.

While the latter two, specifically addressed by qx.Mobile and qx.Website, further matured as enterprise-proven components, qx.Desktop probably saw the most rigorous changes under the hood.

qx.Desktop

To put a longer story short: qooxdoo’s GUI toolkit for feature-rich applications has become much more lightweight.

While keeping most of its sophisticated feature set, every desktop widget now consists of just one DOM element (from 2-5 before) and corresponding JavaScript object representation. So a typical desktop application now comes with less than 50% of elements, a fact that improved UI performance on all devices tested.

3D DOM View: reduced number of DOM elements

Illustrating the reduced DOM elements: previous qooxdoo (left) vs. qooxdoo 3.0 (right)

The optimizations were only possible by revisiting the browser support: We took further advantage of native features built into modern browsers. At the same time we implemented graceful degradation in older browsers (like IE8) and discontinued support for some legacy browsers (like IE6 and IE7). Moreover, this release already embraces future browsers (like IE11 Preview).

Chances are good you won’t have to change anything in your existing qx.Desktop application. See the documentation if your application needs some manual adjustment (e.g. if you created a custom theme).

We have been able to achieve a good user experience in running qx.Desktop apps on touch devices. For instance, on hybrid devices (like Windows 8 convertibles) or tablet devices like the iPad. To further support the latter scenario, we introduced a new setting for you to opt-in to mouse event emulation on touch devices. This further increases subjective performance when using your fingers to interact with desktop apps.


Go ahead and give the Widget Browser or Feedreader a try on the iPad.

qx.Mobile

When specifically targeting smartphones or tablets, qooxdoo’s mobile GUI toolkit continues to be the perfect choice. Many improvements went into the qooxdoo 3.0 release that emphasize its capabilities to let you create elaborate mobile apps.

To the set of supported platforms we added the new BlackBerry devices running the BlackBerry 10 OS. On iOS devices scrolling now benefits from native capabilities, without the dependency on iScroll.

The mobile framework demos consistently use the “Indigo” default theme, which has been reorganized and extended. This makes it even easier for you to create a custom theme of your liking, possibly matching your corporate design guidelines. Technically, you now use the excellent CSS-precompiling technology SCSS, which replaces the former solution based on LESS.

Many of the newer mobile devices ship with beautiful high-density displays (e.g. “Retina”). All those devices now take advantage of higher-resolution images you can optionally provide along the regular ones. This leads to nice, crisp images in your mobile app for displays of all kinds of pixel ratios such as 1.5x, 2x or 3x.

Besides many fixes and improvements throughout qx.Mobile many existing widgets were enhanced, like radio buttons and checkboxes, or a longtap event added. To further complete the comprehensive set of graphical elements new widgets were introduced, like the Drawer to slide in an additional pane from any of the four device edges.

 

qx.Website


The website-oriented part of qooxdoo was introduced with the last major release and has successfully evolved as an enterprise-grade solution. Its concise API allows developers to enhance their websites with dynamic functionality such as animation, server communication and template-generated content.

Many new practical samples, consisting of HTML and CSS as well as JS code, were added to the qx.Website API Viewer. Most of the samples can be executed and edited with just one click, thanks to jsFiddle integration.

Client-server communication via REST is now nicely integrated into the low-level library. In order to support testing as well as server-independent development a FakeServer was added to transparently mock HTTP requests.

In addition to providing qx.Website as a single all-in-one script file we also offer separate module builds. Those are freely combinable: You simply include the module files you need (like q-animation-3.0.min.js) after the fundamental core module (q-core-3.0.min.js).

It is important to note, that qx.Website continues to support all browsers as in previous releases (e.g. older browsers such as IE6, IE7, IE8). That’s unlike qx.Desktop, which reduced browser support to allow for an optimized GUI toolkit as explained above.

Tooling

As with any release qooxdoo’s integrated tool chain ships with many fixes and enhancements. Some of the highlights for an increased developer productivity include new jobs that you invoke from the command shell via generate.py:

  • watch (auto-building the application after file edits)
  • watch-scss (auto-building CSS files from SCSS, mobile apps)
  • source-server (local mini webserver for the source version of an app)
  • source-httpd-config (providing web server configuration for the source version)
  • source-server-reload (auto-reload application in the browser after file changes)
  • validate-config, validate-manifest (as the names imply, validate config.json or Manifest.json, respectively)

After downloading the SDK, creating a new application and running the tool chain jobs for the first time, build times used to be very long. That was because the tooling cache which significantly speeds up any following job was still empty and had to be filled. Now the SDK ships with pre-compiled information of the framework classes, thus the cold cache builds should be reasonably faster.

Community Support

The qooxdoo manual, a crucial source of information for any app developer, now includes a much more practical fulltext search. Possible search terms now also accept special characters (like `.`, `-`, `#`, `@`), and also upper-case words.

A new qooxdoo-contrib infrastructure has been rolled out. With the new release a Github-based catalog is used to find and download user contributions, all integrated into the tool chain. After this initial move to the new infrastructure, work is going to continue to implement further improvements, taking into account user input.

Check it out!

qooxdoo 3.0 is available for download. Check out the detailed release notes and the manual. Watch the code repository on GitHub.

The qooxdoo 3.0 release comes with many substantial improvements and exciting new features. In fact more than 330 bugfixes and enhancements made it into the release.

Thanks

Many thanks from the core developers to the community of contributors and users. Please help to spread the news, get people excited about the latest releases, and show them how to deploy qooxdoo as a truly universal JavaScript framework.

Enjoy! :-)

 

14 thoughts on “qooxdoo 3.0 released

  1. Awesome! spent only 5 min migrating my app from 2.1 and everything went on cream! Thanks

  2. Pingback: Zahlreiche Neuerungen bei JavaScript-Bibliothek qooxdoo 3.0 | virtualfiles.net

  3. Great work! The upgrade was very smooth! It looks like some great improvements in this version!

    I did run into one minor issue. If your config.json file doesn’t have a “default-job” defined you get a : Values instance has no attribute ‘daemon’ error in the generate script.

    I’ll make a ticket for it.

  4. Thanks for the feedback. Sure, post an issue and we will take care of it.

  5. Pingback: The week in qooxdoo (2014-01-31) | qooxdoo News