Introducción

Una instalación de Jami tiene dos componentes principales:

  1. la daemon/library Jami, y

  2. el cliente (es decir, front-end o interfaz de usuario).

Para usar Jami, siempre se necesita el daemon/library Jamie, 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 APIs permiten interactuar con Jamie sin pasar por una interfaz gráfica de usuario (especialmente útil para usar Jami en una configuración sin interface local/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) puede variar según el sistema operativo y/o la plataforma que se utilice. Por ejemplo, en sistemas Android/Replicant, este sería jami-client-android, y en GNU / Linux, Windows y macOS, este 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, que quedaron obsoletos a favor de jami-client-qt multiplataforma más reciente y 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:

  1. 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 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.

  2. DBus: cuando jami-client-qt está configurado para usar DBus, se comunicará con el demonio Jami a través de su API DBus, y este 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.