[Development] Convenience Imports in QML

Attila Csipa qt at csipa.in.rs
Wed Dec 12 16:41:46 CET 2012

On 12/12/12 12:22, Sorvig Morten wrote:
> On Dec 11, 2012, at 4:25 AM, Alan Alpert <416365416c at gmail.com> wrote:
>> import Qt 5.0
>> Which imports all QML modules in the Qt Essentials released with 5.0.0

If the idea is to import the essentials, then call it that: "import 
QtEssentials (from Qt) 5.0" - it would look weird enough to explain why 
you can't combine this "Qt5" module with, say, cascades or something 

>> (except QtQuick 1). It would be the equivalent of
>> import QtQml 2.0
>> import QtQuick 2.0
>> import QtQuick.Window 2.0
>> import QtQuick.Particles 2.0
>> import QtAudioEngine 1.0
>> import QtMultimedia 5.0
>> import QtWebkit 3.0
> How about allowing imports without the version number?

Oh, how many times we have discussed this :)

I'll agree that the "import QtQml from Qt 5.0" is cleaner. But my 
"ceterum censeo" on the QML versioning and why (the way it's implemented 
- though not necessarily the way it was envisioned and described in 
Alan's post) is fundamentally broken: QML import statements try to link 
code to *VERSIONS* and not *API*s (hold your thoughts there for a second 
and let that sink in - the difference is subtle, but important). The 
insult-to-injury there is that the versions mentioned there are actually 
ID strings and contain no semantics or relations. What I would like to 
see a lot more is the logic applied for the good old C++ side: major 
version means compatibility, minor version means features, not ad-hoc 
numbering schemes. So if I do an Import QtQml 2 (or QtQml 2.*, or 2.0+) 
it means I'm good with anything that provides 2.0 or a compatible API. 
If you have QtQml 3.0, it means you had an API break and then it's 
perfectly fine to say 'bork, import failed'.

> You're basically asking to opt-out of the versioning system. If we
> thought that was a good idea, we wouldn't require all module imports
> to be versioned. Short explanation is that your deployed applications
> could easily break and there's no real need to skip versioning. Long
> explanation is here: http://alan.imagin-itis.net/?p=322 .


Short story: there is no *hard* compatibility guarantee anyway, so one 
might as well let people do what they want and not pull the rug from 
underneath them randomly.

Best regards,

More information about the Development mailing list