KDE Frameworks 5

Les bibliothèques KDE, utilisées pour construire les applications KDE, se modernisent avec la sortie de KDE Frameworks 5.0 début juillet et 5.1 début août. La principale différence par rapport à KDE Platform 4/kdelibs est la modularisation : les composants sont désormais découplés, les dépendances réduites au maximum, de telle sorte qu’il n’est plus nécessaire de lancer une artillerie KDE complète pour lancer une application qui en utilise seulement une fraction. La première version proposait déjà une cinquantaine de composants, apportant des fonctionnalités bienvenues et manquantes dans Qt (bien qu’une partie a déjà été intégrée dans Qt 5), avec très peu de dépendances en dehors de Qt lui-même ; KDE Frameworks 5.1 porte le compte à une soixantaine. L’objectif est de ne plus faire de différence entre une application Qt et une application KDE.

Organisation des dépendances

Les modules des KDE Frameworks 5 se divisent en trois catégories, selon leurs dépendances à l’exécution :

  • les éléments fonctionnels n’ont aucune dépendance ;
  • les éléments d’intégration peuvent avoir des dépendances afin d’intégrer les éléments fonctionnels au système d’exploitation ou à la plateforme ;
  • les solutions, par contre, sont libres au niveau des dépendances.

De même, ils se répartissent en trois niveaux (tiers) selon leurs dépendances lors de la compilation : au premier niveau, les seules dépendances autorisées sont Qt et d’autres bibliothèques externes à KDE et à Qt ; au deuxième niveau, les modules ne peuvent dépendre que du premier niveau ; au troisième niveau, les dépendances peuvent être enregistrées envers tous les niveaux.

Ces deux hiérarchies ne sont pas orthogonales : une solution de troisième niveau peut dépendre d’autres solutions d’autres niveaux.

Dépendances autorisées

Fonctionnalités

Les modules fonctionnels proposent une série de fonctionnalités bien utiles à un grand nombre d’applications, comme :

  • KArchive gère les techniques de compression les plus populaires, comme ZIP, 7-Zip, TAR ou XZ : il peut compresser et décompresser tant des flux de données (GZip, BZip2, XZ) que des archives proprement dites (7Zip, Ar, TAR, ZIP) ;
  • KPlotting propose des fonctionnalités simples pour l’affichage de graphiques, en ce compris l’anticrénelage ou la superposition (en quelque sorte, il s’agit d’une version simplifiée de Qwt) ;
  • Threadweaver facilite l’écriture de code multifil grâce à la notion de travaux (jobs), avec une gestion des dépendances et une intégration au système de signaux et de slots de Qt ;
  • KConfig s’occupe de la configuration des applications, avec une génération de code pour la lecture et l’écriture de ces fichiers, mais également le lien entre les fichiers de configuration et l’interface graphique pour changer les paramètres.

Côté intégration, Sonnet fait le lien avec la correction orthographique (tant aspell, hspell, hunspell qu’enchant) et Solid fournit un accès aux données issues directement du matériel (niveau de batterie, état du réseau, etc.). Dans ce dernier cas, pour certaines fonctionnalités, certaines dépendances à l’exécution sont requises. KI18n intègre GNU gettext, une bibliothèque pour la gestion des traductions ; ce module facilite le travail avec d’autres flux de traduction, plus souvent basés sur gettext.

Jusqu’à présent, ces fonctionnalités sont du premier niveau. Au troisième, pour les solution, KIO propose une interface d’édition de fichiers identique, qu’ils soient stockés en local ou en distant. KService propose des fonctionnalités avancées de gestion des extensions, comme leur localisation sur le système de fichiers.

Sources

Frameworks 5 (dont l’image), First release of KDE Frameworks 5, Second release of KDE Frameworks 5

Sortie d’Inqlude 0.7

