Conceitos Jami

O Jami é uma plataforma bastante complexa que interage com muitos componentes diferentes e introduz muitos conceitos novos. Este manual destina-se a ajudá-lo a compreender como o Jami funciona, como desenvolver para o Jami e como contribuir para o projeto.

Para resumir rapidamente e ajudá-lo a encontrar a parte do manual que procura, eis um breve resumo das diferentes secções:

O Jami é uma plataforma distribuída que permite aos utilizadores comunicar sem a necessidade de um servidor central. Assim, uma conta Jami consiste numa cadeia de certificados (CA, conta, dispositivo) que é utilizada para autenticar o utilizador e encriptar a comunicação. A conta é armazenada no dispositivo do utilizador e não num servidor.

Para isso, aqui está a página que explica o seu funcionamento: + account-management + jami-identifiers

Depois que a conta de usuário é criada, o usuário pode entrar em contato com outras pessoas enviando solicitações de conexão por meio de um DHT (https://opendht.net) depois de encontrar o ID do contato (conhecido diretamente ou por pesquisa no servidor de nomes). Se ambas as partes concordarem, elas tentarão primeiro criar um link TCP p2p (com o protocolo ICE), depois criptografá-lo via TLS e usá-lo como um soquete multiplexado para transmitir dados para vários protocolos, por exemplo:

  • contact-management

  • banned-contacts

  • connection-manager

  • name-server-protocol

Quando ambos os pares estão em sua lista de contatos, uma conversa é criada. Essa conversa é chamada de Swarm. Um swarm é sincronizado entre todos os dispositivos em uma conversa por meio do protocolo git (é um repositório git) e as conexões entre dispositivos em uma conversa são roteadas por um componente chamado drt (tabela de roteamento distribuído).

  • swarm

  • drt

Em seguida, a conexão pode ser usada para enviar mensagens, arquivos ou fazer chamadas (1:1 ou conferências).

  • calls

  • calls-in-swarm

  • file-transfer

  • conference-protocol

Nota

As chamadas podem ser totalmente substituídas por enxames de chamadas no futuro (exceto para contas SIP)

Por último, um utilizador pode ter vários dispositivos e muitas informações são sincronizadas entre eles.

  • synchronizing-profiles

  • synchronization-protocol