Pour créer des logiciels, il vous faut certes un langage de programmation (comme le langage C, le Python ou le Vala), mais également un ensemble d'outils, mis à la disposition du système, pour pouvoir dessiner des fenêtres, gérer les "clics" de vos utilisateurs et également faire des actions plus évoluées. De tels outils sont disponibles dans des
bibliothèques de code.
Ces bibliothèques s'appellent ainsi parce qu'elles fonctionnent comme les vraies. Lorsque vous avez besoin de vous renseigner sur quelque chose, par exemple la fameuse recette de la dinde au whisky, vous allez à la bibliothèque, au rayon "Cuisine", et vous sortez le livre adéquat. Cela vous permet de profiter du savoir-faire culinaire de l'auteur du livre sans avoir à redécouvrir et à réécrire la recette vous-même. Avec le code, c'est pareil : les concepteurs de votre système ont développé une bonne fois pour toute de quoi faire des applications graphiques, alors autant s'en servir !
Cependant, avec Vala nous allons aller plus loin. Nous allons utiliser une bibliothèque nommée GTK+, qui non seulement se charge de nous proposer tout plein d'objets prêts à l'emploi pour ça, mais qui, en plus, est portable : GTK+ est en fait construite au-dessus du système, et peut être utilisée sur plusieurs systèmes en s'adaptant à chaque environnement. Un même programme peut être écrit avec GTK+ et fonctionner sous Windows, sous Linux, ou même sur téléphone portable dans un environnement comme Maemo.
Un peu d'histoire : GTK+ est une bibliothèque libre, initialement développée pour le logiciel de dessin The Gimp. Elle s'est popularisée et son usage est maintenant très répandu : des logiciels comme Inkscape, AbiWord ou encore Evolution l'utilisent. De plus, des environnements de bureaux entiers pour Linux, comme GNOME ou XFCE, sont basés sur GTK+. Cette bibliothèque est écrite et utilisable dans le langage C, utilisant de nombreux mécanismes regroupées dans une autre bibliothèque (non-graphique) nommée la
GLib.
Pourquoi la GLib ? Parce que les développeurs de GTK+ ont, au fil des ans, voulu faciliter le développement d'applications avec GTK+ en proposant des fonctionnalités qui simplifiaient la programmation. Le langage C est en effet un langage de bas niveau, il n'a pas été conçu initialement pour écrire des applications de haut niveau comme un lecteur vidéo ou un navigateur web. Il lui manque donc beaucoup de fonctionnalités pratiques à l'utilisation, mais qui demandent alors d'être réécrites par le développeur, ce qui est difficile. La GLib propose donc certaines de ces fonctionnalités, ainsi qu'un système de programmation orientée objet nommée GObject (nous verrons ce que c'est en temps et en heure).