Our next trunk nightly release uses a new implementation of PEP (XEP-0163) by default.
PEP is used for a number of things, primarily sharing with your contacts:
- Extended statuses (e.g. sharing the user’s current playing music, their mood, activity, etc.)
- OMEMO keys
- Chatroom bookmarks
While PEP started out as a simplified form of ‘pubsub’ and a way to share information with your contacts, it quickly became clear that it was also a neat mechanism for sharing public info with non-contacts (such as OMEMO keys) or sharing private data (such as saved chatrooms) with other clients on your account.
Prosody’s PEP implementation was optimised for the contact-sharing case only, and did not support things like access control needed to make data public or private. In fact it used completely separate code to our standard “full” pubsub implementation, even though the protocols are the same.
It became clear that as more features of pubsub were desired in PEP, it only made sense for them both to be based on the same code.
The path to unifying them began with the creation of mod_pep_plus by Florian Zeitz, which re-used our existing pubsub implementation. Over time our pubsub code and mod_pep_plus have matured together, and we are ready to make it the default.
Today we replaced mod_pep with mod_pep_plus, so that it will become the default implementation for all setups. This means that as of tomorrow’s nightly build, the main visible change will be that both persistence and multiple items will be supported for PEP by default.
At a protocol level it supports more pubsub features, such as node configuration, and as we continue to improve our pubsub support, PEP will now automatically benefit.
We’re already working on our next priorities for pubsub, including support for setting the node access model, and ‘publish-options’, which are required for safely storing private or public data.
Users of trunk nightly builds who loaded mod_pep_plus in their config should switch to mod_pep. Users who want to use the older version of PEP should switch from “pep” to “pep_simple” from tomorrow’s build onwards. At some point in the future mod_pep_simple (the old implementation) will probably be moved out into prosody-modules.
That’s all for now, we look forward to sharing more pubsub news in the near future!