I've degoogled Signal Messenger

Hi F-Droid,

I’ve degoogled Signal Messenger’s website build so it can be compiled and runs without any Google Play Services / Firebase code, and is completely open source.

Patches are available on my Github - look for the most recent branch with -FOSS in its name. I’m not distributing builds as I’m aware of the historical issues between F-Droid and Signal; this isn’t an inclusion request, on that note. Also, maps and automatic facial recognition don’t work; there’s a separate patch for OSM support which the Signal developers were not keen on merging. You will simply have to survive without Google’s binary ML-Kit facial recognition for now :wink:.

I’ve been discussing it on the Signal User Community forums, and have filed a pull request, neither of which have generated a response from the Signal developers in the last two months. (Notably recent changes to Signal mean that my pull request breaks the Play release build, but that can likely be addressed if they ever decide to merge it).

So, I figured I would post it here in case anyone is interested in building it; check the Dockerfile in Signal’s source for build instructions. Thanks to Axet’s android-firebase-fake library which I’ve lightly extended to stub out the Firebase dependencies, alongside my own GMS stub implementation – potentially these could be leveraged to degoogle more apps e.g. the new Firefox?

Have fun!

4 Likes

Welcome in the F-Droid forum!
Nice project. Do you know Langis? You seem to have the same goal. They also have a F-Droid repo

1 Like

Yep, I emailed the Langis dev a couple of weeks ago but so far they’ve been too busy to look at incorporating my patches. Fingers crossed they find it useful.

4 Likes

It would be great though to have an official degoogled Signal build on Fdroid. Is this likely to happen ?

1 Like

Is any of this useful in light of

@Altons - I asked on the Signal User Community forums thread yesterday if the current devs would have any objection to adding it to F-Droid :wink: . Thanks for the link @TPS, it’s good to have some of the context. I’ve updated my patches to v4.68.8.

There are other Signal-compatible forks like the above Langis, Molly.im, and JohanW’s builds to name a few – the latter two have a slightly different feature set but all still include Google/Firebase code.

I would think if it were added here it would be wiser to have a different name (Fignal, perhaps?) and logo to make very clear it’s unofficial and if it breaks F-Droid users get to keep both parts. The Langis build CI script would be useful for renaming. Probably keep Signal’s build expiry too so users have to update it via F-Droid. Also, this might require more experienced devs to check if all Maven dependencies/repositories are F-Droid compatible.

Patches updated to v4.69.6. I’ve posted about this on the F-Droid RFP Tracker, and filed a Signal bug asking for permission to list on F-Droid.

Forgive me if this sounds ignorant, but doesn’t Signal already provide a solution for those running devices that don’t include Play Services? For example I’m running it on GrapheneOS with no issues, am I missing something?

Fair question @simon ! It runs on devices without Play Services by using a websocket connection. However the build process still includes closed source Google libraries which are embedded in the APK and interface with the Play Services on the device. My code removes these entirely.

Greyson (Signal dev) has kindly responded to my Github pull request and bug filed in my last comment. They are open to merging some GMS utility call removal but prefer to keep their website build using Play Services where possible and remain opposed to F-Droid distributing a fork.

2 Likes

Thanks for clarifying @tw-hx I was unaware of this fact. Do you know if they are used at all in the absence of Google Play Services?

Cool, thanks for your effort!
I find the fallback approach they are taking quite reasonable.

So, the remaining big chunk is google maps? From greyson’s comment you can see they are not adverse to an OSM fallback. Also moxie commented on the PR fom 2018 but was not fully happy with the way of implementation.

Regarding Signal on F-Droid: Maybe stupid idea, but wouldn’t it already help to make an app which downloads the apk from the Signal website (verifies the signing certificate). Thus, new users can easily get Signal and well, Signal would be on F-Droid (kind of).

1 Like

