dav-xmpp-sync v1.2.0 Release
Years ago, I migrated from Google Voice over to a Voice/SMS service called Jmp.Chat. I host my address book using Radicale, an open source CardDav/CalDav server. In order to synchronize contacts between the two, I wrote dav-xmpp-sync, a Python application for CardDav to XMPP synchronization. It’s worked fairly well for a while. I recently did some maintenance: updating dependencies and adding support for SMS/Text groups. The v1.2.0 release is available via a Docker image, and is fully backwards compatible with the previous release.
The biggest new feature of v1.2 is the addition of SMS group display name synchronization. Previously, dav-xmpp-sync
wouldn’t touch the display names for group text messages. Jmp.chat would display them as a comma separated list of phone numbers; e.g +15551112222,+15553334444@cheogram.com
. Due to maintaining backwards compatibility, you must manually set include_group_chats
to True
in the sync
section of the dav-xmpp-sync
configuration file. With this feature enabled, the display names for groups are changed to coma separated lists of contact names.
If you want to preserve a custom name for a SMS group, simply edit the display name and prefix it with a custom title in brackets, e.g. [Baseball Group] ...
. The name in brackets will be preserved on synchronizations, while individual names will be updated if they’ve change in your address book.
Changelog for dav-xmpp-sync v1.2.0:
- Display name for groups support added
- Adjusted namespaces to be consistent
- XMPP module cleanup and additional testing
- Improved build logging
- Updated dependencies
- Updated Python Docker image to 3.11
Roadmap
Properly labeling group conversations has been on the roadmap for a while. I was encouraged to start working on it again after someone contacted me about an issue they had getting dav-xmpp-sync
to connect to Snikket. It turns out the issue had to do with Snikket requiring authentication mechanisms such as SCRAM-SHA-1
. Currently the underlying XMPP python library I use only supports PLAIN or MD5 for SASL authentication1. There has been an open issue for supporting newer schemes for several years2.
Although I updated the dependencies, I was only able to update the Docker container to Python 3.11. xmpppy
still uses ssl.wrap_socket
, which was deprecated in Python 3.7 and removed in Python 3.123.
The recent group chat support is slightly incomplete. It only adjusts display names for group chats that are in your XMPP roster. This will include chats you create, but doesn’t include group SMS texts others have you included you in. I’m not sure if it’s possible to get these chats via the xmpppy
library due to the nature of how the XMPP protocol works. Even trying to add these chats to my roster using XMPP clients often results in an error.
I’d like to change the sync
mode of dav-xmpp-sync
to keep the XMPP connection open, and handle adjusting display names for incoming SMS messages and group texts. It might also be beneficial to implement assigning a default XMPP group for group texts. Although I have made small contributions to the xmpppy
library in the past, I’m not sure if I’m ready to tackle attempting to add SCRAM-SHA-1
support. This release included a lot of additional tests, in case I attempt to use another XMPP library.
Thanks
dav-xmpp-sync
is a small project that’s served me well. It doesn’t do anything huge. It’s just a script for people trying to take back control of how their text and voice communications work. Yet, it seems to have a decent amount of users and even a few contributors.
-
xmpppy/xmpp/auth.py at master line 162. Retrieved 11 May 2024 ↩
-
SCRAM-SHA-1-(PLUS) + SCRAM-SHA-256(-PLUS) + SCRAM-SHA-512(-PLUS) supports #32. 30 March 2020. Neustradamus. xmpppy/xmpppy. Github. ↩
-
What’s New In Python 3.12 - removed/ssl. Turner. Python. Retrieved 11 May 2024. ↩