On naming qml modules packages

Lisandro Damián Nicanor Pérez Meyer perezmeyer at gmail.com
Sun Mar 30 03:48:39 UTC 2014

Some days ago a discussion came up on IRC on how to properly name packages 
containing QML modules. We are currently shipping them with somewhat misguided 
names like qtdeclarative5-controls-plugin.

This has, at least, two problems:

- They are not called plugins by upstream, but modules
- The .so are the plugins for the modules themselves.

After some back and forth, the following scheme (let's name it scheme A) has 
been proposed:



module: name of the module used in the path $QT_INSTALL_QML/foo/var/qmldir 
(more on this later)
version: supposedly hardcoded in the path

But after checking the docs [0][1][2] things with names and versions are not 
that straightforward.

- There are legacy (deprecated) [2] modules which do not contain versioning at 
all. Quoting from the docs:

  Legacy modules are modules whose specification qmldir file does not contain
  a module identifier directive.

- The rest of the modules are identified. They must be locally installed in 
$QT_INSTALL_QML [4] and they must be versioned. But...

  * They can be nested. QtQuick.Controls is installed in
  * Versioning can be defined either in the path or in the qmldir file itself.
    And multiple versions can exist in the same qmlfile (although not
    preferred by the doc).

You could even combine them! Have Foo/ with Foo1.0 to 1.45 and then Foo.2/ 
having Foo 2.0 to 2.3

Finally, to make things even more muddy, the qtquick1 *source* submodule 
provides the *Qt* module "declarative" (not to be confused with a *QML* 
module!!!), while the *source* submodule declarative provides *quick* and 

To understand things better, take a quick look at the table in [5].

I'm so proposing to change the original naming scheme to:


Where $module-name will be the lower-cased path replacing slashes with '-'. 

$QT_INSTALL_QML/foo/var/ would be packaged as qml-module-foo-var

$QT_INSTALL_QML/foo/var.2/ would be packaged as qml-module-foo-var2

$QT_INSTALL_QML/foo.2/var/ would be packaged as qml-module-foo2-var

$QT_INSTALL_QML/foo2/var.2/ would be packaged as qml-module-foo2-var2

What do you think of this? I plan to start packaging stuff (with the 
transitional packages required) either for 5.2.1 as soon as the transition 
finishes (we are almomst there) or for 5.3.0.

Final notes: yes, I know that this name changing story will definitely need 
quite some transitional packages, but I think the effort is worth to get this 
done as properly as possible for Jessie.

[0] <http://qt-project.org/doc/qt-5.0/qtqml/qtqml-modules-topic.html>
[1] <http://qt-project.org/doc/qt-5.0/qtqml/qtqml-modules-identifiedmodules.html>
[2] <http://qt-project.org/doc/qt-5.0/qtqml/qtqml-modules-legacymodules.html>
[3] <http://qt-project.org/doc/qt-5.0/qtqml/qtqml-modules-qmldir.html>
[4] qmake -qt5 -query outputs QT_INSTALL_QML:/usr/lib/x86_64-linux-gnu/qt5/qml
[5] <http://qt-project.org/doc/qt-5.0/qtdoc/modules.html>

Kinds regards, Lisandro.

Sea estricto cuando envíe y tolerante cuando reciba. En otras palabras, solo
envíe paquetes que cumplan rigurosamente con lo estándares, pero espere
paquetes que tal vez no cumplan del todo y trate de lidiar con ellos.
  Andrew S. Tanenbaum, de su libro "Computer Networks"

Lisandro Damián Nicanor Pérez Meyer
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.alioth.debian.org/pipermail/pkg-kde-talk/attachments/20140330/1aff72da/attachment.sig>

More information about the pkg-kde-talk mailing list