@simon - They are used to detect Google Play Services on the device (which returns “no”), and for machine learning facial recognition on Google-free devices. They are also used for a bunch of utility functions like array concatenation and string <-> hex conversion but as mentioned Greyson seems happy to merge one patch of mine replacing those instances with open source code, fingers crossed!

@don - Yes, Maps is the largest remaining area; I get the impression they want an API compatible “drop in” much like MicroG does. Facial recognition too but really that can be skipped. Fallback is reasonable but doesn’t meet F-Droid’s standards as it still must include Google’s binary blobs in the APK.

1 Like

Cheers for the info @tw-hx and thanks heaps your efforts!

1 Like

I would say “degooglelized” :sweat_smile:

The APK from their website (if you can find it because they don’t advertise it) will autoupdate, so why bother? You’d be lying to yourself that “Signal in on F-Droid” somehow getting all the FOSS klout of F-Droid over a silo messenger?

Also, you know all the things they oppose to, yet you still want to use it? Why? :confused:

Well, I wrote it in the next sentence: “Thus, new users can easily get Signal…”.
If you want to bring new and non-technical users to F-Droid you need to have certain apps. Besides a browser a proper messenger app is a must. I know there are many other messenger apps but being honest none are usable for non-techies.

It’s not all black and white. They have their reasons why they don’t federate, don’t want forks to use their servers etc. Mostly understandable for me. It’s still free software, isn’t it?

For me this is also one of the main reasons why Signal is the only free messenger on a par with WhatsApp et al. Sure, I hope this changes and there will be more but until then Signal will be my go to messenger.

Yes, open apps, federated apps, honest apps, not siloed apps that are AGAINST F-Droid, why isn’t this paradox seen?

Did you try Conversations (or forks) yet? They’re damn usable… and truly open source from the server to the client.

You are not free to use their client if you compile it, you are not free to connect to their server it you host your own server, which freedom do you talk about exactly?

On par as being a closed silo? Yes… they are on par.

Are they violating the GPL-3.0 or AGPL-3.0 License?

Read We can include Signal in F-Droid and those links posted there.

A program is free software if the program’s users have the four essential freedoms:

From here: https://www.gnu.org/philosophy/free-sw.en.html

  • The freedom to run the program as you wish, for any purpose (freedom 0).

I can’t compile AND connect to their servers, right?

  • The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.

We have this? Maybe, but since there’s no federation I can’t swear the Signal server is not doing anything funny.

  • The freedom to redistribute copies so you can help others (freedom 2).

Not possible to since Google Services are not FOSS (well this is linked with the one below in the case of F-Droid)

  • The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

And the reason for these endless threads, F-Droid can’t host a modified (truly FOSS) version.

So add the good points, subtract the bad ones, is the result 4 (four) freedoms or less? If it’s less…

/PS: I’m no lawyer so yeah :slight_smile:

Really, all you should read is: https://signal.org/blog/the-ecosystem-is-moving/

The Conversations dev rebuttal: https://gultsch.de/objection.html (I’ve recommended Conversations or forks above because the ecosystem moved in a good way)

And the comments on the 2019 Moxie rehash of the same text: https://blog.jabberhead.tk/2019/12/29/re-the-ecosystem-is-moving/

(fun fact Moxie took down the Youtube video of his own talk for some mystical reasons only to end up referencing if from Peertube a decentralized system later on as he needed to make some Twitter justifications of Signal’s development)

Also, did you see we host the Telegram client? That’s ironic…

Not possible to since Google Services are not FOSS (well this is linked with the one below in the case of F-Droid)

As per the thread title and first post, I have made patches that let Signal compile and run without any of the Google Play Services or Firebase binaries. Hopefully no longer an issue!

I did ask the Signal devs in my pull request if they would mind distributing a fork on F-Droid and they declined, so the problem remains lack of permission from their end. It would be nice if Signal were to formally allow this or federation, but as noted they have their reasons. That might make it a “non-free network service” in F-Droid parlance but doesn’t violate the GPL. As other posters note there’s always Matrix, XMPP and similar…