Whisperfish - The unofficial SailfishOS Signal client

Hello, world!

Today I’m feeling healthy and confident enough to start a thread about Whisperfish, the Signal client originally built by Andrew E. Bruno in 2016 (thank you so much, Andrew). In February 2019, aebruno announced the EOL of his Whisperfish. I have then, four months later, volunteered to take the lead and rewrite the whole thing against libsignal-protocol-c, the official and upstream ratchet/axolotl/e2ee library.

It’s taken me a long time, and during the time I switched to Rust, which turned out to be a radical choice back then, but has since paid of: Signal themselves started switching the protocol library to Rust, and SailfishOS introduced preliminary Rust support in 3.4. I had to DIY my Rust SDK (and haven’t migrated yet).

What followed was a painful rewrite of many things, but it is now starting to pay off. I’d like to thank Markus Törnqvist and Gabriel Féron for their efforts in respectively the Sailfish part and the back end part. I have (re)written the bulk of the application, including a very experimental (but very much working) async/await-enabled Qt interface, which I want to get cleaned up by Whisperfish 1.0.0.

Whisperfish 0.6-alpha.3

The result of our efforts is, currently, Whisperfish 0.6-alpha.3. While I am confident many more people can use the “new” Whisperfish, be aware that this is an alpha release. This means that things will fail and you might lose data. That being said: I have many reports of people losing data with Whisperfish 0.5, data that is not lost on my rewrite. This is due to the new cryptographic library, and many updated API calls. If you install this software (thanks!) please leave feedback, both positive and negative in this thread.

Implemented features:

  • Sending and receiving messages
  • Receiving attachments

Notably not implemented:

  • Registration
  • Sending attachments
  • Starting conversations with new people
  • Altering groups

