Tag: blambers

  • O protocolo mais perfeito dos imperfeitos

    Um pouco de contexto

    Como uma XMPP Lady que se preze, atuo vigilante e incessantemente no fediverso e canais XMPP lutando para desmistificar diversas questões relacionadas ao ecossistema do XMPP.

    Essas intervenções acontecem em diferentes tópicos relacionados, desde seu funcionamento em termos de protocolo, na parte backend (servidor) e até a operação dos apps que atuam como clientes de mensagens.

    Na parte de clientes é onde surgem as maiores questões. O protocolo tem uma característica de extensibilidade. Os padrões de funcionamento são organizados em XEPs (XMPP Extension Protocol) e a comunidade de desenvolvedores e organizações envolvidas atuam para implementar essas definições.

    Por se tratar de um software livre, o XMPP tem seus padrões definidos por uma entidade – a XSF (XMPP Standards Foundation) – que trabalha as propostas de extensão e as documenta para que sejam adotadas pela comunidade.

    No dia a dia

    Seguido pessoas leigas e técnicas fazem comparações do WhatsApp, Telegram, Signal e etc com o XMPP. São alegações diversas, como:

    • No WhatsApp é mais fácil migrar de aparelho sem perder as mensagens;
    • No WhatsApp não me preocupo com chaves de segurança;
    • Para ter um novo contato no WhatsApp só tenho que pegar o número de telefone do contato ou ler um QR Code;

    E aí entra a XMPP Lady em ação…

    • No WhatsApp é mais fácil migrar de aparelho sem perder as mensagens;
      No XMPP também! No seu iOS ou Android, ao fazer a migração de aparelhos usando o mecanismo do próprio sistema operacional, seus aplicativos e dados (incluindo suas chaves de criptografia) são movidas de um aparelho para outro transparentemente!
    • No WhatsApp não me preocupo com chaves de segurança;
      E por que você se preocupa com elas no XMPP se elas fazem parte do seu backup ou da migração entre aparelhos?
    • Para ter um novo contato no WhatsApp só tenho que pegar o número de telefone do contato ou ler um QR Code;
      E por que você não pede também o QR Code ou link de convite de contato para quem também usa XMPP? Ou porque não pede o ID da pessoa – sendo este ID um mero endereço e-mail?

    Para além de questões básicas como essa – que demonstram uma pura resistência sem nenhum fato, de fato (perdão a redundância), eu exemplifico um outro comparativo em formato de “FAQ”:

    • Se você trocar de celular ou simplesmente redefinir o telefone de fábrica e não tiver backup do WhatsApp, o que acontece com suas mensagens?

      Resposta: você perde suas mensagens históricas e continua conversando dali para frente.

      E no XMPP? Mesma coisa. Você precisa se backup da conta para ter acesso às mensagens históricas.
    • Se o seu telefone estiver na assistência técnica, como você faz para acessar seu WhatsApp?

      Resposta: se tiver um WhatsApp web já registrado, poderá continuar acessando dali. Se não tiver, ou fica sem acesso ao WhatsApp e incomunicável com as pessoas ou coloca seu número em outro chip, ativa num aparelho, loga no WhatsApp no aparelho e perde o acesso que tinha ao WhatsApp no aparelho anterior, causando uma bagunça nos seus históricos.

      E no XMPP? Você pode seguir usando sua conta em outro dispositivo que já tinha ativado e seguir a vida normalmente. Quando o aparelho voltar da assistência, ele vai sincronizar as mensagens não baixadas ainda do servidor (só varia quanto tempo cada servidor armazena offine, geralmente no mínimo 1 semana). Outra opção é acessar sua conta de outro aparelho ou cliente web qualquer e seguir se comunicando com as pessoas – mas só será possível ler as mensagens a partir do momento em que o novo dispositivo ingressou na sua conta.

    O protocolo perfeito

    Fora as comparações corriqueiras com WhatsApp, surgem as questões relacionadas a outros mensageiros descentralizados. Os mais conhecidos são o Matrix e o Delta Chat.

    De uma forma sucinta vou colocar aqui uma listinha de razões pelas quais eu considero o XMPP o protocolo perfeito dentre os imperfeitos – que são todos, sejam livres ou proprietários.

    • Maturidade: o XMPP está conosco há 26 anos, exatamente o tempo que eu, quem vos escreve, tem de mercado de tecnologia. Seu projeto teve início em 1999.
    • Flexibilidade: há quem diga que a extensibilidade do protocolo dificulta as coisas pros usuários… mas o que eu acredito é que é inerente a um protocolo livre não criar definições estanques sobre como cada servidor ou cliente vai funcionar e que funcionalidades vai implementar: isso fica a cargo da comunidade de desenvolvedores e da comunidade de usuários ajudar na definição do caminho.
    • Multicanal: o XMPP permite a comunicação por texto, voz e vídeo, diferente das outras soluções livres que mencionei antes desta lista.
    • Privacidade: se a pessoa está buscando anonimato, não será no XMPP que ela encontrará essa possibilidade. O XMPP é um protocolo que oferece toda privacidade necessária para sua comunicação e, operando em conjunto com OMEMO, garante a também a integridade e a confidencialidade do conteúdo das mensagens que você trafega. Os servidores XMPP atuam como relays, que conectam duas partes: remetente e destinatário; e, nesse sentido, o máximo de informação sua que há num servidor XMPP, por padrão, são metadados como timestamp de conexão, nome de usuário, nome de usuário de quem está na sua lista de contatos XMPP (chamada roster) e, habilitando um debug no servidor, pode-se auditar com que outro usuário você trocou mensagem, mas nunca o conteúdo dessas mensagens. Inclusive, mensagens offline esperando ser entregues para um dispositivo que está desligado ficam também criptografadas pois apenas o destinatário pode decodificá-la.
    • Federação: o fato de você poder criar sua conta no servidor XMPP administrado por uma comunidade ou pessoa que você confia dá um grau extra de conforto na hora de usar o serviço. Então você tem um ecossistema de milhares de servidores XMPP para escolher onde ter sua conta e diminui drasticamente a possibilidade de ser um alvo potencial de um roubo de dados visto que essas estruturas são pequenas demais para gerar qualquer interesse escuso. Pelo fato de ser distribuído, também reduz enormemente a possibilidade de um “apagão” generalizado pois cada servidor XMPP é independente.

    Facilitando o ingresso de novos usuários

    Por fim, quero deixar algumas dicas pessoais sobre como melhorar a jornada de ingresso de novos usuários no ecossistema XMPP.

    • Evite o “hoping”: pelo fato de haver muitos clientes disponíveis para uso, você pode até ficar testando esses clientes todos para você, mas evite ficar indicando mil opções para usuários novatos.
    • Eleja 1 cliente para Android, 1 para iOS, 1 para Windows, 1 para Linux e 1 para macOS e indique sempre esses para seus contatos – de preferência indique os aplicativos que são referência.

      Pessoalmente eu indico:
      isaCloud para Android – baseado no Conversations
      Gajim para Windows e Linux
      Monal para iOS, ipadOS e macOS
    • Evite dar detalhes técnicos sobre o protocolo porque as pessoas não querem saber sobre isso. Você acha que elas sabem alguma coisa do WhatsApp ou do Telegram?
    • Não explique sobre criptografia a menos que perguntem diretamente a você.

    E, por fim…

    Não tente convencer alguém de que a Zeta (nome fictício) é uma empresa vilã e por isso essa pessoa deve sair imediatamente do mensageiro da empresa… aborde seus familiares ou amigos com a ideia de que eles podem deixar o mensageiro padrão pras questões de trabalho e de “resolver problemas” e usar o isaCloud – ou outro serviço XMPP – para conversar com as pessoas que são mais importantes para elas. ☺️

    Pela atenção, obrigada!
    Isadora




    Links:
    https://isacloud.im
    https://xmpp.org
    https://conversations.im

  • Mais uma ampliação de estrutura

    Há alguns dias subi mais um servidor no “farm” do isaCloud. Eu havia contratado uma instância de computação na Scaleway para isolar o monitoramento da infraestrutura do datacenter primário e vinha funcionando bem… porém, como a gente sempre quer “subir mais uma coisinha”, o pequeno servidor de 1vcpu e 1GB para monitoramento rapidamente ficou pequeno demais.

    Conversando com o Kari`boka do xmpp.eco.br, subi uma nova instância de computação no Contabo. Recursos de sobra para realizar o monitoramento da estrutura e também mandar para lá algumas coisinhas que estavam num raspberry pi em casa – coisas acessórias, de monitoramento interno de casa, aplicação para fediverso e tal.

    Com esse novo servidor vou realocar também a questão da replicação do isaCloud [Messenger], para manter o funcionamento de failover dele na Contabo.

    Curiosidade: minha amiga (leiga em assuntos de tecnologia) me disse: “guria, daqui um pouco tu vai ter que ter um servidor [risos]” e eu respondi: “mas eu já estou com três!” 😁

    E uma outra pessoa me falou “tem que começar a monetizar, né? o isaCloud é top demais!” e eu respondi prontamente: o isaCloud não será monetizado porque eu já me sinto recompensada por porporcionar algo tão legal pras pessoas que eu gosto 💜

  • Alta disponibilidade acessível

    Venho há algumas semanas organizando uma forma de ter alta disponibilidade para o serviço isaCloud. É claro que o conceito de alta disponibilidade precisa ser de acordo com as demandas do “negócio” (entre aspas porque isaCloud é um serviço sem fins comerciais).

    O que eu tenho pensado:

    • Ter um cold site, isto é, um segundo datacenter (ou site secundário) com dados replicados que possa assumir o serviço
    • Não preciso ter failover automático
    • O chaveamento dos sites pode tolerar uma mudança e propagação de DNS (até 1h, digamos)

    Comecei configurando um simples lsync entre o datacenter A e o datacenter B. Estou há duas semanas mantendo essa replicação ativa de dados e configurações entre um servidor no Brasil e um na Holanda.

    Eu testei a virada de DNS de um dos domínios que tenho no isaCloud e a seguir compartilho o que funcionou e o que não funcionou:

    ✅ Consistência do histórico de mensagens
    ✅ Baixa latência para replicação
    ✅ Configurações do servidor e certificados
    ✅ Boot do serviço
    ✅ Reconexão de conversas com usuários de servidores externos
    🔴 Reconexão de conversas com usuários de outros domínios também do isaCloud

    Como mencionei ali em cima, eu virei apenas 1 domínio dos 5 que tenho no isaCloud e, nesse caso, a comunicação entre o domínio “migrado” pro site secundário e os demais que ficaram no site primário não funcionou bem porque os domínios que ficaram achavam ainda que o domínio em questão ainda era servido pelo site primário.

    Outra questão que não ficou clara para mim é sobre deixar previamente configuradas entradas de DNS SRV com menor prioridade para que a escolha pelo site secundário fosse automática. Mas isso tem uns poréns:

    • Pro meu teste não funcionou porque o site primário continuava acessível no target da entrada SRV já que os demais domínios seguiam funcionando lá
    • No caso de um failover automático pro site secundário através dessa entrada SRV com prioridade menor, o failback acabaria acontecendo automaticamente se o site primário voltasse a responder sozinho – porém os dados no site primário estariam desatualizados.

    Bem, ainda tô desenhando a melhor forma de fazer isso tudo:

    • Failover automático com faiback manual
    • Failover manual alterando o hostname pra onde os SRV apontam

    Num próximo post eu compartilho o que ficou decidido e como ficou implementado.

    Com carinho,
    Isadora.