Livewire: A native XMPP client for Ubuntu Touch
-
Live discussion at: xmpp:livewire@conference.agnos.is?join
For the past ~2 months, I have been hacking away at making a native XMPP client for Ubuntu Touch. When @brenno.almeida released Greenline, the opportunity was too good to pass up. There exists an XMPP client called Libervia (formerly known as Salut a Toi) that works as a background daemon, and thus could fit pretty much straight into the existing architecture of Greenline.
Many experiments later,
we now have Greenline but yellowthe internals have been completely redone in an unholy abomination of Rust (of course) and Python (because Libervia is written in Python). It's a fully confined app that supports most modern XMPP basics, with a few features that still need to be implemented (e.g. reactions).The client is considered to be in alpha state, but is available on the OpenStore for testing. I consider it functional enough for daily use, but with rough edges. This thread is a discussion/support thread for the app. More specific bug reports should be filed at the git repository: https://git.agnos.is/projectmoon/livewire
You can find it on the OpenStore. I expect a handful of updates in the next days/weeks to address the most glaring bugs, and then to work on proper push notification support, which will be its own interesting journey.
-
@projectmoon
Greenline has ~ 30 MB
Kaidan has 9 MB (XMPP Client in the OpenStore) Kaidan works great,Livewire has ~200 MB Why is Livewire such a heavyweight?
-
@projectmoon
Greenline has ~ 30 MB
Kaidan has 9 MB (XMPP Client in the OpenStore) Kaidan works great,Livewire has ~200 MB Why is Livewire such a heavyweight?
Gotta shove all that Python somewhere. Could possibly be trimmed down. Maybe there are some unnecessary modules.
Libervia was chosen because there is no complete XMPP solution in Rust yet. If there ever is one, I would probably switch to that to reduce the complexity. Possibly will also investigate using the QT XMPP library.
Edit: Indeed 215 MB of the installation size is Python code.
-
@projectmoon Okay, all right. I installed the app, and it looks promising. This could turn out to be something really big. Especially with olmea encryption in all conversations.
-
@Linus67 come join the (currently one man) party in livewire@conference.agnos.is to test things out!
-
Thank you I have been hopeful a working UT OMEMO XMPP chat client would come soon.
This is very heavy but functions which is great.
I have a few questions.
How far away are features like:- OMEMO MUC, In band registration, support multiple accounts, audio/video calls?
If Libervia is a backend is there a possibly it could be merged into the existing messages app? -
@sixwheeledbeast said:
OMEMO MUCNext major item on the list. All the pieces are present, just need to assemble them correctly.
In band registration
I consider it lower priority: something for app stable release, but not for alpha -> beta graduation. Although it's a barrier to new users, it's possible to register elsewhere. However, if someone wants to contribute it earlier, hey ho let's go.
support multiple accounts
Coming soon to a .click near you
audio/video calls?
Faaaaaaaaaaaaaaaaaaar away.
If Libervia is a backend is there a possibly it could be merged into the existing messages app?
Anything is possible. But I won't be doing it. I don't know how the Lomiri messaging app is constructed, exactly, and if it's specific to SMS/MMS or not.
-
audio/video calls
If this is high priority for you, you might want to give DeltaTouch a try. Earlier this weekI tried a videochat with a friend who was using DeltaChat on /e/OS, and it worked fine.
-
@projectmoon So i know, i need to do my own investigations, but uhh
can you explain a little why someone could need this? what is the advantage of your app?
like i am ungoogled searching the meaning of a xmpp client and "olmea" encryption.the app looks great...
-
@projectmoon So i know, i need to do my own investigations, but uhh
can you explain a little why someone could need this? what is the advantage of your app?
like i am ungoogled searching the meaning of a xmpp client and "olmea" encryption.the app looks great...
It is an XMPP client. XMPP/Jabber is an instant messaging standard like Matrix. Older, different, some might say more efficient. But the end result is the same: put text into box, send text to other people. OMEMO (not olmea) is just the name of the end to end encryption used.
-
xmpp client
Xmpp is a decently popular chat protocol with a great number of clients:
https://xmpp.org/software/?category=clientsIt makes a lot of sense for UT to have one or more native clients, too.
-
Nice work @projectmoon looks like a solid project. Never thought that Greenline could be used as a base for anything, the way the app is structured is too "whatsapp-specifc" and with a lot of code shortcuts, a bit hacky to be honest.
I'm seeing that you're building some non python modules into the project, numpy as an example. How are you building that for arm64? Are you cross compiling, building in a arm64 worker, or something else? Thanks!
-
@projectmoon thanks for the response, u aswell @moem
Another project to look into, i grew up with irc, but yea that is kinda not so safe at all xD, wel atleast unless you mask your identity but i cant remember how i did all that back in the days
-
@nbdynl with XMPP, you can joined IRC channels via a bridge called biboumi. Very easy to set up (if you run an XMPP server; otherwise, the provider you use might have it).
-
Nice work @projectmoon looks like a solid project. Never thought that Greenline could be used as a base for anything, the way the app is structured is too "whatsapp-specifc" and with a lot of code shortcuts, a bit hacky to be honest.
I'm seeing that you're building some non python modules into the project, numpy as an example. How are you building that for arm64? Are you cross compiling, building in a arm64 worker, or something else? Thanks!
Thanks! The original reason I chose to use Greenline as the base was because Libervia is written in Python, Greenline is written in Python, Libervia acts as a daemon. All the pieces just kinda fit together. But then I wanted to make it confined, and then I a did a Rust, and now we have the current abomination!
As for building the Python part, there are two builds. There is the optional Nuitka (Python native compiler) backend build, which absolutely requires running on a native host for the architecture. This was an experiment to see if Libervia would run/start faster. It does not. At least, not enough to make it worth waiting for a 50 minute Python native compilation.
The regular backend, which is using Rust's PyO3, is just regular cross-compiled via
clickable build. The only reason Nuitka requires a native build is because it simply does not do cross-compilation. -
Thanks for this application, I miss a good XMPP client on Ubuntu Touch (Kaidan seems to not support MUC and MAM with my XMPP provider).
I've seen on the repository there's a
CLAUDE.mdfile and I'm a bit scared of vibe coded applications. Are you using Claude to fully write the application or are you using it as an assistant but still create source code yourself ? -
Thanks for this application, I miss a good XMPP client on Ubuntu Touch (Kaidan seems to not support MUC and MAM with my XMPP provider).
I've seen on the repository there's a
CLAUDE.mdfile and I'm a bit scared of vibe coded applications. Are you using Claude to fully write the application or are you using it as an assistant but still create source code yourself ?It is not vibe coded. LLMs were/are used to do most of the boring mechanical work that I can't be arsed to poke around for an hour changing, like changing qt method parameters and call-sites everywhere. The architecture of the app itself is loosely based on Indra (internal Actix event stream-esque actor handling magic).
-
Most public IRC Networks have easy access to cloaking now.
I seem to be having issues with recieving messages in Livewire. I can send and read my own messages to another person from Livewire but they only ever show one tick. The messages from the other person dont appear at all in Livewire client not even errors just silence. Other clients show them fine.
I also have 2 unread messages on the notification side app menu but nothing is unread. -
@sixwheeledbeast did you mark the app as unsuspended in UT tweak tool?
-
@projectmoon Only after I had these issues. I'm starting to get messages through now. There is no read confirmation from what I can tell. I now have it were the chat has disappeared as the last thing I sent was an image. I have to use contacts to find chat. The invisible messages I got before this are stuck as unread on the appbar
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login