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.
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