The week in qooxdoo (2015-06-19)

This week was dominated by two framework releases: a major release qooxdoo 5.0 as well as a maintenance release qooxdoo 4.1.1. If you haven’t checked them out, please do so. They are the most sophisticated and mature releases of qooxdoo so far.

Don’t forget to let us all know if you are happy with the new framework versions, particularly qooxdoo 5.0. Just add your comment to the announcement post. If you encounter any trouble with the new releases or have some suggestions, please report any issues as usual, i.e. via the qooxdoo bugzilla.

Appreciated. Have a nice weekend.

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.

qooxdoo

 

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:

Website

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.

Mobile

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.

Desktop

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

WebDriver

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.

Thanks

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.

The week in qooxdoo (2015-06-12)

Here is a quick status update.

As mentioned on the blog recently we’ve been busy finishing the upcoming qooxdoo releases. That’s done by now. After a successful ramp-down phase involving quite some testing, qooxdoo is going to ship another double release next week: a maintenance release qooxdoo 4.1.1 as well as another major version qooxdoo 5.0.

General availability of those releases should be during the course of next Monday, so stay tuned.