Qt Roadmap for 2020

2020 will be an exciting year for Qt, as we have so many great things shaping up to be released. The baseline is Qt 5.15 LTS coming in May with pre-releases already available. A lot of new functionality for increased productivity is coming for our tools for both designers and developers. With Qt for MCU we can address a whole new range of target devices. On top of it all, we have the next major release of Qt – Qt 6 – coming at the end of the year.

Before diving any further into the new items planned for 2020, I would like to thank all Qt developers for their contributions. We have a great ecosystem with many contributors who have provided multiple extremely valuable contributions throughout the years and continue to shape Qt in the future, too. In addition to those contributing code, we have also had many active people in the Qt Project forums, on mailing lists, as well as reviewing code and testing the Qt development releases.

From the very beginning, Qt has been both a framework and a tool for developers – and for a long time, we have offered our own Qt Creator IDE as well. Earlier we provided a visual drag-and-drop designer as part of the developer offering, but during the past few years, we have spent a lot of effort to improve our offering for designers. So, let’s start looking into the Qt roadmap starting with the designer tooling.

Tools for Designers

We released the first preview of joining 3D design capabilities with 2D design tooling inside Qt Design Studio in December. Currently, we are improving and polishing the integrated 2D and 3D design experience for the Qt Design Studio 1.5 release in May. In subsequent releases during the second half of 2020, we will further improve the unified 2D and 3D design experience and other features of the Qt Design Studio. 

The support for Qt Quick 3D improves in Qt Design Studio 1.5 and takes advantage of all the improvements of Qt Quick 3D coming with Qt 5.15 LTS. General usability is improved with the addition of docking widgets. Various views and control panes of the Qt Design Studio can be freely moved across all monitors. This allows the designer to create a workspace that matches the personal preferences and the needs set by the ongoing project.  

The all-new UI flow design capability brings a visual editor for creating different views and defining the interactions between them. This highly requested feature allows the creation of a complete application design intuitively and quickly even for complex applications. Another important and highly requested feature coming with Qt Design Studio 1.5 is support for annotations only visible during design and development. These annotations allow designers and developers to communicate with each other while the application is being designed. During the latter half of the year we are looking into improving design experience for multi language applications and enabling generation of UI/UX specification documentation directly from from Qt Design Studio. 

Qt Design Studio already provides quite extensive capabilities for content import. Direct integrations are available for Photoshop and Sketch, and 3D content can be imported via common exchange formats such as FBX. Each new release will further improve these capabilities. To extend the available graphical design tool integrations, we are planning to provide additional integrations to new tools such as Adobe XD. Improvements to asset import formats are also in the works, especially for formats such as FBX and glTF commonly used in the creation of 3D applications. In addition to the design tool integration, it is already possible the integrate to external AR/VR application such as Autodesk VRED, and we are looking into providing integration(s) to external simulation applications. 

Tools for Developers

Qt developers also have a wide variety of dedicated tools, which we are constantly improving. Qt Creator is our main tool for developers and brings together many other tools, created as plugins for the Qt Creator IDE. Of course, developers can also use our designer tools, and they offer many clear benefits also for those who mainly write code. In fact, the designer tools are  based on Qt Creator, just hiding away the parts which are not expected to be valuable for the design process. So, let’s dive into what we are working on for Qt Creator and other developer tools.

Clang has been available for quite a while now and we have continuously improved the support and usage of Clang and its accompanying tools. Currently, we are focusing on improving our C++ support through Clang, in Qt Creator and in the other tools. An update of Clang in Creator will enable C++20 support once it’s available. The translation tool lupdate will benefit from Clang when we enable a clang-based parser for C/C++.

The Qt Creator IDE provides the capability to highlight the syntax for multiple different languages. Work is ongoing on generalizing the support for different languages through the Language Server Protocol. For the user, this will mean improved support for Python and QML. For other items in Qt Creator, we are working on steps to simplify the building of Qt Creator extensions. This will help to create and provide separate Qt Creator extensions through the Qt Marketplace.

