Introduction

Une installation de Jami comporte généralement deux composants principaux:

  1. le daemon et la bibliothèque Jami, et

  2. le client (c’est-à-dire l’interface front-end ou utilisateur).

Pour utiliser Jami, le daemon / bibliothèque Jami est toujours nécessaire, car il est le cœur de Jami et contient toute la connectivité, la 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 tête / serveur), de construire des outils d’automatisation / scripts autour de Jami et de construire 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, ce serait jami-client-android, et sur GNU/Linux, Windows et macOS, ce serait le jami-client-qt. Il y avait aussi un jami-client-gnome basé sur GTK pour GNU/Linux et un jami-client-macos pour macOS, qui ont tous deux été dépréciés en faveur de la plus récente multi-plateforme jami-client-qt basée 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/biblioteque Jami:

  1. libwrap: lorsque jami-client-qt est configuré pour utiliser libwrap (ce qui est toujours le cas sur macOS et Windows), il utilisera l’API de bibliothèque partagée de Jami daemon, et il n’y aura pas de processus de daemon séparé. Cela a l’avantage de rendre les choses un peu plus efficaces que avec l’API DBus mentionnée ci-dessous, en échange d’une moindre flexibilité (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.

  2. DBus: lorsque jami-client-qt est configuré pour utiliser DBus, il communiquera avec le daemon Jami via son API DBus, et le daemon sera exécuté comme un processus séparé par lui-même. Cela est très flexible pour communiquer et contrôler le daemon par d’autres moyens (par exemple de petits scripts utilitaires) simultanément tandis que le client Jami basé sur Qt l’utilise également et interagit avec lui. Le coût associé de cette flexibilité supplémentaire est le coût général d’utilisation de DBus.