Why this topic
Since information on this subject is very scattered on this forum and on the web, I hope that this work will help to clarify the situation and define an effective strategy to meet the recurring need (see the links below) of a Signal compatible client on GNU+Linux.
This discussion IS NOT:
- A search for an alternative to the Signal service. We already know XMPP, Matrix, * insert your favorite service here *.
- A debate on the development policy of Signal by Open Wisper Systems (OWS) or on the philosophical choices made by Moxie Marlinspike (Matthew Rosenfield, a founder of OWS). Only the technical implications will be discussed here.
Please, no flaming!
Signal desktop official app
This application is heavy, not suitable for small screens and has several major limitations:
You cant make calls
You cant edit or add contacts
You’re not able to change the security number from the client, a secundair phone is needed
(Source : Will the Librem 5 run Signal? (Updated))
Issues have been opened on the official OWS github to upgrade the application’s features and port it to smarphones:
There is no hope that the situation will change quickly.
It builds upon the nanu-c’ Go textsecure package:
Both are in active devlopment.
This application seems to be usable on a daily basis for all functions related to text messages.
Unfortunately, the particular software environment of UBports (inherited from Canonical’s technological choices) prevents this application from being ported to other distributions such as it.
Signal-cli, a basic command-line client for Signal developed by AsamK:
Latest commit Jan 9, 2019
It provides a commandline and dbus interface for WhisperSystems/libsignal-service-java
This client is written in Java, and is based mostly on libsignal-service-java 2, the library OpenWhisper provides and uses for its Android application. This library is based on a lower level library : libsignal-protocol-java.
I’m not that comfortable with having a daemon for messaging that requires a whole jvm running to power it. Luckily for us, OpenWhisper also has released libsignal-protocol-c 9, a C library they use for their iOS application. It is a bit hard to read for non-professional developpers though.
Someone wrote a sort of wrapper around lib-signal-protocol-c, called axc. I believe this wrapper could be used to create a daemon that acts as a standalone client, working even on desktop (given that you can use a phone number for registration).
- gkdr’ axc Client lib for libsignal-protocol-c:
Latest commit Nov 11, 2018
scli is a simple terminal user interface for Signal. It uses signal-cli and urwid.
Latest commit 4 days ago
Signal to Matrix
- Signal client for node.js node-signal-client:
Latest commit May 28, 2017
“Dirty port of the Signal Chrome App to Node.j”
- Signal bridge for Matrix:
Latest commit Feb 9, 2019
It works through the node-signal-client.
A Qt based interface for a Signal app (currently just an UI):
Last activity in january 2019.
A fork of Signal with only SMS/MMS encryption:
Latest commit on 23 Mar 2018
An issue has been opened to bring the application to Librem 5.
It is unlikely to happen, as the developer does not have enough time to maintain the android application.
But it is regularly requested to be able to encrypt SMS messages with Librem 5. Using this protocol from Signal could be interesting. This would allow compatibility with Android users.
The SMS application of Librem 5, Chatty, being based on LibPurple (see below) it would be appropriate to develop an extension of this library that would benefit many applications.
It supports third party plugins:
A (old) ticket had been opened to request that Libpurple support TextSecure (the old name for Signal):
Sean O’Brian, aka Sean Diggity (Purism’s Director of Business Development) asked for help from UBports Community to port the existing app (or develop a new one?):
And also on mastodon:
He says he’s already in discussion with OWS and Moxie.
Here are the initiatives I have been able to identify so far. Feel free to complete this list if you know of any others. I will update this post.
As you can see, there is demand and many people interested in having a real Signal client under GNU+Linux.
Today, the application for UBports has proven that this is possible.
From my point of view, two solutions seem more relevant to have Signal on the Ibrem 5 and other machines:
- Port the UBports application to GNOME as an adaptive app
- Develop a plugin for LibPurple of the Signal protocol that can be used for any application, including, why not, a Chatty fork (the UI will already be developed in this case).
Concerning SMS encryption, the protocol formerly used by TextSecure/Signal and now by Silence is an interesting option. It could be ported as a plugin to LibPurple but the problem could be the lack of documentation.
What do you think of that?
Are you interested in or do you know someone who would be interested in working on such an application?
Maybe @sean.obrien could give us some update about the exchanges he may have had with OWS or interested developers?
Others discussions on the Purism forum:
21/02/2019 edit: Add SCLI and Todd Weaver Update from Late Night Linux Podcast
05/04/2019 edit: Add new topic “secure messaging” in “Others discussions…”