[Development] QML and Qt Quick versioning of our modules

Frederik Gladhorn frederik.gladhorn at qt.io
Wed Jan 10 15:25:03 CET 2018


Hi,

I'll start turning this thread into a QUIP here (currently empty placeholder 
commit):
https://codereview.qt-project.org/#/c/215625/

I'll update the list when I have written something. In the mean time I'd like 
to ask for this to become QUIP #99 and hereby reserve the number.

Cheers,
Frederik

On torsdag 7. desember 2017 14.53.06 CET Frederik Gladhorn wrote:
> Hi all,
> 
> I've lately been discussing with a few people in The Qt Company about our
> versioning.
> 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/
> development/2015-September/023200.html
> 
> Examples are the version section in here:
> https://doc.qt.io/qt-5/qtquickcontrols2-index.html
> 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 first place.
> 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 or 5.
> 
> 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 the user.
> 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.
> 
> Cheers,
> Frederik
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development





More information about the Development mailing list