Signal-FOSS
A fork of Signal for Android with proprietary Google dependencies removed. Incorporates OpenStreetMap for maps, uses websocket connection to server.
Download
DISCLAIMER: You might want to consider the officially supported APK download from Signal if you don't mind proprietary dependencies. This is an unofficial client with no guarantees of timely (or any) updates. It's licensed under GPL3, like Signal, meaning it has no warranty and you use it at your own risk. Signal is a registered trademark of the Signal Foundation in the USA. This connects to Signal's servers, all terms from their Privacy Policy apply.
Binary
F-Droid Repository:
https://fdroid.twinhelix.com/fdroid/repo?fingerprint=7B03B0232209B21B10A30A63897D3C6BCA4F58FE29BC3477E8E3D8CF8E304028Click or copy/paste the above link into the F-Droid app, and it can automatically download and update this application.
Current version direct download:
Source Code
Source is on Github in branches whose name ends in '-FOSS'.
Donations
Please consider donating to Signal or F-Droid if you'd like to support Free Software on Android.
Frequently Asked Questions
Isn't Signal for Android open source?
Not entirely. Official APKs incorporate multiple closed source Google
dependencies including Firebase Cloud Messaging (for notifications), Maps,
and Authentication. See the
app/build.gradle
file in Signal's source and look for any lines
mentioning com.google.android.gms
or
com.google.firebase
.
What's the difference between this and official Signal for Android?
Links go to pages describing relevant privacy policies:
Component: | Signal-FOSS | Signal Website Build | Signal Play Build |
---|---|---|---|
Updates | Via F-Droid Repo | Built-in updater | Via Google Play |
Notifications | Websocket to Signal server | Firebase Cloud Messaging if installed, otherwise websocket | |
Maps | OpenStreetMap | Google Maps |
A websocket connection often uses slightly more battery than Firebase Cloud Messaging, which the official client uses for message notification pings.
Signal versions 4.61.4 - 5.3.7 included Firebase ML Vision for facial recognition; this was replaced in 5.3.8 with Android's inbuilt support.
How do I switch between this and an official Signal build?
- Make sure backups are enabled in your "Chats and Media" preferences and you have written down the backup password and made a backup.
- Check your backup exists in the "Signal/Backups" folder on your internal storage.
- Uninstall the application.
- Install the other application and let it import backups on first run.
Can this be distributed on F-Droid?
F-Droid requires the original project's permission to distribute an application in their main repository. I asked for permission on their bug tracker and the Signal developers declined.
How do I compile it?
Clone the Github project, see the .github/workflows/android.yml
file; you need to add a Base64 encoded Java private key generated from
keytool
named apksign
, and its corresponding
password, both as named Github secrets. Then just push a branch whose name
ends in "-FOSS" and it will compile, sign and release a build.
To build locally, checkout the source and see the
Signal wiki for instructions (or look into the
Reproducible Builds directory for Docker build instructions).
NOTE: Instead of ./gradlew build
use
./gradlew assemblePlayFossProdRelease
to build without
Google proprietary dependencies. Also, please use apksigner
instead of jarsigner
if the wiki suggests that.
Credits
- Molly.im (Valldrac)
- For Firebase Messaging stubs.
- Fumiakiy Yoshimatsu
- For OpenStreetMap support.