Messaging with the L5


I just hope Purism helps fix the Lurch bugs (omemo library for libpurple). As it currently stands in my experience, communication between Lurch and the mobile clients such as Conversations, ChatSecure etc that support omemo just doesn’t work…

As for SMS I’ve never seen an indication that it was an XMPP bridge, only that the same app (Chatty) would handle both SMS and XMPP.


I like the idea of COI plugin in chatty… That could be an extremely good communication tool


Could you please elaborate in a easier way? I wasn’t aware of that, where can we follow this issue? It’s pretty important to be able to talk with other clients, conversation is what i’d like to install on friends smarrphone to talk with me


Not having the time just now to gather all the info, but if you look at the issues for the Lurch plugin,

There are a lot of issues related to communication with other clients, not being able to get/see OMEMO keys or conversations not being decrypted on both sides.

In my own experience,
These work:
gajim <-> conversations
gajim <-> pidgin (libpurple, Lurch)
gajim <-> chatsecure
chatsecure <-> conversations
Siskin, BeagleIM <-> conversations, chatsecure, gajim

These don’t work
pidgin <-> Conversations
pidgin <-> chatsecure (iOS)
pidgin <-> Monal (iOS, macOS)
pidgin <-> Siskin, Beagle IM (iOS, macOS)

So there’s a common trend there, pidgin+Lurch cannot correctly encrypt or decrypt OMEMO messages when communicating with other clients, and plenty of issues have been recorded on Github related to this with no solution still.

There’s a small possibility that this is due to my server, but after testing with other servers the issues remained.

Additionally, libpurple does NOT support MAM (Message archive managemnet), so aside from receiving offline messages (which it can do) and message carbons (which rely on other clients being online and syncing messages on the fly), libpurple clients do miss out on some messages…

Compound that with another fact: Conversations does NOT support “offline messages”! So if you want Conversations to be able to get all messages, the only reliable way I found was to have my serer, ejabberd, route ALL messages to MAM and skip offline messages. So that makes pidgin less reliable, Conversations more reliable… I can live with that, so can my friends, but it’s kindof a mess…

Mostly the OMEMO (Lurch library) part is a mess.


Thanks for your reply i appreciate it a lot.
So there is a chance that chatty could not talk with conversation because of lurch, and as i understood, there is another problem where if i write to someone that is offline the message will not be sended?
That’s a really bad news because i can’t use it work at this manner.

So usually the server do not store a message if the receiver is offline?

You talk a lot about pidgin and conversation, what about chatty and conversation or anything else available on android?
My purpose is to comunicate using chatty from my side and something else on android, i need encrypted message and be able to send and receive message if both client aren’t online at same time, any suggestion?


That’s correct, depending on server features and client features, messages may or may not reach you or your contacts when one of you is offline. Most servers to implement XEP-0160 (offline messages) these days as well as MAM (XEP-0313), so the chances of messages NOT being stored by the server when a contact is offline are low.

The issue comes from libpurple and Conversations supporting only one or the other, and hard choices that have to be made by the server admins. In my case since my server is not used by many people, we chose to apply the fix below to send ALL messages straight to MAM rather than the offline messages storage, which hurts libpurple but helps Conversations.

I’m assuming most servers probably use the default, which is to store in offline messages store first, which hurts Conversations but helps most clients.

Hopefully Conversations adds support for Offline Messages soon…

Here is the fix I applied on my own server to send all messages to MAM, which Conversations can handle (but libpurple cannot). Since my main clients are Gajim (on desktop) and ChatSecure (on iOS), this was no problem:

Based on this , Conversations still doesn’t support XEP-0160 (offline messages).

None of this helps the OMEMO situation though, which IMO is a lot worse when it comes to libpurple+Lurch… I really should raise yet another issue on the Lurch github. I wonder if Purism has been trying it out and encountered these kinds of issues?


You would have to ask Andrea, the main Chatty developer directly in order to learn about her experiences dealing with Lurch and OMEMO. She is kind and (in my personal experience) fast to respond. I think you should ask her directly in the Chatty matrix channel …



Very good info, will do so!


That’s a mess, i hope someone will fix this issue asap.
If you talk with her please report here what’s new, hoping for good news
Thank you

