Signal / Silence on GNU+Linux : A comprehensive summary | Librem 5 app


#1

Why this topic

The purpose of this topic is to identify the different initiatives that exist to date to port the Signal secure messaging application to GNU+Linux systems, including PureOS on desktop and Librem 5.

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

Open Whisper Systems (OWS) currently offers a multi-system PC client based on the electron framework.

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.

UBport app

Aaron Kimmig, aka nanu-c, maintains and develops an application compatible with Signal messaging for UBports (the successor to Ubuntu Touch). The TextSecure UI is in Go and QML :


It builds upon the nanu-c’ Go textsecure package:

Both are in active devlopment.

This are forks of unmaintenained jamino’s textsecure-qml and textsecure.

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

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

Source Signal client for the Librem 5

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.

MartinDelille’s chat-qt

A Qt based interface for a Signal app (currently just an UI):


Last activity in january 2019.

Silence IM

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.

LibPurple:

Libpurple is a C library (GNU GPL), used by Pidgin for example, to support many protocols (Jabber, IRC, SILC, SIP, Zeroconf, AIM, Gadu-Gadu, ICQ, MSN, Yahoo! IM and Zephyr etc.).

It supports third party plugins:
https://developer.pidgin.im/wiki/ThirdPartyPlugins

A (old) ticket had been opened to request that Libpurple support TextSecure (the old name for Signal):

https://developer.pidgin.im/ticket/16537

As Chatty, the Librem 5 SMS / XMPP app, is based on LibPurple, to develop a libpurple plugin for Signal protocol that can be used by all software based on this library could be a good idea.

Purism’s efforts

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.

Discussions

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?

Previous discussions on the Purism forum:




#2

Is there a way to crowdfund or otherwise sponsor the development of Signal on Librem 5? I’d be willing to chip in if one of the main constraints is paying for developer efforts.


#3

Definitely, count me in!


#4

I think that would be a good idea.
However, there are not enough people interested to finance a developer at 100% in my opinion.
But we could do something like a bountysource to reward the developers.


#5

Probably wont use Signal as it’s endorsed by Edward Snowden. Once CIA, always CIA. His “capture” in Russia makes no sense logically (research this yourself). Is Telegram better? No idea.


#6

That’s absurd.

Edward Snowden has no affiliation with Signal and only endorses it. It’s like saying “I don’t buy products with american steel anymore because Donald Trump and endorses american steel” which is just silly. Hell, that example is even less extreme because there are proof of his colleagues having secret meetings with russian diplomats while as far as I know Edward Snowden has not had contact with any Signal developers.


#7

Sorry pal, I don’t trust the guy. And he does give it his stamp of approval.

Interesting how they fail to mention where the 50 million came from.


#8

Please, don’t feed…


#9

Next time try to actually read the article, it’s right there in the fourth paragraph

Acton, who became a billionaire after selling WhatsApp to Facebook in 2014, is providing the funds and will become the organization’s executive chairman. He pledged to take an active role in operations and product development.


#10

Signal is mine main app for SMS/MMS communication. I love the fact that people who use Signal as well will get an encrypted message, however those who are not in Signal yet will get normal SMM instead. Would love to have this working on my Prism 5 ; )