- O servidor de colaboração open source Stalwart atingiu um novo marco ao implementar completamente o JMAP para calendário, contatos, armazenamento e compartilhamento de arquivos após 4 anos de desenvolvimento
- Com este lançamento, o Stalwart se tornou o primeiro servidor a oferecer suporte completo a toda a família de protocolos JMAP, fornecendo uma API unificada que vai além do e-mail e se estende por toda a colaboração
- Por meio de uma estrutura única baseada em JSON, substitui a complexidade e a ineficiência de WebDAV, CalDAV e CardDAV, oferecendo uma arquitetura amigável para desenvolvedores
- Os novos formatos JSCalendar e JSContact eliminam a complexidade de iCalendar e vCard e fornecem um modelo de dados claro e consistente
- Isso simboliza a evolução das tecnologias de colaboração baseadas em padrões abertos e sinaliza uma aceleração da inovação no ecossistema integrado de calendário, compartilhamento de arquivos e e-mail no futuro
Uma nova geração de protocolos
- Nos últimos anos, a IETF vem redefinindo a forma de sincronizar e compartilhar e-mails, calendários e contatos
- Com base no sucesso do já existente JMAP for Mail, foram introduzidos novos protocolos de extensão para calendário, contatos, arquivos e compartilhamento
- JMAP for Calendars - alternativa moderna ao CalDAV e ao agendamento do CalDAV
- JMAP for Contacts – alternativa robusta ao CardDAV
- JMAP for File Storage – substitui o armazenamento de arquivos baseado em WebDAV
- JMAP Sharing – sucessor moderno do WebDAV ACL
- JSCalendar - evolução limpa do iCalendar baseada em JSON
- JSContact – sucessor modernizado do vCard baseado em JSON
- Esses padrões oferecem um ecossistema unificado e elegante para substituir as tecnologias fragmentadas baseadas em WebDAV
- Resolvem décadas de problemas de compatibilidade e simplificam os recursos de colaboração com um modelo de dados único
Limitações das tecnologias existentes
- WebDAV, CalDAV e CardDAV são usados de forma estável há muito tempo, mas, por causa de seu design baseado em XML, são excessivamente verbosos e pouco consistentes
- Como os dados ficam espalhados entre cabeçalhos HTTP, payloads XML, dados iCalendar e outros locais, problemas de interoperabilidade entre cliente e servidor ocorrem com frequência
- iCalendar e vCard também carregam décadas de dívida técnica
- Há muitas propriedades raramente usadas ou já obsoletas, e diferenças de implementação entre versões exigem lógica de parsing complexa
- Essa complexidade estrutural prejudica a manutenção e a escalabilidade, tornando essas tecnologias inadequadas para ambientes modernos de colaboração
A chegada do JMAP para as necessidades modernas
- O protocolo JMAP foi originalmente desenvolvido como um protocolo de transporte de e-mail eficiente e simples para substituir IMAP e SMTP
- Baseado em JSON over HTTPS, ele garante clareza e eficiência de rede ao mesmo tempo
- Agora, com a introdução de JMAP for Calendars, Contacts, Files e Sharing, a mesma filosofia de design se expande para toda a colaboração
- Fornece uma API unificada e consistente para e-mail, calendário, contatos, arquivos e recursos compartilhados
- JSCalendar e JSContact reorganizam iCalendar e vCard em formatos baseados em JSON
- Removem propriedades desnecessárias e oferecem um modelo de dados claro e consistente
- São fáceis de ler por humanos, amigáveis para desenvolvedores e eficientes no parsing, sendo otimizados para aplicações modernas
- A combinação do JMAP com esses novos modelos de dados permite implementar calendário, gerenciamento de contatos e compartilhamento de arquivos de forma mais rápida e confiável
O significado deste lançamento
- Este lançamento vai além de apenas adicionar recursos e representa um ponto de virada na forma de projetar protocolos de groupware
- Desenvolvedores e organizações podem construir e-mail, contatos, calendário e recursos compartilhados sobre uma única estrutura baseada em JSON
- A simplicidade e previsibilidade do JMAP ajudam clientes e servidores a focar em funcionalidades e experiência do usuário, em vez de no processamento do protocolo
- Como resultado, espera-se redução de problemas de interoperabilidade, aumento da velocidade de desenvolvimento e aceleração da inovação
- Isso serve como um impulso para promover padronização e maior eficiência em todo o software de colaboração
Suporte de clientes e expansão do ecossistema
- O Stalwart é atualmente o primeiro servidor a oferecer suporte completo a toda a família de protocolos JMAP, mas o suporte do lado dos clientes ainda está em estágio inicial
- Mesmo assim, vários projetos já estão adotando os novos padrões
- Mailtemi, Parula e OpenCloud estão desenvolvendo clientes para JMAP Calendars, Contacts e File Storage
- O ecossistema está crescendo rapidamente e, à medida que os desenvolvedores experimentarem diretamente a elegância e a robustez do JMAP, espera-se uma adoção acelerada
2 comentários
Que legal!!
Comentários no Hacker News
Acho que JMAP é um protocolo muito bom para criar clientes de e-mail
Eu preferiria evitar self-hosting, mas seria interessante usar o Stalwart como componente de servidor para um cliente, sincronizar dados IMAP existentes e acessá-los via API JMAP
Ouvi dizer que algo como sincronização IMAP-IMAP é possível, então queria saber se alguém já tentou isso com o Stalwart
Se essa abordagem funcionar, daria para acessar caixas de e-mail IMAP existentes via JMAP, o que pode impulsionar o desenvolvimento de uma nova geração de clientes de e-mail
O Stalwart é realmente um software lindamente estruturado
É impressionante como foi ganhando confiabilidade e maturidade de forma gradual
E é surpreendente que isso tenha sido conduzido quase por uma única pessoa desenvolvedora
Gráfico de contribuidores no GitHub
Basta sincronizar periodicamente o IMAP remoto com o servidor IMAP local do Stalwart, e o Stalwart converte isso internamente para JMAP e entrega dessa forma
No começo achei que seria preciso passar por uma etapa com maildir, mas parece perfeitamente viável só com IMAP ↔ IMAP
Tudo o que encontrei até agora era caro demais, então esse avanço é muito bem-vindo
Ainda não tenho nada pronto, mas continuo considerando a ideia
Como o Stalwart é na prática a primeira implementação de servidor JMAP, agora finalmente existe motivo para criar clientes
Aliás, o novo serviço de e-mail da Mozilla também deve usar JMAP, então isso pode gerar um grande impulso
Antes eu já tinha usado groupware como Nextcloud e SoGo, mas fiquei decepcionado
Agora, porém, o Nextcloud está colaborando com o Stalwart, e Opencloud e Mozilla/Thunderbird também estão integrando JMAP, o que é animador
Em especial, o projeto de webmail Stormbox do Thunderbird também está em andamento, o que é interessante
Neste momento há um forte movimento para sair do Big Tech, então o timing é perfeito
O Cyrus só suportava JMAP para e-mail
Agora é possível sincronizar entre CalDAV, JMAP e sistema de arquivos
Eu uso o cliente aerc
Coisas como compartilhamento de arquivos, groupware, e-mail e calendário talvez pudessem ser projetadas de forma mais eficiente sem o overhead de JSON
Ainda assim, imagino que exista um bom motivo para esse design baseado em HTTP
Isso porque a maioria dos primeiros protocolos da internet foi criada sobre Telnet baseado em texto
HTTP/3 é essencialmente um protocolo binário, e JSON é estruturado e comprime bem, então na prática ele é bastante eficiente
“JSON over HTTP” é uma melhoria sutil, mas real, em relação a “texto customizado sobre telnet”
Mesmo usando frameworks como capnproto, grpc ou ASN.1, cada um traz sua própria complexidade
JSON é simples e tem limitações bem claras, então é fácil de lidar
Já designs dependentes de implementação, como o protocolo do Microsoft Exchange, acabam causando problemas no longo prazo
Em alguns casos, um protocolo diferente de TCP pode ser melhor
Pessoalmente não gosto de JSON e acho o formato DER melhor
Protocolos de “small web” como Gemini e Scorpion também são interessantes
Na verdade, em termos de compatibilidade com clientes web, HTTP é a única escolha
Não vejo quase nenhuma vantagem em não usar HTTP
Se usar CBOR no lugar de JSON, o payload também pode ser binário
HTTP é um protocolo de transferência de estado (state transfer), então é adequado para sincronização
Com a extensão Braid, ele também pode ser expandido para um protocolo de sincronização de estado (state synchronization)
Eu trabalho no projeto Braid
E-mail já é suportado, mas ainda é preciso usar CardDAV/CalDAV em paralelo
O código
caldav_syncescrito há 10 anos ainda está rodandoRecentemente melhoraram a lógica de geração de objectid para reduzir o tamanho dos IDs e aumentar a capacidade de ordenação
Agora vão atualizar calendário e contatos para a especificação mais recente do JMAP
O sistema de arquivos provavelmente ainda vai demorar um pouco mais
Veja o rascunho do documento
Contacts foi aprovado há 10 meses como RFC 9610
Também não está claro quais problemas ele resolve em relação às soluções existentes
Clientes grandes como Apple Mail, Thunderbird e Outlook precisam suportá-lo
Até clientes menores como Canary ou Spark poderiam adotá-lo como diferencial, mas curiosamente não fazem isso
O novo Outlook armazena todos os dados no Azure e se comunica com o servidor real por meio de proxy
É muito improvável que venha a suportar JMAP
(não estou defendendo IMAP)
Se Gmail ou iCloud não suportarem, criar clientes terá pouco sentido
Até dá para ter suporte duplo, mas o mercado seria pequeno
Mas isso ainda depende de muitos “ifs”
Por ser um servidor totalmente integrado, dá a sensação de uma nova era
O Maddy também é bom, mas sua manutenção é menos ativa
Não existe uma documentação que mostre de forma clara as opções, os valores padrão e como tudo se relaciona
Dá para configurar pela Web UI, mas isso entra em conflito com deploy declarativo
Se o arquivo
.tomlestiver como somente leitura, ocorre erroFora FastMail e Topicbox, não há muita coisa
Precisaria ser algo self-hosted por HTTPS, como Roundcube ou Wildduck
Fora o fato de ter sido “reescrito em Rust”, não vejo um diferencial tão claro
Sem um bom MUA (cliente de e-mail), duvido que JMAP ajude tanto
O lado do servidor já foi bastante resolvido, mas os clientes estão estagnados
A maioria nem implementa todos os recursos do IMAP4, e os clientes de Sieve também são bem ruins
O Dovecot ainda não suporta UTF-8 de forma completa
Projetos como Stalwart são justamente tentativas de superar essas limitações legadas
Os clientes também tiveram evolução, como no caso do Apple Mail
Não adianta só um dos lados evoluir
Agora que existe um bom servidor, o que falta é um bom cliente
O Nylas é poderoso, mas caro
Em grande escala, custa US$ 1,50 por conta por mês, o que pode afetar a margem de um SaaS
Ainda assim, é muito útil para análise de e-mails em tempo real ou para construir interfaces customizadas