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, 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.
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.
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.
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!
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.