Prosodical Thoughts

News, announcements and thoughts from the Prosody IM team

Prosody 0.11.0 publicado

by The Prosody Team
Translated by Marcos
Translations available: [en]  [ru]  [de]  [fr] 
Tags: release

¡Nos complace anunciar la ansiosamente esperada versión 0.11.0 de Prosody!

Esta es la primera versión de la serie 0.11, la que será considerada serie estable. Con más de 2000 commits, esta versión no hubiera sido conseguida sin la ayuda de todos quienes han contribuido, probado y demás miembros de la comunidad. ¡Gracias!

Aspectos destacados

Si estás emocionado por la publicación de 0.11.0, seguramente lo sea por alguno o ambos de los componentes que han recibido la mayor parte del trabajo de esta versión: MUC y pubsub.

Estos componentes combinados implementan dos de los XEPs más extensos disponibles en XMPP. Aunque versiones anteriores ya ofrecían soporte para MUC y pubsub, ambos son complejos y tras la experiencia de la implementación inicial merecían actualizarse para mejorar tanto la cobertura de la especificación XEP, la estructura del código y la escalabilidad.

También hay otros muchos cambios, mejoras, arreglos e incremento del rendimiento ofrecidos con esta versión. Los principales aspectos se presentan a continuación.

Características notables

Mejoras en salas de chat

Uno de los mayores cambios en esta versión es una reescritura casi completa de nuestro código de MUC (Multi-User Conference). Este ambicioso proyecto fué iniciado hace unos cuantos años por daurnimator, quien desarrolló la mayor parte del código.

Aunque la mayoría de cambios significativos son internos, esto ha permitido mayor facilidad a la hora de añadir nuevas funcionalidades y mejorar la escalabilidad de los servicios MUC (esta version del módulo de MUC es la que da vida a Jitsi Meet así como otros servicios con cientos de miles de salas).

Las nuevas mejoras son demasiadas para listarlas todas, pero las más destacadas son las siguientes.

Mejora de la configuración

El formulario de configuración se ha modernizado, ofreciendo un diseño más claro y unas opciones con nombres más amigables para los usuarios.

Room configuration dialog box

¡Esperamos poder dar soporte a traducciones en alguna futura versión!

Histórico de mensajes

Hemos añadido soporte para el archivo y la consulta de mensajes antiguos de una MUC utilizando el protocolo descrito en XEP-0313 (MAM). Esto permite a un cliente mostrar los mensajes enviados mientras se estaba ausente, por ejemplo.

Reserva de apodo

Para evitar confusiones, Prosody es capaz ahora de hacer cumplir las reservas de apodos (nick). Esto permite evitar suplantar a alguien mientras éste no está presente en la sala. Por defecto sólo los propietarios/administradores pueden activar esto (al marcar a alguien como miembro de la sala), pero es configurable el permitir a los usuarios registrar su propio apodo y hacerse miembros.

Pubsub protocol

Nuestra implementación de pubsub ha mejorado mucho en esta versión. Link Mauve ha contribuido la parte de persistencia de nodo y elementos, lo que significa que los datos pueden permanecer en disco en lugar de en la memoria y no perderse cuando se reinicia el servidor.

También se ha implementado el soporte para configuración de nodos y gestión de afiliación, necesarios para el control avanzado de acceso y finalmente, soporte para el infame ‘publish-options’, que permite a los clientes publicar de forma segura con los controles de acceso que éstos requieran.

PEP

Nuestro código PEP anterior era una implementación independiente de pubsub que daba soporte a lo que los clientes necesitaban en 2009. A lo largo de los años más y más funcionalidades pubsub se han ido requiriendo para PEP a medida que se ampliaba su uso. Se hizo evidente que PEP necesitaba ofrecer todas las funcionalidades pubsub y que debía usar el mismo código.

Florian Zeitz empezó este trabajo creando un nuevo módulo llamado ‘mod_pep_plus’. Este módulo ha reemplazado al original ‘mod_pep’ y es ahora la impelmentación por defecto.

