O básico para criar uma conta XMPP

Olá! Neste post, vou explicar conceitos básicos do XMPP, e guiar o leitor para a criação de uma conta. Se atente aos conceitos essenciais explicados aqui, pois eles serão necessários na etapa de criação da conta. Prometo escrever em uma linguagem acessível! 😉

O que é o XMPP?

O termo XMPP é a abreviação de eXtensible Messaging and Presence Protocol (Protocolo Extensível de Mensagens e Presença). Entre outras coisas, ele permite, principalmente, a troca de mensagens entre usuários (Mensageria) e informações de Presença, como status de online, offline, afastado; uma nota de presença; e informação do humor atual.

Ele é um protocolo padronizado. Seu núcleo foi padronizado através de RFCs, definidas pela Internet Engineering Task Force (IETF), um grupo internacional que promove padrões para a internet. Existem também as XEPs que o padronizam, definidas pela XMPP Standards Foundation (XSF), e nós veremos o que é uma XEP mais adiante.

Decentralização

Na maior parte das plataformas mais conhecidas (WhatsApp, Facebook Messenger, Discord, Telegram…), a mensagem passa por um intermediador central. Isso é conhecido como modelo centralizado e pode ser entendido no seguinte diagrama:

Alice pode mandar uma mensagem para Bob, e receber uma mensagem de volta. Mas tudo é intermediado por apenas um servidor central.

Já o XMPP opera de maneira parecida com e-mail:
Alice, Bob, Carlos, Diego e Elisa podem conversar entre si.

  • No exemplo acima, Alice e Carlos podem se comunicar via XMPP usando o mesmo servidor, de maneira similar ao modelo centralizado.
  • No entanto, se Alice quiser se comunicar com Bob, a comunicação será intermediada entre dois servidores (como se fosse e-mail: uma comunicação entre Gmail e Hotmail, por exemplo). Nesse caso, um servidor encaminha para o outro as mensagens.
  • Isso vale para ambos Alice, Bob, Carlos, Diego e Elisa entre si.

Aberto: vários servidores, vários clientes

Por ser um protocolo aberto e padronizado, é possível implementar vários clientes para a comunicação com servidores, e também vários softwares-servidor. O leitor pode estar pouco familiarizado com isso, mas vamos explicar um pouco mais devagar.

Nos diagramas anteriores, omitimos uma peça essencial: o cliente. Ele pode ser interpretado como o "aplicativo" que Alice (ou Bob) estão usando para se comunicar via XMPP. Por exemplo, você pode estar lendo esse texto de algum dos diversos clientes web: Firefox, Chromium, ou outro. Assim como você pode ter vários clientes web, você pode ter vários clientes XMPP.

Existem uma série deles, os quais o leitor pode escolher para usar XMPP. Vamos listar alguns, baseados em software livre:

Mas, antes de continuarmos falando deles e de quais escolher, vamos falar das XEPs.

Extensibilidade: o que são as XEPs?

O X em XMPP quer dizer "extensível". Essa extensibilidade ocorre através das XEPs. "XEP", abreviação para "XMPP Extension Protocol" (Protocolo de Extensão XMPP), é como uma ideia para adicionar uma nova funcionalidade ao XMPP. Por exemplo, as seguintes funcionalidades são XEPs:

  • XEP-0045 (Multi-User Chat): permite a criação de salas com mais de um usuário (similar aos "grupos" do Telegram e do WhatsApp).
  • XEP-0084 (User Avatar): permite a troca de avatares de usuários (ou seja, no exemplo, Alice enviaria o avatar dela para Bob, e vice-versa).
  • XEP-0107 (User Mood): especifica a comunicação de humor entre os usuários.
  • XEP-0384 (OMEMO Encryption): especifica criptografia de mensagens entre clientes.
  • E muitas outras mais.