Après trois années de développement, l’idée d’Inqlude, soit un dépôt de bibliothèques, un gestionnaire de paquets centré sur Qt, arrive à un certain niveau de maturité : l’auteur considère le projet comme prêt pour les utilisateurs précoces. Notamment, l’outil est utilisé pour générer le site Web inqlude.org ; parmi les bibliothèques présentes, un grand nombre provient des KDE Frameworks 5. À terme, il se veut l’équivalent de Bower ou npm en JavaScript, de RubyGems ou encore de pip pour Python.

Les métadonnées sont gérées, comme d’autres avant lui, par des fichiers de manifeste, écrits en JSON. La gestion du téléchargement et de l’installation des paquets n’est pas encore prête : une implémentation simple est d’ores et déjà disponible, mais il manque encore des métadonnées pour rendre le processus utile.

Les prochaines versions sont déjà planifiées :

  • 0.8 : la documentation sera améliorée pour faciliter les contributions ;
  • 0.9 : les fichiers de manifeste ne pourront plus changer de structure
  • 1.0 : l’outil pourra gérer des paquets en local, ce qui le rendra effectivement utile pour les utilisateurs et développeurs d’applications Qt.

En l’état, le projet permet déjà d’avoir un aperçu de l’écosystème Qt, des diverses bibliothèques non inclues dans la distribution officielle de Qt mais néanmoins utiles.

Source : Announcing first Inqlude alpha release

Nouvelle licence pour Qt : LPGL 3

Depuis les débuts de Qt, il y a une vingtaine d’années, l’édition libre existe. Elle fut d’abord limitée aux plateformes UNIX et X11, puis s’est progressivement ouverte, notamment pour Windows et divers systèmes embarqués. De même, la licence a évolué : depuis une licence non standard, de plus en plus libre avec les versions (qui se souvient de la QPL ?), Qt 4 est passé à la GPL 2, ce qui a eu pour effet d’éliminer les conflits juridiques qui empêchaient d’utiliser Qt dans une application GPL, avec une mise à jour vers la GPL 3 dès sa diffusion par la FSF. L’une des principales fonctionnalités de ces licences est d’imposer que les logiciels dérivés (soit tout utilisateur) publient leur code source sous la même licence (« licence virale »). En 2009, Qt 4.5 devient disponible sous la LGPL 2.1 : la licence commerciale n’est plus requise pour un développement fermé, la LGPL n’impose plus la licence sur les produits dérivés.

Cependant, cette version de la LGPL n’est pas parfaite : on peut lui reprocher de n’être pas assez claire au sujet des modifications de la bibliothèque, Qt en l’occurrence. Ainsi, bien qu’en violation totale de l’esprit de la licence, certains constructeurs interdisent l’installation de versions modifiées de la bibliothèque sur leurs appareils. La FSF a corrigé cette faille dans la LGPL 3, qui formalise de manière juridique l’intention première, ce qui protège mieux la liberté des utilisateurs. C’est pour cette raison que Digia proposera Qt 5.4 également sous licence LGPL 3, en plus de la LGPL 2.1 et de la licence commerciale.

Nouveaux modules

Cependant, certains modules de Qt ne seront disponibles qu’en LGPL 3 et sous une licence commerciale, comme le nouveau Qt WebEngine (pour l’édition libre). D’autres nouveaux modules pourront être libérés (alors que Digia ne les prévoyait que dans l’édition commerciale !), comme Qt Canvas3D (support complet de WebGL à l’intérieur de Qt Quick) ou Qt WebView (intégration assez légère du moteur de rendu Web natif dans Qt, actuellement uniquement pour Android). De même, le style Android pour les Qt Quick Controls sera disponible : il posait problème avec la LGPL 2, puisqu’il utilise des composants sous licence Apache 2.0, une licence incompatible, mais pourra être intégré grâce à la LPGL 3.

Impact sur les utilisateurs de Qt