Estas mejoras ofrecen soporte para OMEMO con usuarios que no son contactos en Conversations y otros clientes. Además permite a los clientes utilizar PEP para almacenar marcadores y otro tipo de datos.

Nuevo formato vCard

Esta versión trae soporte para la nueva versión de la especificación vCard descrita en XEP-0292, que incluye soporte para varias propiedades nuevas.

Además se almacena en PEP, permitiendo un control de acceso absoluto (p.ej. eligiendo si tu vCard es pública o disponible sólo para tus contactos).

Pocos clientes (si es que los hay) soportan ya vCard4, pero el anterior protocolo ‘vcard-temp’ sigue estando soportado si se usa el módulo mod_vcard_legacy que mapea de forma transparente al nuevo formato, hasta que los clientes se actualicen.

Optimización del uso de batería en móviles

Esta versión incorpora algunos módulos de la comunidad enfocados a la mejora del uso de batería en clientes móviles. El tráfico continuo de actualizaciones de estado de contactos y los mensajes en las salas de chat pueden impedir a un teléfono cambiar a un modo de ahorro de batería. No obstante, este tipo de datos es usualmente poco importante, especialmente si la pantalla del dispositivo está apagada o la aplicación está en background.

Los clientes que soporten XEP-0352, como Conversations, pueden informar al servidor cuando la aplicación se encuentra en background y Prosody podrá optimizar el tráfico de dicha conexión en consecuencia.

Esto está implementado en mod_csi_simple.

Cambios internos

APIs asíncronas

Se ha invertido mucho trabajo en nuestra API asíncrona interna, mejorando su robustez e incorporando tests. Eventualmente esta API será utilizada para ofrecer mejoras de rendimiento en grandes servicios.

Con estos cambios esta versión tiene soporte experimental para conectores de autenticación y almacenamiento asíncronos. De todos modos no se soporta oficialmente en la versión actual ya que hay todavía grandes cambios programados para versiones siguientes.

Tests automáticos

Una de las grandes mejoras recientes en el proyecto es el gran crecimiento en el número de tests automáticos. Las versiones anteriores eran probadas casi exclusivamente a mano, con muy pocos tests automáticos disponibles. Ahora tenemos un gran conjunto de tests que se ejecutan tras cada cambio. ¡Os daremos más detalles sobre esto en un siguiente post!

Soporte nativo para epoll

Este nuevo backend de red es una alternativa a utilizar libevent. Las ventajas son su menor tamaño y simplicidad, aunque sólo para Linux.

Actualizando desde versiones anteriores

Si estás actualizando desde una versión anterior, te recomendamos encarecidamente que leas las release notes.

Un par de cambios relevantes se mencionan a continuación.

Actualización para MySQL

Los usuarios de MySQL necesitan actualizar el schema de la base de datos antes de que Prosody 0.11 pueda ejecutarse con normalidad. Esto es necesario para corregir un par de errores que impiden que funcionen las nuevas funcionalidades de PEP.

Después de actualizar, ejecuta: prosodyctl mod_storage_sql upgrade

Lua 5.2

Hasta ahora, Prosody ha usado Lua 5.1. Tal y como anunciamos cuando publicamos la versión 0.10, tenemos la intención de ir actualizando a versiones más recientes de Lua.

La versión recomendada de Lua para 0.11 es Lua 5.2, aunque Lua 5.1 sigue estando soportada para las plataformas que lo necesitan. De todos modos, la serie 0.11.x es la última que aún soportará Lua 5.1 (y por extensión, LuaJIT).

Tutoriales

Si piensas configurar Prosody por primera vez, Homebrew Server Club ha publicado un excelente tutorial sobre cómo configurar un servidor XMPP moderno en Debian usando Prosody 0.11.

Descarga

Como es habitual, puedes encontrar las instrucciones de descarga para las diferentes plataformas en nuestra página de descargar.

Si tienes dudas, comentarios o cualquier otra cuestión sobre esta versión, ¡dínoslo!.

Translations


About

Prosody is a lightweight and flexible XMPP server designed with ease-of-use and extensibility in mind.

⚛️ Atom feed

Recent Posts