ADR-021: Matrix como protocolo de mensajería federado¶
Estado: aceptado Fecha: 2026-05-17
Contexto¶
SmallCountry necesita un sistema de mensajería para comunicación familiar (coordinación diaria, avisos, fotos) y potencialmente comunicación con colaboradores externos. Los requisitos incluyen: cifrado extremo a extremo (E2EE), auto-hospedaje, federación para comunicarse con otros servidores, y puentes hacia plataformas existentes (WhatsApp, Telegram) para facilitar la transición. Las alternativas comerciales (WhatsApp, Telegram, Signal) no permiten auto-hospedaje real ni control de datos.
Decisión¶
Matrix como protocolo de mensajería federado, usando Conduit como servidor (implementación ligera en Rust) y Element X como cliente recomendado para móviles y escritorio. Matrix permite cifrado E2EE, salas federadas, puentes hacia otras plataformas, y es el estándar abierto más adoptado para mensajería descentralizada.
Alternativas consideradas¶
| Opción | Por qué se descartó |
|---|---|
| XMPP (Prosody + Conversations) | Protocolo maduro y ligero, pero la experiencia de usuario en clientes modernos es inferior. El soporte para salas, compartir multimedia y federación es menos pulido que Matrix. La fragmentación de clientes (Conversations, Dino, Gajim) confunde a usuarios no técnicos. |
| Mattermost | Buena alternativa tipo Slack, pero el auto-hospedaje de la versión comunitaria carece de algunas funciones de la edición enterprise. No es federado por diseño. |
| Telegram / Signal / Discord | Ninguno permite auto-hospedaje real con control de datos. Signal no tiene servidor federado práctico. Telegram no ofrece E2EE en grupos por defecto. |
| ## Consecuencias | |
| - ✅ Cifrado extremo a extremo (Olm/Megolm) para conversaciones privadas y salas. | |
| - ✅ Federación: SmallCountry puede comunicarse con cualquier usuario de Matrix en otros servidores. | |
| - ✅ Puentes: posibilidad de conectar WhatsApp, Telegram, Signal y otras plataformas para facilitar la migración gradual de contactos. | |
| - ✅ Conduit: servidor ligero escrito en Rust, bajo consumo de recursos ideal para LXC. | |
| - ✅ Element X: cliente moderno, rápido, con soporte para móviles y escritorio. | |
| - ❌ Complejidad de administración: mantener el servidor, los puentes y las salas requiere atención operativa. | |
| - ❌ Ecosistema menos maduro que alternativas comerciales: algunas funciones (llamadas grupales, compartir ubicación) aún están en desarrollo. | |
| - ❌ Curva de adopción: la familia y contactos deben instalar un cliente nuevo (Element X) y aceptar usar Matrix. | |
| ## Referencias | |
| - Ficha: Matrix | |
| - Ficha: Jitsi |