We will continue to improve our CMake support in Qt, also collaborating with Kitware on things which need to be fixed upstream in CMake. Leveraging CMake also means that Qt users can benefit from the functionality added in new CMake versions, such as the recently released CMake 3.17.

Good documentation is an essential value of Qt and with Qt 5.15 LTS we will extend QDoc to generate DocBook, a standardized XML format specific to software documentation. This functionality is a good example of a valuable contribution from our open source community. In addition to constantly enhancing the documentation content, a lot is ongoing behind the scenes to ensure that our documentation stays world-class in 5.15 LTS, 6.0, and beyond.

Qt for Microcontrollers

With more and more microcontroller-based devices featuring displays we wanted to address this segment. After trying to scale down Qt to the needed level, we realized that this approach is not viable for the most common use cases. To properly address the segment, we created Qt for Microcontrollers (MCUs), with the first fully supported version released at the end of last year. During 2020 we will provide support for new devices and operating systems and present a lot of important features.

At the heart of Qt for Microcontrollers is a completely rewritten Qt Quick Ultralite graphics runtime featuring a subset of QML functionality suitable for constrained devices. With Qt 5.15 LTS and the corresponding Qt for MCUs release, we are providing full compatibility on QML language level. As Qt Quick Ultralite only supports a subset of QML, compatibility is limited to the supported functionality. This allows applications targeting Qt for MCUs to run directly on Qt 5.15 LTS – and allows leveraging the Qt tools efficiently. For organizations using Qt both on microcontrollers and microprocessors, the full compatibility is essential.

Qt for MCUs is already using some of the great tools we have available and we are significantly improving tooling during 2020. For developers, we are extending the use of the Qt Creator IDE and improving the overall Developer experience to the level users of Qt for Device Creation are familiar with. We are also adding MCU support for Qt Design Studio – allowing designers and developers to work seamlessly together when targeting microcontrollers.

Qt 5.15 LTS

Qt 5.15 LTS is in the final steps of development, with three beta releases already out. The release of Qt 5.15.0 is planned for the end of May. For commercial license holders, Qt 5.15 LTS will be supported for 3 years, just like the Qt 5.12 LTS and Qt 5.9 LTS. For open-source users, Qt 5.15 a regular Qt release without the long-term support, just like Qt 5.14 and Qt 6.0.

One of the most important new features of Qt 5.15 LTS is the fully supported Qt Quick 3D providing an easy-to-use and efficient API for adding 3D functionality to Qt applications. The 3D engine is based on the same runtime as Qt 3D Studio – with deep integration to Qt Quick and enhanced performance. A key benefit of Qt Quick 3D is the capability to seamlessly combine 2D and 3D Qt Quick into the same application, including a unified clock for the animations.

Another important new item in the graphics area is the technology preview of RHI – Qt’s new Rendering Hardware Interface. For Qt 5.15 LTS RHI is an opt-in functionality that can be used for running Qt on new graphics APIs such as Metal and Vulkan. There are some limitations. For example, only Qt Quick (2D) is supported via RHI in Qt 5.15 LTS, not yet the new Qt Quick 3D. RHI will be the graphics baseline of Qt 6.0, but already available with Qt 5.15 LTS for those who want to give it a try.

Other important graphics related items are multiple improvements in Qt 3D improving both performance and functionality. Someone might ask why there are two different approaches to 3D: Qt 3D and Qt Quick 3D. The reasons are partially historical – and in the past we have also looked into options such as bringing these together. However, Qt Quick 3D and Qt 3D serve different purposes – one as an easy-to-use API for adding 3D content into Qt applications and the other as a versatile framework to tune and adjust multiple characteristics of 3D rendering (or even creating your own renderer with it).  

