Unity, le point technique
Après mon long article sur le support de Qt dans Ubuntu, je veux faire un court récapitulatif technique des différents Desktop Shell développés par Canonical. En effet, il y en a cinq au total, tous utilisant des technologies différentes, et il est donc relativement facile de s’emmêler les pinceaux et de ne plus savoir de quoi l’on parle.
Tableau récapitulatif des technologies utilisées :Desktop Shell | Graphisme | Gestionnaire de fenêtres | Lib. graphiques | Langages | Dév. actif | Licence |
---|---|---|---|---|---|---|
Netbook Remix Launcher | 3D | Mutter | Clutter + CluTK | C | Non | GNU GPLv3 |
Netbook Launcher EFL | 2D | Metacity | EFL + GTK | C | Non | GNU GPLv3 |
Unity v1 (branche 0.2) | 3D | Mutter | Clutter + CluTK | C et Vala | Non | GNU GPLv3 |
Unity v2 (branche 3.0) | 3D | Compiz | Nux | C++ et Vala | Oui | GNU GPLv3 |
Unity 2D | 2D | Metacity | Qt | C++ et QML | Oui | GNU GPLv3 |
Le choix de la licence GNU GPLv3 est excellent et garantit que personne ne pourra rendre ces projets propriétaires, à l’exception notable de Canonical lui-même, puisque la signature d’une cession de droits d’auteur est nécessaire pour pouvoir y contribuer.
On ne peut que constater que Canonical n’a pas ménagé ses efforts en terme de recherche et développement. L’ensemble des technologies graphiques libres ont été évaluées et testées en pratique, et mises au service d’une volonté d’innovation ergonomique. Les choix faits par Canonical me semblent dès lors d’autant plus légitimes, car ce ne sont pas des actes gratuits faits juste pour troller, mais des conclusions objectives de mois de programmation et d’expérimentation.
Switch du C vers le C++
En fait, le plus remarquable est l’abandon du C en faveur du C++. On peut considérer que le choix technique du C, un langage de programmation non objet, pour faire des interfaces graphiques, par nature orientées objet, était le péché originel du bureau GNOME. Les bibliothèques passent du C (GTK, Clutter, CluTK et EFL) au C++ (Qt et Nux), tout comme le gestionnaire de fenêtres 3D qui passe de Mutter, écrit en C, à Compiz, qui vient d’être totalement réécrit en C++.
Enfin, d’autres technologies plus modernes font leur apparition, comme Vala, qui est le seul choix technique de Unity v1 conservé dans Unity v2, et QML, le nouveau langage déclaratif de description d’interfaces graphiques pour Qt. À titre personnel, l’idée d’utiliser QML m’est beaucoup plus sympathique que de programmer de l’OpenGL bas niveau avec Nux, et je suis donc vraiment séduit par Unity 2D.