qooxdoo 3.5 released

 

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

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 suggestions and improvements.

qooxdoo 3.5

qooxdoo 3.5 is another landmark in the framework’s ongoing evolution of being a universal JavaScript framework. The current release introduces such highlights as a lightweight widget set for websites and it embraces an ever-growing ecosystem for JavaScript tooling.

 

qx.Website

The website-oriented part of qooxdoo had already become an enterprise-grade solution for developers to enhance their websites with dynamic functionality. One frequent request was the need for “low-level widgets”.

So we added a qx.Website Widgets library that provides a set of lightweight UI components ready to be integrated into any web project. These widgets use the same collection API paradigm as qx.Website itself, so they can be be initialized and customized in just a few lines of code. Each widget can also be configured using HTML data attributes so that a website’s UI can be defined entirely in (server-generated) HTML and initialized with only a single line of JavaScript.

For the initial release, the library contains the following components: Button, Calendar, Rating, Slider, Tabs, Accordion. More will be added in the coming months – let us know which UI components you would find useful.

Please note that the Widgets module is considered experimental, i.e. the API can still change. We expect it to be finalized for the next major release, your input is appreciated.

The addition of new qx.Website modules necessitated a redesign of the qx.Website API Viewer‘s navigation.

Modules are arranged in groups and a filter box can be used to narrow down the list of methods. Thanks to the responsive UI, the API Viewer works well on phones and tablets, too.

 

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.5 release that emphasize its capabilities to let you create elaborate mobile apps.

One of the most challenging features in a multi-device world is proper application scaling. qx.Mobile now enables you to easily adjust the scale of your qx.Mobile app (or even let your users do so), simply by changing the root font size.

This is made possible by the built-in themes that are now fully resolution-independent. In technical terms this means that relative units are being used throughout the themes instead of absolute pixel units. No matter how small or large your font settings are, the mobile widgets will scale accordingly.

qx.Mobile is built upon CSS-based themes, backed by the popular SCSS precompiling technology. We took the chance to consolidate and improve the themes provided by the framework. For instance, we expose many widget style variables to the main SCSS file of a theme. Modifying colors or using linear gradients becomes trivial. It is now even easier to create your very own custom theme.

So-called “flat” designs became popular on mobile operating systems recently. In leveraging the new capabilities for custom themes, we created and shipped a new “Flat” theme.

Support for Windows Phone 8 and Internet Explorer 11 has been enhanced. The modern IEs 10 and 11 now take advantage of native scrolling, providing a much smoother user experience. Multi-touch handling was also added for those browsers, based on pointer events. Target those emerging device classes (hybrid devices, convertibles, etc.) with your qx.Mobile app.

Besides fixes and improvements throughout qx.Mobile many existing widgets were enhanced. To pick just one example, the mobile Carousel can now host a large number of pages due to its pagination overflow handling.

 

Tooling

We introduced experimental Grunt support. Grunt.js is a popular task runner based on Node.js. The features of the qooxdoo toolchain nicely blend with Grunt. We’ve begun to leverage Grunt’s ecosystem of plugins and combine the best of Grunt with the best of the qooxdoo Generator.

For newly created qooxdoo apps all Generator jobs are now also available through a Grunt frontend. For instance, instead of writing generate.py source you can now use grunt source, too.

In order to use it in your existing app take a look at the Gruntify existing apps section in the manual. Grunt offers a huge number of Grunt Plugins waiting to be utilized. Go ahead and read our Grunt manual page to find out about the possibilities and what we are aiming for.

 

Check it out!

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

The qooxdoo 3.5 release comes with many substantial improvements and exciting new features. In fact about 190 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! :-)

 

qooxdoo 3.0.2 released

A new maintenance release of the framework is available.

qooxdoo 3.0.2 includes about 60 bugfixes over the previous qooxdoo 3.0.1 release.

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

Download qooxdoo 3.0.2, checkout 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.


Tool Chain: The Next Step

qooxdoo’s tool chain, the set of command line tools most prominently exposed through the Generator (what you invoke with “generate.py”), is about 8 years old in its current conception. When it was started it was an excellent way of providing some niffty tooling to the qooxdoo application developer, like automatic dependency analysis, code selection, optimization and compression. Things that weren’t easily found elsewhere, or were even novel at that time.

JavaScript is taking over the world

But things have changed. Chrome happened, and with it V8, and then after a while, Node. Node brought a general purpose, V8-based, cross-platform JavaScript runtime that opened the landscape for generic, server-side and command-line based JS development outside the browser, and doing so with a performance that easily blew away other dynamic languages. Then came NPM and the whole thing exploded, bringing us where we are.

Today we have a deep and broad ecosystem of Node modules which is growing almost daily both in depth and richness. Part of this storm is the proliferation of JS-based build tools, for JS projects, implemented in JS, with JS plug-ins, customizable through JS. It has become a JavaScript wonderland for tool smiths.

Retain the good, embrace the new

This evolution brought us to question our own approach since some while. We followed the development of Node/NPM with enthusiasm, seeing it mature in a very short time in some aspects, and are now at the point where we want to jump boat and embrace this new wold in our tooling. We want to introduce a new infrastructure which is JavaScript-based and provides us with a platform to interact and integrate with the functionality that we already have.

So we have started to introduce a Grunt-based layer in our repo to experiement and evaluate such a build layer. The old build system stays untouched for the time being, so you don’t have to worry. The aim is to make existing functionality available through the Grunt frontend, and see which parts of the tool chain can be replaced by Grunt plugins, be they from NPM or self-written. For everything else the existing Python-based tool chain will be utilized.

The eventual goal is to have a qooxdoo tool chain that builds on a generic JS layer, is as powerful and sophisticated as before, but allows easier integration with and extension through third-party code, to make it easier for users to customize the tool chain in their applications, and to allow us to focus more on the qooxdoo-specific functionality and less on generic infrastructure and commodity tasks.

So, this is the beginning. We’ll be back with more as we progress.

qooxdoo 3.0.1 released

A new patch release of the framework is available.

qooxdoo 3.0.1 includes more than 60 bugfixes over the previous qooxdoo 3.0 release.

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

Download qooxdoo 3.0.1, checkout 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.