qooxdoo-contrib 3.0

For many years now an infrastructure for user-provided contributions to the qooxdoo framework has been available. As most of you certainly know, it goes by the name of “qooxdoo-contrib“.

While sticking to the very name, it has seen many significant changes over time. For instance, from its initial SVN repo at Sourceforge; over its deep (but often problematic) integration into the framework’s toolchain; all the way to a semi-dynamic, web-based catalog. Nevertheless it (mostly) kept moving into the right direction, trying to make it easier to collect, manage and use contributions to qooxdoo.

Just recently qooxdoo-contrib has been brought into a fairly decent state, allowing for easier participation. Much feedback from users and contributors has been incorporated into its fundamental overhaul.

To test-drive the new infrastructure, we invited Norbert Schröder for his recent theme contributions. He successfully managed to add, modify and publish the following three themes – all by himself:


The former qooxdoo-contrib has now been switched to the new infrastructure. That doesn’t mean qooxdoo-contrib is “done”. There are still some tasks to get rid of the old infrastructure entirely.

Moreover, qooxdoo-contrib might even look quite different in the future. Not just in terms of a nicer presentation, maybe also in its technical base for managing user-contributed packages. But that also depends on you. Because its further evolution (in terms of appearance, content, infrastructure) can now – for the first time – be handled according to the need and engagement of the community. The infrastructure of qooxdoo-contrib has therefore been made self-contained, transparently being hosted at Github, allowing but also requesting interested people to engage in improving it.

The current state of qooxdoo-contrib may be just an intermediate milestone, but a good starting point for the community to further improve it. For instance, to streamline it, to make it fool-proof, to automate it. Get familiar with the current infrastructure and the procedures, check out its concise documentation at Github. Pull requests welcome. Feel free to use the qooxdoo-devel mailing list for discussions.

On a side note, the work on the new qooxdoo-contrib, built upon a transparent Github infrastructure for easier management and collaboration, was also to evaluate to move other parts of the qooxdoo project over to Github. I.e. not only leveraging Git repos, but gh-pages or wiki (instead of the Dokuwiki-based homepage), issue tracking (instead of Bugzilla), etc. Some of the project’s proprietary infrastructure just needs to be replaced by more manageable solutions, open for participation. While this is still work in progress and under evaluation, it’s certainly the way to go to allow for easier management and collaboration of the qooxdoo project in general. Stay tuned.

qooxdoo 5.0.1 released

A new maintenance release of the framework is available.

qooxdoo 5.0.1 ships with a few bugfixes over the previous qooxdoo 5.0 release. It particularly improves support for Microsoft Edge, the new browser of Windows 10, which was finally released after qooxdoo 5.0.

As a patch release qooxdoo 5.0.1 is fully backwards-compatible to the previous 5.0 version. Nothing needs to be changed in your existing apps if they are based on 5.0.

Even for apps based on qooxdoo 4.1.x updating should be rather trivial; just consult the previous release info. When upgrading from an older version, use migration support to get directly to 5.0.1.

Download qooxdoo 5.0.1. Check out the release notes and the manual.

Many thanks to the community for reporting issues and your support in improving the framework.

qooxdoo 5.0 released

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

Many thanks to the entire community for making this happen: core developers, contributors and all users who brought in their bugfixes, suggestions and improvements.



The qooxdoo 5.0 release comes with many improvements as well as new features – across the entire framework. In fact more than 140 bugfixes and enhancements made it into the release. See the changelogs as an detailed overview in release notes.

qooxdoo is an enterprise-proven open-source project, with a track record of 50+ stable releases. As such it ships (again) with many mature components to allow for a professional realization and maintenance of apps ready for production. In the following we pick some of the highlights in different domains of the framework:


The qx.Website widgets are a set of lightweight components perfectly suited for a more DOM-oriented approach to web interfaces. They have seen some fundamental change with the current release, which reduces complexity and allows for new features: a website widget’s internal structure now always is exposed by a single DOM element. This is a breaking change over the previous qooxdoo 4.x, so if you create or maintain your own custom qx.Website widgets, please adjust your code accordingly.

