XMPP Newsletter - Monal update, eturnal and GSoC progress - 6 August 2020
Welcome to the XMPP newsletter covering the month of July 2020.
Translations of the XMPP Newsletter will be released here:
JC Brand created an XMPP job board! This enables people to review job offers as well as advertise XMPP services. Please take a look, post your own offers and recommend it. XMPP works!
Just how scalable is the XMPP server MongooseIM? See how Bartek Górny, one of the MongooseIM team members, achieved almost 2.5 million connections, passing 45 thousand messages per second. And, why he thinks 10 million connections is easily achievable. Find out more in Scaling a Mongoose.
Yarmo Mackenbach wrote an article on XMPP and OMEMO integration in Keyoxide, a modern, secure and privacy-friendly platform to establish your decentralized online identity and perform basic cryptographic operations.
Clients and applications
The multi-platform desktop client Gajim 1.2.1 has been released. Just two weeks after the release of Gajim 1.2, the next update is already there. Gajim 1.2.1 features spam reporting as specified by XEP-0377, automatic activation of shipped plugins which implies OMEMO available by default, and some bug fixes. Audio/Video calls gain some improvements, but remain highly experimental. More development news from July: an automatic update check for Gajim on Windows/MacOS, account password storage enhancements, an OMEMO fix, and many small improvements.
Profanity, the text based user interface client, released version 0.9.5 to fix a potential segmentation fault when using the
/theme properties command. It is used to display colour settings for the current theme.
Anurodh Pokharel released Monal 4.7 for iOS and macOS. Despite the small version number update, this is a large upgrade. Besides the usual UI fixes and stability improvements you'll find: a new in chat title bar (as seen below), support for XEP-0319 (Last User Interaction in Presence) so you know when your contact was last seen online, support for XEP-0085 (Chat State Notifications) for those useful typing notifications and support for XEP-0191 (Blocking Command) for when a spammer comes along.
The git repository of Pix-Art Messenger has been moved from Github to Codeberg. This migration process is not finished yet. Until then, both repositories will run in parallel. Concerning the software itself, Pix-Art Messenger versions 2.5.1 and 2.5.2 have been released, highlighting pinned chats in color, improving the video quality, and dynamically optimizing file compression.
Kontalk for Android has released a new version (4.4.0)! Apart from bugfixes and improvements it has now a dark theme, supports sharing to groups, exporting media to storage and deleting media with messages. The settings have been revamped and Android 10 is now supported.
The Android client aTalk released several patches for their 2.3.0 release with bugfixes and improvements.
MongooseIM 3.7.1 has been released! This one is built on top of the 3.7.0 May release, which introduced support for channel binding to prevent replay attacks for all methods of SCRAM, a family of modern, password-based challenge–response authentication mechanisms providing authentication of a user to a server. This previous version also provided a range of new SCRAM authentication methods based on different flavors of the SHA cryptographic hash functions, the ability to retract messages as specified by XEP-0424, and support for Proxy Protocol which safely transports connection information such as a client's address across multiple layers of NAT or TCP proxies. Version 3.7.1 improves on that by speeding up all the SCRAM methods significantly!
Tigase XMPP Server 8.1.0 General Availability has been released and it is packed with improvements!
SASL-EXTERNAL mechanism defined in XEP-0178 (Best Practices for Use of SASL EXTERNAL with Certificates) to allow certificate based authenticated connections was added for server-to-server connections, greatly improving compliance with the XMPP federated network. Depending on support in other servers, it’s possible to use both SASL-EXTERNAL and Dialback, another authentication mechanism defined by XEP-0220. Set of XMPP extensions were added:
- XEP-0398 (User Avatar to vCard-Based Avatars Conversion)
- XEP-0156 (Discovering Alternative XMPP Connection Methods)
- XEP-0410 (MUC Self-Ping (Schrödinger’s Chat))
- XEP-0153 (vCard-Based Avatars)
- XEP-0411 (Bookmarks Conversion)
- XEP-0157 (Contact Addresses for XMPP Services)
This version also improves management of multiple domains in virtual hosts and enables by default a new anti-spam plugin.
A new TURN server called eturnal has been published. This is a standalone version of the TURN server part of ejabberd (with some improvements) and a straightforward alternative to servers such as Coturn which can be used for offering STUN/TURN services to A/V clients using external service discovery as defined by XEP-0215.
Tigase JaXMPP 3.3.0 has been released! Main features included in this release are support for OMEMO encryption, making it easier to carry out encrypted conversations, and support for XEP-0305 (XMPP Quickstart) allowing connections to be established faster. Apart from that, SCRAM support was extended with SCRAM-SHA512 flavour. Service items discovery can now be controlled with XEP-0059 (Result Set Management). DataForms with multiple items got implemented and MUC message delivery was improved. Last but not least, connectivity with Google's Firebase Cloud Messaging (FCM) was fixed.
Version 1.0.1 of python-nbxmpp, the library developed for and used by Gajim development team, has been released. This version includes a fix for a bug where messages from ChatSecure could not be decrypted after a longer period of time has passed. It also includes some fixes for Websocket connections.
The Ignite Realtime community is pleased to announce the release of jXMPP version 1.0.0! jXMPP is a library that provides common functionality required by all sorts of XMPP implementations (servers, clients, components, ...). Among other things, it provides a sane implementation of JID types. Check out its javadoc documentation!
whatsxmpp, the WhatsApp (Web) to XMPP bridge, has seen a variety of bugfixes and improvements this month, mainly as a result of various users using the bridge and reporting errors. The development team switched to using the Nix package manager to build Docker images, resulting in more reproducible and faster builds! A stable 0.1 release is getting closer, and the basic functionalities are already working and battle-tested. A few more stability improvements are still required and some features, such as proper MUC history support and file uploading via native WhatsApp servers, are missing! Please do pop by their MUC email@example.com if you're interested in using or running the bridge.
Google Summer of Code
Since the beginning of May students all over the world are working on many open-source projects within the Google Summer of Code Season 2020. We would like to introduce the students who work on GSoC XMPP projects and share their blog posts:
Aditya Borikar is working on WebSocket support for Smack. Blog history:
- Chapter 1: Handshake
- Chapter 2: Modular Shift
- Chapter 3: SASL Negotiations
- Chapter 4: Fixing loose endpoints
- Chapter 5: Discrete Http Lookup Method
- Chapter 6: A Part Of The Whole, Merged
- Chapter 7: The Bigger Picture
- Chapter 8: Reworking FSM
- Chapter 9: Bug Fixation
- Chapter 10: End of the second phase
- GSoC 2020 begins - Introduction to RTT
- RTT stanza and message comparision
- Receiving Real Time Texts
- User Interface
- Settings to Enable/Disable RTT
- Settings Radio Button Menu
- Realistic RTT with wait
Thank you for joining GSoC XMPP projects and keep up the good work! To be continued.
Extensions and specifications
- Version 0.7.0 of XEP-0313 (Message Archive Management)
TL;DR: add new filtering fields, allow for reversing results order and migrate some information to external documents. - Add 'before-id' and 'after-id' fields, flipped pages, single-item retrieval and a new mandatory disco feature - Split preferences protocol into a separate document - Split the details of pubsub archives into a separate document
- Version 1.0.0 of XEP-0338 (Jingle Grouping Framework)
Advance to Draft as per Council vote from 2020-07-01
Version 0.3.0 of XEP-0420 (Stanza Content Encryption)
TL;DR: some changes concerning elements allowed/denied to be encrypted, and security improvement by increasing the entropy of random padding elements.
- Allow origin-id elements, disallow stanza-id and extended stanza addressing elements inside the payload element - Clarify wording on stanza processed elements and improve XEP formatting - Remove limitation of random padding content to base64 characters alone - Chat messages MUST contain message processing store hint - Credit where credit is due
This XMPP Newsletter is produced collaboratively by the community.
Thanks to eta, emus, erszcz, Ge0rG, Holger, kriztan, jerome-poisson, jonas', Licaon_Kter, pmaziere, vanitasvitae, wurstsalat, woj-tek, zash for their help in creating it!
Spread the news!
Please share the news on "social networks":
Subscribe to the newsletter
We suggest you subscribe to receive the next editions in your inbox as soon as it is published! Promote this newsletter to whoever may be interested.
Help us to build the newsletter
We are always happy to welcome contributors. Find our monthly drafts here in the XSF Github repository. Do not hesitate to join the discussion in our Comm-Team group chat(https://firstname.lastname@example.org?join) and thereby help us sustain this as a community effort.
You have a project and write about it? Please consider sharing your news or events here, and promote it to a large audience! Even if you can only spend a few minutes, these would already be helpful!
Tasks which need to be done on a regular basis are for example:
- Aggregation of news in the XMPP universe
- Short formulation of news and events
- Summary of the monthly communication on extensions (XEP)
- Review of the newsletter draft
- Translations: especially German and Spanish
This newsletter is published under CC BY-SA license.