[Development] QML and Qt Quick versioning of our modules
frederik.gladhorn at qt.io
Thu Dec 7 14:53:06 CET 2017
I've lately been discussing with a few people in The Qt Company about our
Historically it was a good idea to not couple Qt Quick too tightly to general
Qt releases. There were quite some constraints and added flexibility was nice.
Qt Quick has matured a lot though, so I think it's time to consider making
everyone's lives easier by cleaning up our version chaos.
See also J-P's previous mail here: http://lists.qt-project.org/pipermail/
Examples are the version section in here:
And a general confusion around which version does what.
Since we so far don't keep copies of old functions around (as far as I'm aware
at least), I don't think there's a huge value in the versioning system in the
It only gives one important guarantee: if you added a property/type/name and
import a defined version, you don't suddenly get conflicts because we introduced
the same name.
Some modules started to copy the Qt version, e.g. Multimedia, that's pretty
easy to remember and a good start in my opinion.
I have several ideas and I'm unsure how hard they would be to implement, so
I'll list things from easy to hard.
1) sync minor versions to Qt release version:
For Qt 5.11, we would provide QtQuick.Controls 2.11
This way, the challenge for the user is only to find out if it's version 1, 2
2) Make the minor version import optional and we pick the lastest. This should
be optional to prevent the name clashes described above and shifts the risk to
In practice I'd expect this to be pretty safe.
import QtQuick.Controls 2 would then give the latest version available.
3) Make even the major version optional and we'd pick up the latest version.
import QtQuick.Controls would give version 2.11 with Qt 5.11.
I don't see us releasing most of the QML/Qt Quick modules independent of the
rest of Qt any time soon, so I hope this will make things easier for everyone.
I'm sure there are even better ideas out there, this is just my version and
current thinking, I hope for constructive suggestions :)
In the end I want this to be easier for Qt users and also to lessen our
maintenance burden and the need to look up versions, explain the scheme and
reduce the confusion.
Luckily we now have qmlRegisterModule(QT_VERSION_MAJOR, QT_VERSION_MINOR) to
help registering the current versions already.
More information about the Development