A handy feature when working with a collection of website widgets was added: a generic wrapper instance forwards the API of the first object to all objects in the array. Manipulating several widgets at once has never been easier.

An often requested widget missing from qx.Website was a Carousel. Now it is included in a state-of-the-art implementation. To make it slide, for instance, try mouse swipe gestures. Many other website widgets ship with practical improvements, e.g. check them out in the website widget browser: Button, Calendar, DatePicker, Rating, Slider, Table, Tabs/Accordion.

Microsoft Edge

Microsoft Edge

Microsoft Edge, initially known under the name “Spartan”, is a web browser to replace Internet Explorer as the default browser on Windows 10 PCs, smartphones and tablets. It is designed as a modern web browser with a layout engine built around web standards. While currently available as a preview only, we wanted qooxdoo 5.0 to work reasonably well with it, ahead of the Edge’s final release.


Quite a number of corrections and updates went into the fundamental event layer. Being a future-proof layer based on input-device independent pointer events, this is particularly important for mobile or hybrid apps. The release ships with improvements for events or gestures such as click, double-click, right-click, mouse buttons, tap, drag&drop, swipe.

Several widgets of qx.Mobile got better: for instance, Slider and NumberField now allow for decimal step sizes. Mobile checkboxes and radio buttons now retain their size and break to the next line when there isn’t enough horizontal space left.


An important ingredient of compelling Single-Page Applications are virtual widgets, which can handle large amounts of data. Virtual lists now support custom group heights: in some usecases ordinary list items are relatively huge (i.e. when containing a specific icon, etc.) and the group header only consists of a headline that groups a couple of list items. An optional property adjusts the row config item sizes if it’s specified.

Several of the mature set of qx.Desktop widgets were made even more practical for production use, for instance Spinner, Table, Tooltip or form validation.

SVG; Fullscreen

It is increasingly nice, e.g for resolution-independent GUIs, to have support for loading SVG images directly. Previously you were required to set each width and height individually. Now SVGs can be part of qooxdoo’s managed resources, so the framework toolchain takes care of the proper size handling.

BTW, this is just one fine example of community members collaborating on an enhancement and providing a production-ready pull request, easily integrated into the framework. Another great contribution was provided for the Fullscreen API, adhering to the spec but conveniently abstracting away browser differences.

Transport Layer

qooxdoo leverages on the concept of service-oriented frontend architectures. Thus applications benefit from its powerful yet elegant transport layer. This layer has further been extended, e.g. it now allows ArrayBuffer, Blob and FormData objects as POST request data (Xhr). The REST layer is able to notify when a request is actually being sent. When mocking requests transparently, a proven best practice during app development, the integrated Fakeserver does no longer break when sending (multiple) fake requests.

WebDriver, Tooling


The former Simulator component, integrated with the framework and provided for qooxdoo applications, was based on Selenium RC. This technology has been superseded by Selenium WebDriver. We have been embracing WebDriver for a long time now and the accompanying qxwebdriver-java library has matured to a point where it allowed to migrate all relevant test cases to WebDriver.

Thus we deprecated the Simulator classes, removed the simulation jobs from the skeleton templates and demo apps, and added deprecation notices to the relevant manual pages.

Talking of deprecation and maintenance: we also decided to make the following two dev tools, that used to be baked into the framework, distinct contributions: FeatureConfigEditor (“FCE“) and Inspector. This helps the framework to be more concise.


Check it out!

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


About 1/3 of issues were reported by you, the community, often including detailed descriptions, suggesting specific changes or even pointing to Github pull requests. Particularly providing pull requests is a great and effective way to get fixes and changes into the framework.

Many thanks to all project members for reporting issues and your help in improving the framework.

Enjoy! :)

qooxdoo 4.1.1 released

A new maintenance release of the framework is available.

qooxdoo 4.1.1 ships with more than 70 bugfixes over the previous qooxdoo 4.1 release.

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

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

Almost 40% of issues were reported by you, the community, often including detailed descriptions, suggesting specific changes or even pointing to Github pull requests. Particularly providing pull requests is a great and effective way to get fixes and changes into the framework.

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