The above means, that if you can wait with sending pictures (my priority number one) and if you have a working Whisperfish 0.5 installation, you can probably start using the Whisperfish 0.6-alpha’s. Be prepared to send me feedback, either through the forum, Matrix or IRC (freenode#whisperfish). Bug reports and feature requests are more than welcome on the Gitlab issue tracker

Downloads

Before downloading any of this, please read the above paragraph.

Master branch builds (“nightlies”)

Version history

Published versions can be found on my OpenRepos account.

40 Likes

Do I understand correctly, that if I don’t have Whisperfish 0.5 I can’t install 0.6?

That is correct for now, indeed. I want the adoption to go slowly, to catch some bugs early on, and not to overwhelm the Signal servers just yet. alpha.4 will have registration, as well as sending attachments.

Thanks for all of your efforts with this @rubdos. It’s great to see Whisperfish being kept alive… and driven forwards. I’m looking forward to trying it out.

3 Likes

I thank you, and will happily donate $ to this cause! The old Whisperfish stopped accepting attachments, so I had to go back to the Android app. Which I hate, and which loses the data connection every time I get an MMS. So I’d love to go back to Whisperfish when it is ready.

1 Like

Thanks, @flypig and @sethdove for the kind words!

If you’re really keen on donating, I have a Liberapay account at https://liberapay.com/rubdos/. I’ve stopped to refuse donations, although I have to tell you: I am full time employed (at the Vrije Universiteit Brussel as researcher in applied cryptography), and money sadly doesn’t buy me time. It does buy me coffee and beer though, which is of course appreciated :slight_smile:

5 Likes

Update! I’ve pushed Whisperfish 0.6.0-alpha.4. I do not have the rights (yet?) to edit my topic start, to update the overview, or is that not-done here?

Either way: I am quite confident that at this point, Whisperfish is usable for a lot of users! :partying_face:

Implemented features:

  • Registration
  • Sending attachments

Notably not implemented:

  • GroupV2
  • UUID-only devices
  • Creating new conversations (contact selection)
  • Group management (creating and modifying groups)
  • Linking devices (i.e., Signal Desktop)

Known issues

  • New 3.4 installs (the ones with defaultuser) will panic on displaying messages. (fixed on master)
  • Entering a phone number for new messages doesn’t accept leading +, but you can just leave it out! (fixed on master)
8 Likes

Woohoo, wonderful thanks to you and your team! :champagne: :love_you_gesture: :notes:

Sooo that would mean Whisperfish is ready for new users, who didn’t have 0.5 installed?

It absolutely is. Please do check whether you created any Signal groups after the October update (or Signal Beta, if that’s your thing). If you have, please wait until we implement groupsv2!

If you have an old (defunct) 0.5 installation, or if you tried to register with 0.5 before, you may want to remove .local/share/harbour-whisperfish (recursively) and .config/harbour-whisperfish/*. I have not implemented anything as a “re-register” functionality yet!

3 Likes

Hej Rubdos

first, thanks a lot for your work… this kind of things are neccesary for sailfish.

when trying to do a new message the app doesnt recognize any contact and if I try to write them manually the + bottom doesnt work , so I cant introduce any number. I am using it in a sony xa2

2 Likes

Same for me on XA2 Ultra.

Also thanks for amazing work!

Contact selection is indeed unimplemented, but manually entering a phone number should work. The regex is a bit flakey there (I’ll note that for beta.1, thanks for the report!), but it should work if you just leave the + out! +32474123456 becomes 32474123456.

EDIT: the patch that accepts the + is on the master branch. Should be fixed in next release (and contact selection is on the road map)

2 Likes

it doesnt work yet. if no symbol, no recognice number

Just had a look at it: try using the 00 prefix instead of +, that seems to work here. +32474123456 -> 0032474123456. I’ll take note to make that clearer in the UI!

EDIT; doesn’t look like I can actually send a message to a new number though. That’s planned for the next release! :slight_smile:
Receiving messages from a new number does work, so you can always ask to have them send you something on Signal, via another medium.

2 Likes

Doing some testing. Aside from the observations already noted (no contact selection, sending messages to new numbers doesn’t work), it seems I can’t get Whisperfish to work over my LTE data connection. The card icon stays orange after entering my password, and messages don’t go through. When I close Whisperfish, enable WiFi and reenter my password, the icon goes green and messages are sent normally (verified with double check mark and another device). I have verified internet connectivity, and have rebooted/toggled airplane mode on and off.

I’m not sure what’s going on here. Device is an Xperia XA2 Ultra, on T-Mobile LTE (US). Data works, confirmed with speedtest and other apps. Let me know if I can be of further assistance.

That’s peculiar indeed! I don’t immediately see what could cause that. Could you provide me with a (partial) trace log? Switch to LTE, then open Whisperfish on the terminal: RUST_LOG=trace harbour-whisperfish, and enter password as per usual. The terminal will be extremely chatty.

Important: currently the logs are not sanitized: they print phone numbers and secrets. You might want to cherry-pick some lines that you judge may be interesting. I expect to see ERROR and WARN lines that should jump out, those will quickly give me or Gabriel a clue.

Let me know if I can help obtaining the log (and feel free to come have a chat on Matrix/IRC).

After some debugging (thank you for the tip on the trace log), I discovered that T-Mobile (US) suddenly changed behavior on the fast.t-mobile.com APN. I reverted to the old epc.t-mobile.com APN and everything works as expected. Changing the APN back makes the “couldn’t create websocket” error return, so I’m now certain it is the culprit… nothing to do with Whisperfish. Apologies!

2 Likes

Slightly off-topic:
Isn’t Signal very much against third-party/unofficial clients? Do Whisperfish developers have any official agreement with them?

They seemed very much against it a few years ago, but our feeling is that they don’t mind it much any more. We haven’t heard from they yet, and they never really seemed terribly unhappy with Whisperfish 0.5 either as far as I know.

I’m quite sure they changed their minds, or at least tolerate us now!

If I remember correctly, Signal faced severe backlash over their stance on third-party clients. They reversed position pretty rapidly.

2 Likes