Tous ceux qui utilisaient Qt sous la licence GPL 3 n’auront aucun souci à se faire, étant donné la compatibilité avec la LGPL 3. Tous les modules de Qt 5.3 seront toujours disponibles sous LGPL 2.1, ce qui ne posera aucun problème. Par contre, si vous mettez à jour vers Qt 5.4 et utilisez l’un des nouveaux modules disponibles uniquement en LGPL 3, vous devrez vous plier aux exigences de la nouvelle version.

Impact sur KDE

Lors du lancement du projet KDE, un environnement de bureau libre entièrement basé sur Qt, un accord juridique a été établi entre Trolltech (qui développait Qt) et KDE e.V. (l’entité légale derrière KDE), afin de s’assurer que Qt reste toujours disponible sous une licence libre : l’idée est que, si le projet quittait la scène du libre, le code puisse toujours évoluer, sans remettre en question KDE (cette utilisation d’une bibliothèque pas entièrement libre a été un frein à son adoption à la fin des années 1990). Cet accord est géré par la KDE Free Qt Foundation, administrée tant par KDE e.V. que par Digia.

Ce changement de licence est une occasion d’améliorer le contrat liant ces deux entités. Notamment, toutes les plateformes, mobiles ou non, y sont intégrées (soit Windows, OS X, iOS, Windows RT, actuellement). Également, la fondation reçoit les droits sur toutes les contributions au Qt Project.

Voir aussi les textes de licence : GPL 3, LGPL 3.

Sources : Adding LGPL v3 to Qt, Protecting Software Freedom – the Qt License Update

Unification de l’écosystème Qt

Les dernières années furent relativement mouvementées pour Qt : le passage de Trolltech à Nokia, la création du Qt Project, puis le passage de Nokia à Digia, bientôt la création d’une société indépendante de Digia (mais toujours entièrement contrôlée par Digia) qui s’occupera exclusivement de Qt. Les objectifs de Trolltech et Digia sont fort similaires : Qt est un produit qu’ils vendent, les revenus servant à développer l’outil, à l’améliorer, le résultat étant visible tant dans l’édition gratuite (open source) que commerciale. D’ailleurs, actuellement, les trois quarts des modifications du code proviennent d’employés de Digia ; en plus de gérer une grande partie de l’infrastructure hébergeant le projet, Digia est donc la première société à contribuer au projet Qt.

Cependant, les versions commerciale et libre ont commencé à diverger : outre le fait que l’édition payante offre, en sus du support, une série de bibliothèques (Qt Quick Entreprise Controls, Charts, Qt Quick Compiler, etc.) et est adaptée aux plateformes embarquées (QNX, VxWorks, etc.), les installeurs et même les sites Web sont différents (http://qt.digia.com/ pour l’édition commerciale, https://qt-project.org/ pour le libre). Par conséquent, ces deux éditions entrent en compétition directe l’une avec l’autre, se présentant comme des produits opposés, avec des difficultés pour passer d’une édition à l’autre.

Pour réduire cette fracture, Digia s’apprête à créer une nouvelle société, dont le seul objet sera le développement de Qt. Elle sera cependant entièrement administrée par Digia. En même temps, le site Web côté Digia pour Qt sera retiré, au profit d’un site unique pour les deux éditions, qui donnera alors une vue plus large de l’écosystème Qt, en comparant les éditions libre et payante. Également, les paquets d’installation seront rationalisés, avec un seul installateur pour les deux éditions : la migration d’une édition à l’autre sera plus simple, tout en réduisant la charge de travail lors de chaque version. L’objectif est de fournir des paquets mieux testés et donc de meilleure qualité (il ne faudra plus tester les deux séparément).

Le plan a d’ores et déjà été discuté lors du Qt Contributor Summit, qui s’est déroulé en juin dernier à Berlin, avec les principaux contributeurs : les premiers éléments devraient être visibles avec la sortie de Qt 5.4. L’inconvénient, déjà reporté par la communauté, serait une plus grande difficulté de distinguer le contenu réservé à l’édition commerciale, payante.

Sources : Defragmenting Qt and Uniting Our Ecosystem, Digia to Streamline its Organizational Structure