Edit: in f droid i found atalk, dunno if will be more compatible with chatty/libpurple did you test it?


Have never tried atalk… Looks like it supports OMEMO. I suppose I could bring my android phone out of retirement and try it out…


If you can try it should be really welcome, i hope to use chatty with L5 and something else to my android friends phone at day one, let’s cross fingers


I have good news - not only is development continuing on Lurch, even though there are bugs and issues left, however:

  • I’ve updated my version of Lurch, and after some suggestions from Andrea on the Chatty matrix channel, was able to exchange OMEMO messages between Pidgin and ChatSecure!!
  • Moreover, I acquired the qemu image of the Librem 5 pureos, manually installed Lurch, and was able to use it in Chatty
  • And after some fiddling (mostly connecting/disconnecting plus sending plain text messages to let some kind of “handshaking” happen between the clients), eventually I was able to exchange OMEMO messages between all my clients - chatty, pidgin, gajim, chatsecure

I have yet to test atalk, however, I’m satisfied that things are heading in a postiive direction!


That’s awesome
Could you please try chatty-conversation and chatty-atalk mixing online and offline stuff from both clients? Just to be sure that everything work like “watsapp” so when purism release their xmpp i can finally switch friends and family to this service


Will try atalk tomorrow.

Conversations is working fine with both Chatty and pidgin, after the updates suggested by Andrea.

outside of my own server where offline messages are all directed to MAM, which is incompatible with Pidgin/Chatty, I’ve tried another public server, and Chatty was able to receive offline messages, even with OMEMO.

As it is, Pureos on the L5 (qemu image) does NOT have notifications it seems, and chatty is not running at boot, so no messages are coming in until chatty is manually launched. On the other hand, I’m pretty sure Pureos doesn’t kill tasks in the bg like iOs and Android do, because when I switch away to a browser on the L5, send messages to Chatty, and come back, the messages are already there.


So the only issue right now is to have an android client who is capable to use xep-0160 or chatty/libpurple to use xep-0313 otherwise the two clients can’t talk each other in offline mode, is it right?

So what i whould like to know when you try atalk if he handle the offline conversation with chatty or if he do not support xep-0160 too, in alternative do you know if chatty will support xep-0313?

I’m start to understand why people just use whatsapp and telegram :smiley:


I recently discovered the desktop version of Signal, which I now have running in Kubuntu. I like it a lot, with the only drawback being it will communicate only with other Signal users, meaning no SMS or MMS.

I’m assuming the desktop version will run on the L5, but I’d love to learn there will be a version of Signal for the L5 which functions like the Android app and allows me to communicate with my non-Signal-using contacts.


However, the desktop version is written with the electron framework which has as a direct consequence that (video) calls are not possible. Anything else works quite well though as far as i can tell.


I would also chime in with the hope that Signal might be able to run. It took me six months top drag most of my contacts from WhatsApp to Signal. I don’t know thLibrem at it will be so easy to get them to Librem.


Yes these centralized services do have the advantage of being mobile-first, unlike XMPP that had to retrofit a lot of functionality, and waiting for clients to catch up, and lots of different people coding things differently, leading to issues and incompatibilities (see Moxie of Signal fame and his rant about federated services on the Signal blog a few years ago).

atalk, first impressions: I can’t even get it to reliably connect or send or receive messages, or even have a UI that responds to my taps and swipes. Stick with Conversations lol.

As far as Offline messages vs MAM, probably the best combination is to have offlines messages + message carbons support in clients, so that there can at least be some synchronization of messages between clients. MAM is a nice bonus and libpurple will have it… one day… Most XMPP servers support Offline messages and don’t use the workaround I used to redirect all messages to the MAM, so everything should be fine overall.

Still getting some glitches in OMEMO chats between various clients and Chatty, it’ll take a while to figure all those bugs out,…


Don’t assume it. The desktop version is compiled for Linux on x86-64 architecture, so unless it’s recompiled for arm, then it won’t work on the L5. I’m not sure if the Signal devs have indicated they will do so or not, ro what the challenges involved are (due to the desktop version being based on Electron…)

The ideal of course would be an actual version using libhandy or origami rather than an electron monstrosity…