Release XMPP (Jabber) server Prosody 0.11.0
The first release of the 0.11st stable branch of the XMPP Prosody server with corrections of more than 2000 errors is presented .
The most significant improvements were in the MUC and pubsub modules.
Together, these components implement two of the most extensive XEPP XEP extensions that the protocol currently provides. Although previous versions have supported MUC and pubsub for quite some time, both of them are quite complex, and after the initial implementation it became clear that code needs to be updated and refactored to increase the coverage of the required XEP functionality, improve the code structure and scalability of solutions.
Many other changes, improvements, bug fixes, and performance work included in this release have also been implemented.
Most of the changes in this release were related to the rewriting of almost all the code related to MUC (Multi-User Conference). This ambitious project was launched several years ago by the user daurnimator , who developed most of the new code.
Although the most significant changes are internal, it allowed the project to more easily add new features and improve the scalability of MUC services (this version of the MUC module allows many services to work with hundreds of thousands of general conversations, such as Jitsi Meet ).
The server configuration form has been updated to provide a more accurate layout and more convenient parameter names.
Support was added for archiving and uploading previously written messages to the MUC (Multi User Chat) using the XEP-0313 (MAM) protocol. This allows the client to display messages, for example, that were written in a general conversation when the user was absent online.
User Name Reservation
To prevent confusion, Prosody can now apply username reservations. This prevents the use of someone else’s name when the real owner is not in a general conversation. By default, only owners / administrators of shared chat can re-assign a name (when adding a user to a general conversation), but the module can also be configured so that users can register their own nicknames and become participants.
Pubsub implementation has been greatly improved in this release. Link Mauve added code responsible for the safety of nodes and elements, now data can be stored on disk, not in RAM, and are not lost when the server is restarted.
Support was also introduced for configuring, host and membership management required for advanced access control, and finally support for the notorious “publish-options”, which allows customers to safely publish items with proper access control.
The old PEP code is a separate, limited implementation of pubsub, which implemented everything users needed in 2009. Over the years, however, more and more pubsub functions have been in demand at PEP, due to its high demand. Therefore, it became obvious that it was necessary to add all pubsub functions to the PEP and use the existing code.
Florian Zeitz began this work by creating a new module mod_pep_plus. This module has now replaced the original “mod_pep” and is already the default implementation of PEP.
This provides OMEMO support when communicating with non-address book users and other customers. It also allows users to use PEP to store bookmarks and other data.
New vCard format
This release provides support for the new version in the vCard specification described in XEP-0292, which includes support for various new features.
The new format is also stored in the PEP, providing full access control access (for example, you can choose whether your vCard is open or available only to contacts).
Few (if any) clients currently support vCard4, but the old vcard-temp protocol is still supported using mod_vcard_legacy, which is transparently converted to the new format until clients update.
Mobile Battery Optimization
This release presents some community modules designed to increase battery life for mobile instant messengers. Constant traffic through the network, such as changes in contact status and chat messages, can prevent the phone from switching to low-power mode. However, this data is usually unimportant, especially when the phone screen is turned off or the application is in the background.
Clients that support XEP-0352, such as “Conversations”, can inform the server when the application is in the background, and Prosody optimizes connection traffic accordingly.
This function is implemented in the mod_csi_simple module.
A lot of work has been done on the internal asynchronous API, increasing its reliability due to the added tests. Ultimately, this API will be used to improve the performance of large public chat servers.
With these changes, the current release has experimental support for asynchronous authentication and storage modules. However, in this release, the new API is not officially supported, as major changes are planned for future versions.
One of the biggest improvements in the project recently has been the increase in the number of automatic tests. Previous issues were almost completely tested by hand, with very few automated tests being available. Now there is a large set of tests that are run after each change.
Built-in epoll support
This new experimental network server provides an alternative to libevent. The main advantages are the small size of the implementation and ease of use, with the feature is its exceptional support in Linux systems.