Are You Ready for Qt 6?
Update: Qt 6.0.0 has arrived! Read the announcement from The Qt Company's Lars Knoll and then check out our blog below for more details on the new release and migrating to Qt 6.
Later this year will see the release of Qt 6.0.0, the first new major release since Qt 5.0.0 was announced almost eight years ago. It will offer a number of exciting new features and performance improvements. Unlike minor releases of the Qt 5 series, Qt 6.0.0 does not need to maintain binary or even source compatibility with Qt 5. That means that Qt 5 code will typically require porting to Qt 6.
The good news is that much of Qt 6 is source compatible with Qt 5. In fact, most APIs that are being removed or changed in Qt 6 were marked as deprecated in the Qt 5.15 series, so code that builds under Qt 5.15 without any deprecation warnings should be well on its way to being ready to run on Qt 6. That said, there are some Qt modules that are being removed entirely in Qt 6, so code that relies on these will require more effort to port.
At present, Qt 6.0.0 is in its third Beta release. In my recent experience trying to build our Qt training labs and example programs under the Beta, most code built and ran with minimal changes provided that it did not require any of the modules that are being removed (or not currently included in the Qt 6 beta releases).
The Qt 6 documentation will include a porting guide from Qt 5. Also, a Qt 5 Core Compat module will be provided that will help transitioning older code by providing the Qt Core APIs from Qt 5 which will no longer be supported in Qt 6.
When to Move to Qt 6.0
Determining when to move to Qt 6.0 will be one of the difficult decisions facing developers. If you're starting a new project today, I suggest you consider Qt 6. Or, perhaps use Qt 5.15 initially, regularly testing the code against Qt 6 pre-release versions so you can transition to Qt 6 once it is released.
For existing projects, I recommend waiting longer for Qt 6 to be proven stable and have some maintenance/bug fix releases. That realistically means waiting until a few months after the 6.0.0 release, and likely longer if you are developing a safety critical application like a medical device.
The Qt 5.15 series will be the last Qt 5 release. As a long-term support (LTS) series, it will be supported for at least three years, and even longer if you buy extended support from The Qt Company or a third-party consulting company. No doubt there will be users of Qt 5 for a number years. The main risk I see in using Qt 5 revolves around the lack of security fixes once it is no longer supported, potentially putting any type of connected device at risk of cybersecurity issues.
I encourage you to try out the Qt 6 pre-releases and provide feedback to the Qt Project on any issues you find. The latest versions are available from Qt's online installer. Some references are listed below to help you get started.
References
- Qt 6 Release schedule: https://wiki.qt.io/Qt_6.0_Release
- New Features in Qt 6.0: https://wiki.qt.io/New_Features_in_Qt_6.0
- Qt 6 Documentation Snapshot: https://doc-snapshots.qt.io/qt6-dev/index.html