El Protocolo Extensible de Mensajería y Presencia (XMPP) (antes llamado Jabber) es un protocolo de mensajería instantánea. Se inspira en XML.

Es diferente a la mayoría de los protocolos porque es un estándar abierto. Esto significa que cualquiera que tenga un nombre de dominio y una conexión a Internet puede ejecutar su propio servidor. La mayor parte del software y los clientes son de código abierto.

Otros programas como Google Talk y Gizmo5 utilizan el protocolo XMPP. Se ha instalado en miles de servidores de Internet. Hay más de quinientos millones de usuarios que utilizan software basado en el protocolo. Entre los clientes se encuentran Pidgin e iChat.

Cómo funciona

XMPP intercambia datos en formato XML mediante tres tipos principales de "stanzas" o fragmentos: message (mensajes instantáneos), presence (presencia/estado) e iq (consultas/respuestas). Cada usuario se identifica con un JID (Jabber ID) con formato usuario@dominio/resource, lo que permite distinguir varias sesiones del mismo usuario (por ejemplo, móvil y escritorio).

La comunicación puede ocurrir:

  • cliente → servidor (el cliente se conecta a su servidor)
  • servidor → servidor (federación entre dominios, similar al correo electrónico)
  • cliente → cliente (directa o a través de servidores intermediarios)
El protocolo define el uso de conexiones persistentes y negociación de características mediante extensiones, lo que lo hace flexible para muchos casos de uso en tiempo real.

Características principales

  • Descentralización: cualquiera puede ejecutar un servidor XMPP bajo un dominio propio.
  • Extensibilidad: XMPP se amplía mediante XEPs (XMPP Extension Protocols) para añadir funciones como salas de chat, compartición de archivos, notificaciones, etc.
  • Federación: los servidores pueden comunicarse entre sí, permitiendo interacción entre usuarios de distintos proveedores.
  • Orientado a presencia: gestiona estados (disponible, ausente, ocupado) y suscripción a la presencia de otros.
  • Soporte multicliente: el JID/resource permite múltiples dispositivos simultáneos por usuario.

Seguridad y cifrado

XMPP usa mecanismos estándar para proteger las conexiones: TLS (incluyendo STARTTLS) para cifrar el transporte y SASL para la autenticación. Para cifrado de extremo a extremo (E2EE) se emplean extensiones y protocolos como OMEMO (XEP-0384), OpenPGP o OTR en clientes que lo soportan. La seguridad completa depende de la implementación y de la verificación de huellas/llaves por parte de los usuarios.

Usos y aplicaciones

XMPP se utiliza en múltiples contextos:

  • mensajería instantánea y presencia para consumidores y empresas;
  • sistemas de chat corporativo e intranets;
  • notificaciones en tiempo real y servicios de colaboración;
  • comunicaciones en aplicaciones móviles;
  • IoT y mensajería máquina a máquina por su naturaleza abierta y extensible.

Históricamente Google Talk y otros servicios usaron XMPP; aunque muchos servicios comerciales actuales han optado por protocolos propietarios, XMPP sigue muy presente en proyectos de código abierto y soluciones autohospedadas.

Servidores, clientes y bibliotecas populares

  • Servidores: ejabberd, Prosody, Openfire, Tigase, MongooseIM.
  • Clientes: Pidgin, Gajim, Conversations (Android), Dino (Linux), Adium/iChat (histórico en macOS).
  • Bibliotecas: Smack (Java), Strophe.js (JavaScript), SleekXMPP/Slixmpp (Python).

Ventajas y limitaciones

  • Ventajas: estándar abierto, descentralizado, extensible, buena interoperabilidad entre implementaciones, fuerte ecosistema de código abierto.
  • Limitaciones: puede resultar más complejo de configurar que servicios centralizados; la experiencia del usuario depende de las implementaciones cliente/servidor; el cifrado E2EE no es automático en todos los clientes y requiere soporte explícito de extensiones como OMEMO.

Estándares y comunidad

El núcleo de XMPP está recogido en RFCs publicados por el IETF (las versiones modernas incluyen RFC 6120 y RFC 6121, que reemplazaron a las anteriores). La evolución de funciones y extensiones se gestiona principalmente a través de la XMPP Standards Foundation (XSF), que mantiene las XEPs usadas por la comunidad.

En resumen, XMPP es un protocolo maduro y flexible para mensajería y presencia que favorece la descentralización, la interoperabilidad y la adaptación mediante extensiones. Es una buena opción cuando se busca control sobre la infraestructura, compatibilidad con estándares abiertos y capacidad de personalización.