qooxdoo 4.1 released

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

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 users who brought in their bugfixes, suggestions and improvements.



The qooxdoo 4.1 release comes with many substantial improvements as well as new features – across the entire framework. In fact more than 170 bugfixes and enhancements made it into the release. See the changelogs as an detailed overview in release notes. In the following we just pick some of the highlights in each of the different domains of the framework.

General improvements

As a state-of-the-art framework qooxdoo continues to embrace new browsers (and their additional features) while phasing out on the legacy browsers. For instance, the new release comes with improved support for IE11 as well as Firefox 31 and beyond. Likewise, Safari 8 and its mobile cousin on iOS 8 is taken care of. On the other hand notorious legacy browsers such as IE6 and IE7 are no longer supported in the qx.Website domain of qooxdoo.

With each regular framework release the previous deprecations, i.e. development run-time warnings, get removed along with their former APIs or feature code. This time it’s about the qooxdoo 4.0 deprecations, so adjust your code base accordingly prior to migration.

Besides many other maintenance tasks in the framework core, the resulting code size of the Environment classes, responsible for feature-detection within your apps, was significantly reduced. The comprehensive data-binding layer saw several further improvements. The event layer was further polished after the introduction of input-device independent pointer events with the last major release this summer.


The family of website widgets, meant for easy use on dynamic web pages, were refined as well. Take as an example the Calendar, which adds range selection, or the Tabs, which became responsive.

To enhance the low-level layout capabilities we made the flexbox styles from qx.Mobile available in qx.Website, used them in
the Tabs widget and added a manual page explaining how to include them in custom website-oriented applications.

Several usability updates went into the website API viewer. Its interactive samples now leverage the more robust CodePen instead of jsFiddle. Overall, the API viewer comes with more samples, a better search and it starts up faster.


As mentioned qx.Mobile is ready for iOS 8 and the new iPhone models. A key aspect of mobile apps are powerful scrolling capabilities. Introducing the waypoints feature, you can now react to and trigger actions on custom-defined scroll positions. This handy feature for instance lets the mobile List to realize a popular “pull-to-refresh”.

The mobile widgets are a mature set of UI elements for all device classes. In this release it further benefits from stability refinements, e.g. memory leak fixes. Refactorings within widgets could not only reduce redundancy, but also take advantage of enhancements in the mobile layer. As an example, the refactored picker now comes with the momentum scrolling known from regular scrolling in the mobile toolkit.


The GUI toolkit to create compelling Single-Page Applications was advanced as well in many areas. Improvements went into virtual widgets in general, and the Table widget in particular. All of those scale easily to handle large amounts of data.

Commands allow to globally define keyboard shortcuts and assign them to widgets. They can now be organized in command groups. Some other improvements to qx.Desktop include drag & drop, scrolling areas and theme switching.


Continuing with advancing the JavaScript-powered toolchain, we started to supply key parts such as an underlying caching layer, as well as optimizations for private variables and for variants. An initial implementation of generating a self-contained “build” version also made good progress, so the Grunt tooling gets more complete continuously.


Check it out!

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


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! :)

qooxdoo 4.0.2 released

A new maintenance release of the framework is available.

qooxdoo 4.0.2 ships with almost 80 bugfixes over the previous qooxdoo 4.0.1 release.

As a patch release qooxdoo 4.0.2 is fully backwards-compatible to the previous versions 4.0.1 and 4.0. Nothing needs to be changed in your existing apps if they are already based on those versions. When upgrading from an older version you can migrate directly to 4.0.2.

Download qooxdoo 4.0.2. Check out the detailed release notes and the manual.

Many thanks from the core developers to the community, particularly for reporting issues and your help in improving the framework.

Website fundamentals: next challenges

By following the weekly status updates and the tasks accomplished, many of you are aware that we’ve recently been working on certain core aspects of the framework. This post is to give you some more information.


For quite a while now, we have been looking into the challenges of a more lightweight, website-oriented approach to web applications. Reasons are two-fold: primarily, we are involved in company-internal projects in that very domain. Secondly, by touching core components of qooxdoo we can experiment with benefits of web technologies and concepts available today.

Practical Info

Our work in that area has been public from the start, of course. Coding began in a branch of qooxdoo called “next”. Given its reduced scope with respect to qooxdoo and the later deviations impeding git merges of master, we recently moved it out of the way into its own “next” repo. Consequently, we also moved the former “next” component in the qooxdoo bugzilla and all its tasks to a distinct “next” product. This decoupling certainly helps in differentiating the changes to either code base, and there is no confusion with the regular qooxdoo.


It’s important to note that the working title is rather arbitrary. Particularly, it does not imply this is to become the “next” qooxdoo. No worries. Think of it as something currently being “next” to qooxdoo.

Also it’s not about “architecturing” a new framework up front. Instead, we follow an agile, Kanban process. Alignment with the requirements of the internal projects provides a practical feedback loop. Striving for being lightweight and embracing modern environments keeps us moving forward step by step.

Given the experimental, incomplete nature it is not meant to be easily accessible or consumable for you, sorry. Nevertheless, we’d like to keep you informed, so if interested, just follow public repo and issue tracking, and the blog posts now and then.

Intermediate Results

We have been making good progress. Details on some of the technical achievements would be part of some future blog posts, if you are interested. To give you some brief idea just now, we were able to significantly reduce size and complexity of some core components like OO and event layers, while keeping many of its features. In several places we initially dropped or at least reduced abstraction, but it might get added later on, if it proves necessary or reasonable. This might then be done in some modular way, unlike the often monolithic, abundant feature set of qooxdoo now.

In order to leverage the native features of modern browsers, we dropped support for legacy browsers such as IE8. For the GUI part we managed to come up with a single, lightweight widget set. The former qx.Website widgets were replaced or merged with the qx.Mobile widgets, so the latter ones can now also be used on dynamic websites, even markup-based.


We are happy with our agile approach and the intermediate results while addressing specific challenges of the website-oriented projects. Thus we like to share this good news, well-aware that many of you won’t be able to benefit from this experimental code base any time soon. Nevertheless, lets see if, where and how some of the new concepts and implementations could benefit all of us and our future projects. Thanks for listening and your support, stay tuned.