Cada uma delas define tanto seu propósito, como uma ideia para sua implementação. As XEPs passam por um período de análise, passando por diversos estágios até serem consideradas em estágio "final" ou "ativo" (quando foram bem-sucedidas). Apesar disso, algumas que estão em estágio "experimental" já são amplamente utilizadas (como a que define a criptografia OMEMO).

Outro ponto importante de se entender é que as XEPs podem ser definidas para clientes e/ou servidores. Portanto, é importante escolher um conjunto de cliente+servidor para sua experiência que contemplem as XEPs essenciais para seu uso. Por exemplo:

  • Um servidor sem suporte à XEP que define chat multiusuário pode te deixar sem a possibilidade de criar uma sala para conversar com seus amigos.
  • Um cliente sem suporte à criptografia OMEMO pode te deixar com conversas sem criptografia, e comprometer sua privacidade (uma vez que os servidores intermediários terão acesso ao conteúdo das mensagens).

Como criar uma conta?

  1. Escolhendo um servidor.
    Agora que entendemos o que são as XEPs, vamos selecionar um servidor que seja compatível com 100% delas, para simplificar as coisas.

    1. Acesse uma lista de servidores XMPP, como https://providers.xmpp.net (particularmente, gosto muito desse). Ou: https://list.jabber.at, https://xmpp.404.city, https://xmpp.love.
    2. Verifique, para cada servidor, a compliance em https://compliance.conversations.im. Por exemplo, verificamos que o servidor 01337.io não tem suporte a todas as XEPs, o que o desqualificaria para nossa seleção.
      • Obviamente, você pode se inscrever em um servidor que não suporte todas as XEPs, mas essa é uma escolha que deve ser feita com sabedoria, considerando seus conhecimentos sobre as XEPs e sua capacidade de prever seu caso de uso.
    3. Faça isso até encontrar os servidores com 100% de compatibilidade, ou, alternativamente:

    No entanto, ao fazê-lo, você com certeza encontrará vários servidores que possuem 100% de compatibilidade com as XEPs. A partir daí, você poderá empregar alguns critérios de "desempate" para decidir em qual deles fará sua conta. Dentre eles:

    • Local onde é hospedado e leis relacionadas à proteção de dados.
    • Políticas de criação de contas.
    • Se a conta pode ser recuperada em caso de perda da senha.
    • Se a conta é deletada após algum período de inatividade.
    • Possibilidades de contato com o administrador do servidor, e se ele fala uma língua que você também fala.
    • Tempo de existência do servidor e perspectiva de continuidade do serviço.

    Tudo isso pode ser buscado no site do servidor selecionado.

  2. Instalando um cliente.
    Existem vários clientes disponíveis. Pessoalmente, eu uso Gajim no meu GNU+Linux e Conversations no smartphone, e percebo uma boa adoção às XEPs a partir deles.
  3. Criando uma conta.
    Depois de escolhido o servidor, é hora de criar a conta. Existem duas formas de fazê-lo:

    • No cliente instalado, caso o servidor suporte a XEP que diz respeito à criação de contas pelo cliente.
    • No site do servidor.

    Ao criar a conta, atente-se para o nome de usuário, que será único e imutável. Depois de criada a conta, você terá um Jabber ID (abreviado para JID), no estilo de e-mail: usuario@servidor.tld.

  4. Acessando a sua conta. Para acessar sua conta, simplesmente insira seu Jabber ID e sua senha em um cliente e faça o login. Você pode usar diversos clientes com a mesma conta.
  5. Adicionando contatos e iniciando conversas.
    Para adicionar um contato, você precisa do Jabber ID (JID) dele, assim como em um e-mail você precisaria do endereço completo. Após isso, é só adicionar através do seu cliente selecionado.

Essas são as informações básicas para começar a usar o XMPP. Em outros tutoriais, eu poderei explicar alguns outros conceitos após a criação de conta: como usar criptografia para conversar de maneira privada; como usar os recursos de presença e de humor; entre outros. Enquanto isso, acredito que o leitor poderá, autonomamente, descobrir os principais recursos desse excelente protocolo! 😀

Estudante de computação, bashista.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Post comment