Introducción
Una instalación Jami normalmente tiene dos componentes principales:
la daemon/library Jami, y
el cliente (es decir, front-end o interfaz de usuario).
Para usar Jami, siempre se necesita el demonio/biblioteca Jami, ya que es el núcleo de Jami y contiene toda la conectividad, comunicación, criptografía y lógica de medios. Utiliza bibliotecas como OpenDHT, PJSIP, GnuTLS y FFmpeg y tiene varias API, incluidas DBus, libwrap( biblioteca compartida), JNI y REST. Estas API hacen posible interactuar con Jami sin pasar por una interfaz gráfica de usuario( especialmente útil para usar Jami en una configuración sin cabeza / servidor), crear herramientas/scripts de automatización alrededor de Jami y crear interfaces de usuario personalizadas para Jami.
El cliente (es decir, la interfaz de usuario) depende del sistema operativo y/o plataforma que se utilice. Por ejemplo, en sistemas Android/Replicant, esto sería [jami-client-android] (https://git.jami.net/savoirfairelinux/jami-client-android), en sistemas iOS esto sería [jami-client-ios] (https://git.jami.net/savoirfairelinux/jami-client-ios), y en GNU/Linux, macOS y Windows sería jami-client-qt. También solía haber un jami-client-gnome basado en GTK para GNU/Linux y un jami-client-macos para macOS, los cuales quedaron obsoletos en favor del jami-client-qt multiplataforma más nuevo basado en el marco Qt.
En los sistemas GNU/Linux, jami-client-qt se puede configurar y construir para usar una de las dos API principales para comunicarse con el daemon/library Jami:
libwrap: Cuando jami-client-qt está configurado para usar libwrap (que siempre es el caso en macOS y Windows), usará la API de biblioteca compartida de Jami daemon y no habrá un proceso de demonio separado. Esto tiene la ventaja de que las cosas son algo más eficientes que con la API de DBus mencionada a continuación, a cambio de menos flexibilidad (no poder interactuar con Jami a través de DBus cuando se usa libwrap).
Los paquetes Jami distribuidos a través de dl.jami.net actualmente, están todos configurados para usar la API libwrap.
DBus: Cuando se configura jami-client-qt para usar DBus, se comunicará con el demonio Jami a través de su API DBus, y el demonio se ejecutará como un proceso separado por sí mismo. Esto es muy flexible para comunicarse y controlar el demonio a través de otros medios (por ejemplo, pequeños scripts de utilidad) simultáneamente, mientras que el cliente Jami basado en Qt también lo usa e interactúa con él. El costo asociado de esta flexibilidad adicional es la sobrecarga de usar DBus.