While we do have a lot of new graphics functionality in Qt 5.15 LTS, that is not all. We have done a lot of work in QML to improve the language and functionality, too. Most of the new functionality is being developed for Qt 6 but we have aligned as much as possible already for Qt 5.15 LTS. Examples of the new QML functionalities in Qt 5.15 LTS are QML type registration and a few other features.

As always, many parts will get valuable incremental improvements with Qt 5.15 LTS. Qt for WebAssembly, Qt for Python, as well as many different modules of Qt feature improvements and new functionality requested by our users. Android support will receive many usability improvements, documentation polish, and some new functionality such as using the native file dialogs. Beyond adding features, one of the important items we are doing for Qt 5.15 LTS is to mark those APIs deprecated which we are planning to change or remove in Qt 6.0. This should significantly assist when developers port their applications to Qt 6.

Qt 6

The next major version of Qt is coming at the end of the year. We have already explained the key functionality and plans for Qt 6 quite a bit. Therefore I will not go into too much detail now. If you are not yet familiar with what is coming with Qt 6, please check out the Qt 6 vision blog post and Qt World Summit 2019 keynote by Lars Knoll.

Qt 5.0 was released in December 2012, therefore it will be 8 years between the major versions of Qt. This is quite close to the 7,5 years between Qt 4.0 and Qt 5.0. Just like Qt 4, Qt 5 had many things added throughout these years – and we are planning to do the same for Qt 6. The initial focus for Qt 6.0 development is on the Qt Essentials functionality. We want to ensure that we can finish all the needed changes before Qt 6.0 is released in order to be able to keep binary and source compatibility throughout the entire Qt 6 series. We are crafting Qt 6 to be the platform for the needs of the 2020’s – with Qt 6.0 being just the start of the awesome journey.

We’ll provide a lot of different blog posts and webinars about Qt 6.0 during this year, so keep following our channels.

Industry Offering

In addition to the general-purpose tools and framework items I have already covered, we have a few other products created specifically for the needs of various industries. Qt Automotive Suite is getting ready to leverage Qt 5.15 LTS and all the Qt 5.15 LTS functionality is available also for the users of Qt Automotive Suite. The safety certified Qt Safe Renderer will get an important update providing more capabilities for the creation of dynamic, yet safety-critical, user interfaces.  It will also be pre-integrated and certified in more platforms during this year. Qt for Automation protocols continue to be updated for new Qt versions and developed further according to customer feedback.  

Marketplace

Qt Marketplace was announced at the Qt World Summit 2019 and opened at the end of last year with initial content from multiple partners and community members. New content items are continuously added from existing and new vendors. If you have not yet visited, I recommend to take a look - you can find the currently available selection at https://marketplace.qt.io.   

In addition to the content from others, The Qt Company will also leverage the Marketplace for additional content provided on top of the Qt framework and tools. Throughout 2020 we are bringing the new Marketplace closer to the Qt users and constantly improving the experience of purchasing and installing content from the Marketplace. Qt Creator 4.12 is adding integration to the Marketplace, by allowing to view the available selection directly via the Qt Creator IDE. We are also working on creating a new Qt installer that integrates with the marketplace later this year.

Stay tuned!

I hope you enjoyed this high-level overview and a peek into what we are planning to release during 2020. There is so much cooking that it is not possible to cover everything. Nevertheless, I was hopefully able to list some of the items which are of interest to you.

From 12th to 13th of May we are arranging the Qt Virtual Tech Con to provide a lot of presentations about new and existing functionality in Qt. During these days we provide in total over 35 technical sessions to cover multiple different angles of Qt.  If you have not yet registered for the event, do it now at https://www.qt.io/qtvirtualtechcon2020 - it is free for everyone to attend.

In addition to the Qt Virtual Tech Con in May and Qt World Summit 2020 in October, there are many blog posts, tutorials, webinars, white papers and more coming during the year to introduce all these new things in more detail. Stay tuned!


Blog Topics:

Comments