March 18, 2016

Qt 5.6 Goes LTS, Tightens Integration with Yocto Project

samegame-compareThe Qt Company released version 5.6 of its cross-platform application and UI development framework, bringing Qt’s Boot to Qt embedded Linux platform in greater alignment with Yocto Project tools. As a result, “developers can easily pull in the full Qt offering to their own Yocto-based software stacks or customize Qt’s Yocto-compliant software stack to meet their production needs,” says the Qt Company.

Among other enhancements, Qt 5.6 adds automatic scaling to high-resolution displays, as well as an improved Qt Virtual Keyboard, support for more embedded Linux boards, and improvements to Qt WebEngine. In addition, version 5.6 provides full Windows 10 support, and the ability to develop embedded Linux devices using a Windows host PC.

Qt 5.6 is also the first Long-Term Support (LTS) release since Qt 4.8 back in 2011 when the Qt project was still sponsored by Nokia. LTS brings assurances of patch releases and bug and security fixes for at least three years, and as Lars Knoll notes in his Qt 5.6 blog entry, gives the Qt team “some more freedom in the upcoming versions of Qt.”

Posting an LTS stake in the ground has enabled Qt to migrate to a new Continuous Integration System (COIN) for software development and release. The Qt Company, which offers both free open source and subscription-based commercial versions of Qt, has been moving to the new system over the last year, replacing the old Jenkins-based infrastructure. COIN enables much faster integration and testing of code changes, and works “much more incrementally, making it easier to bring all the repositories and source code…together,” writes Knoll.

With Qt 5.6, most of the release binaries are produced within the same system, which is said to significantly reduce package generation time. Also, for the first time, the Qt team can “efficiently support different configurations and platforms for different Qt branches,” writes Knoll.

The LTS release has also freed up Qt to cut ties with older platforms. The upcoming Qt 5.7 will require a C++11 compliant compiler and will drop some older, unnamed platforms. Qt 5.7 will also coincide with changes to licensing, including moving from LGPLv2.1 to LGPLv3, and “open-sourcing a lot of formerly closed components under GPL,” says the Qt Company.

Yocto Project on Tap

Embedded Linux developers work with a Qt module called Qt for Device Creation, which includes a Boot to Qt embedded workflow stack that enables fast startup on development boards. Previously, developers have been able to use Yocto Project tools to do some customization of Boot to Qt. Qt 5.6 has substantially improved Qt’s conformance with both the tools and Yocto meta layers.

With Qt 5.6, “it’s even easier to customize the Boot to Qt stack or pull in all relevant Qt pieces straight to your own Yocto-based builds,” writes Knoll. Hosted by the Linux Foundation, the open source Yocto Project provides developers with templates, tools, and methods to help create custom embedded Linux devices, regardless of the architecture. These include a development environment, emulation environments, debuggers, an Application Toolkit Generator, metadata, documentation, and OpenEmbedded core system component recipes.

The following are some key highlights of Qt. 5.6:

  • Improved Yocto Project support -- See above.

  • LTS -- Updates and patches are promised for at least three years when extended support can be purchased.

  • High-DPI support -- Qt has expanded high resolution support beyond its Mac OS X version, enabling apps written for standard resolutions on any platform to automatically scale up to high-res displays. Qt can automatically adjust font sizes, window elements, icons, and more based on pixel density.

  • Windows 10 support -- Qt 5.6 is the first release to provide full Windows 10 support, including PCs, tablets, and phones. A recompile will enable most apps to be distributed in the Windows Store. Windows Embedded Compact support has been updated to the 2013 version.

  • Windows host support for embedded Linux -- Developers using the Windows version of Qt can now tap directly into Qt for Device Creation to develop apps for embedded Linux devices.

  • Browser improvements -- The Qt WebEngine browser engine advances to Chromium 45, and adds support for Pepper plugins (PPAPI) such as Flash. There’s a module for new low-level APIs, and Linux users can now use “many of the system libraries instead of bundled ones.”

  • Qt Virtual Keyboard updates -- The new keyboard app adds Hand Writing Recognition (HWR), performance improvements, Nuance T9 Write integration, and support for Traditional Chinese. It’s now available with GPLv3 licensing.

  • New embedded Linux hardware support -- Qt 5.6 extends support for targets including the Nvidia Jetson Pro, Intel NUC, and systems using the NXP i.MX6.

  • Qt Location -- There is now full support for the Qt Location module, enabling integration of maps, navigation, and points-of-interests (POIs) within Qt apps. Plugins are supplied for HERE, Mapbox, and OpenStreetMap.

  • Enhanced Qt APIs -- Qt 5.6 offers improvements to C++11 support, Qt Multimedia, OpenGL ES 3 compatibility, and more.

  • Technology Previews -- Preview releases for future Qt versions include an enhanced version of Qt 3D and a new Qt SerialBus for supporting CanBUS and ModBus. Qt Quick Controls 2 has been significantly revamped, and offers “improved performance especially on embedded devices.”

  • Qt Creator 3.6.0 -- Qt 5.6 is compatible with the new Qt Creator 3.6.0 GUI design package. There’s an experimental editor for UML-style diagrams, plus improvements to the Clang-based C/C++ code model, and more. The release no longer supplies prebuilt binaries for 32-bit Linux.

  • Qt for Application Development discount -- This week, Qt announced a Start-Up Plan that offers significant subscription reductions on its commercial Qt for Application Development program. Available only to companies with revenues of $100,000 or less, the $49 per month plan lacks professional Qt support. The company notes, however, that many of the roughly 1 million active Qt developers are happy to help out newbies on the Qt forums.

Quickie Qt Backgrounder

As several readers have pointed out, Qt probably should have been included in our January roundup of 10 Best Free Mobile Application Development Frameworks That Support Android. Qt is kind of a different breed, however. It supports GUI development in addition to full applications, it’s primarily focused on C++ rather than Javascript, and its Android and iOS support is still relatively new.

Since Digia acquired the commercial framework from Nokia in 2011, and took on stewardship of the open source Qt project in 2012, the Finnish company has focused on expanding mobile support. The first production-ready Qt ports of Android and iOS arrived in late 2013 in the beta version of Qt 5.2. This was enabled with Qt Quick and its declarative scripting language QML, which enabled Javascript integration.

Although Qt has been always cross-platform, and now supports Linux, Windows, OS X, Android, and iOS, among other platforms, its embedded implementation focuses on Linux. The original Qt, called Qt/X11, was available in both a pseudo open source Unix and proprietary Windows version by Norwegian firm Trolltech back in the early 1990s. A Linux version soon followed. In 2000, after considerable debate in the Linux community involving the KDE project, which used Qt, the development framework was released under the fully open source GPL v2.

Trolltech then expanded to the Mac, and in 2003, customized its Linux-ready Qtopia embedded stack, built on the Linux-based Qt/Embedded to expand beyond handhelds to support mobile phones. Qtopia was billed as “the de facto standard application platform for embedded Linux.”

Trolltech continued to grow, and in 2008, Nokia acquired the company for about $150 million, giving rise to speculation Nokia would phase out Symbian in favor of Qtopia Linux. Yet, in 2009, Nokia’s new Qt Software unit replaced Qtopia with a cross-platform Qt 4.5 and switched to an LGPL license.

Nokia was a partner with Intel in the new MeeGo Linux project, which included a mobile profile, but in 2011, hopes for a new MeeGo-driven Nokia died when Nokia announced a partnership with Microsoft. Nokia said it would backburner MeeGo and focus on Windows Phone. The next year, Nokia sold the commercial Qt business and open source project to Digia, which then spun off the Qt Company.