Introduction
Une installation Jami se compose de deux composants :
le daemon et la bibliothèque Jami, et
le client (c’est-à-dire l’interface utilisateur).
Pour utiliser Jami, le daemon/bibliothèque Jami est toujours nécessaire, puisqu’il s’agit du cœur de Jami qui contient toute la connectivité, les fonctions de communication, la cryptographie et la logique multimédia. Il utilise des bibliothèques telles que OpenDHT, PJSIP, GnuTLS et FFmpeg, et dispose de plusieurs API, notamment DBus, libwrap (bibliothèque partagée), JNI et REST. Ces API permettent d’interagir avec Jami sans passer par une interface utilisateur graphique (surtout utile pour utiliser Jami dans un environnement sans affichage/serveur), de construire des outils d’automatisation/scripts autour de Jami, et de développer des interfaces utilisateur personnalisées pour Jami.
Le client (c’est-à-dire l’interface utilisateur) peut varier en fonction du système d’exploitation et/ou de la plateforme utilisée. Par exemple, sur les systèmes Android/Replicant, il s’agit de jami-client-android, sur les système iOS c’est jami-client-ios, et sur GNU/Linux, macOS et Windows, c’est jami-client-qt. Un client jami-client-gnome basé sur GTK pour GNU/Linux et un client jami-client-macos pour macOS ont existé mais ont été abandonnés en faveur du client multi-plateforme jami-client-qt multiplateforme basé sur le framework Qt.
Sur les systèmes GNU/Linux, jami-client-qt peut être configuré et construit pour utiliser l’une des deux API principales pour communiquer avec le daemon/bibliothèque Jami:
libwrap : Quand jami-client-qt est configuré pour utiliser libwrap (ce qui est toujours le cas sur macOS et Windows), il utilise l’API de la bibliothèque partagée, et il n’y a pas de processus daemon séparé. Cela a l’avantage de rendre l’exécution plus efficace que lors de l’utilisation de l’API DBus mentionnée ci-dessous, en échange d’une flexibilité moindre (ne pas pouvoir interagir avec Jami via DBus lors de l’utilisation de libwrap).
Les paquets Jami distribués via dl.jami.net sont actuellement tous configurés pour utiliser l’API libwrap.
DBus : Quand jami-client-qt est configuré pour s’appuyer sur DBus, il communique avec le daemon Jami via l’API DBus, et le daemon s’exécute en tant que processus séparé. Cela est très flexible pour communiquer et contrôler le daemon par d’autres moyens (par exemple, des petits scripts utilitaires) en même temps que le client de l’interface utilisateur Qt. Le coût associé à cette flexibilité se paie dans le surcoût de l’utilisation de DBus.