signalapp / Signal-Android

A private messenger for Android.
https://signal.org
GNU Affero General Public License v3.0
25.58k stars 6.13k forks source link

Push-Service for Custom ROMs without GCM #1106

Closed SecUpwN closed 10 years ago

SecUpwN commented 10 years ago

Dear @moxie0, as much as I enjoy using TextSecure as a complete replacement for the standard SMS app, I am not happy with the registration process for the Push-Service of TextSecure. To be specific, I am running AOKP and TextSecure tells me that registering with the Push-Service is not possible without having the Google PlayStore-App installed. To be very clear about this: Google Play will NEVER EVER gain permission to land on my phone. The way I see it, being required to install Google Play (in my eyes one of the most dangerous privacy-breaking apps out there) just to be able to use the Push-Service of TextSecure (which focuses on PRIVACY) is like a snake biting its own tail. I guess TextSecure utiltizes Google Cloud Messaging (GCM), and as such Google Play is "absolutely necessary", am I right?

Don't get me wrong: Using TextSecure feels awesome. It just does feel that way leaving WhatsApp behind and knowing that TextSecure is being recommended by The Guardian Project and can be safely relied on to protect my data. But having to have Google Play just feels wrong. My intention is to DITCH Google completely (except for Android Custom ROMs) in the long run, not creating yet another tie for myself. So why don't we make an effort to find an alternative for this crappy Google Cloud Messaging?

L3st3r commented 10 years ago

I'm not moxie, but maybe I can help anyway.

I guess TextSecure utiltizes Google Cloud Messaging (GCM), and as such Google Play is "absolutely necessary", am I right?

Yes, that's right. Google Play is at least necessary for PUSH messages, as I understood it.

There is a discussion going on about the dependency on Google Play: #127.

And there are already some efforts on implementing Web Socket support, see #1000 for that.

SecUpwN commented 10 years ago

Thanks to you @L3st3r for letting me know this is being worked on! Scanning the ongoing discussion I spotted that a PoC with an alternative to GCM had been mentioned - is it available somewhere? If I can grab a bleeding-edge version other than the one featured on GPlay some place else, please let me know.

L3st3r commented 10 years ago

As far as I know, there is only the code at the moment and it isn't fully working yet. But I'm sure it will be announced at #1000 when you can start using it.

BTW: You might want to know that @moxie0 commented on the performance (delay and battery usage) of WebSockets (this is from #127):

Substantially worse than GCM. It won't work well, but it's the only option short of building a worldwide push network.

moxie0 commented 10 years ago

@SecUpwN We are not idiots, we are aware of GCM's limitations, and we would like to support an alternative. However, there is no alternative push network to switch to.

This is a collaborative open source project, and if you wish to influence such a project's direction, I recommend that you approach it from what you can contribute, not what you demand.

SecUpwN commented 10 years ago

Dear @moxie0, please accept my sincere apologies and let me clarify that I never intended to "demand" anything. I am thankful for your dedication and the heart blood you put into your projects and would love to see TextSecure be featured on PRISM BREAK, hence I filed an issue: https://github.com/nylira/prism-break/issues/896. Thank you!

oiceberg commented 10 years ago

Hi Everybody! Very modestly and respectfully, I would like to share a paragraph that is available in the proprietary software Threema https://shop.threema.ch/ :

"Threema uses Google Cloud Messaging (GCM) to notify the app of new messages in the background. If Google Apps are not installed, you will not be informed of new messages unless you enable polling in the app (the polling interval is fixed at 15 minutes and will cause some additional battery drain and data usage)." (my emphasis)

@moxie0, I read in the mail list your arguments about why the GCM is necessary. Maybe the alternative used by Threema be exactly that you always says about the difficulty to implement a free alternative to GCM. Anyway, I thinked that it could be a possibility: the message goes to the TextSecure database and the user without GCM can activate, himself, the polling to receive all the messages to him available in the cloud.

I'm not sure, but maybe be exactly here the impossibility: maybe the messages sent to GCM be stored in the GCM database, and there is no TextSecure database for messages (just for users etc.). If is it what happens, I apologize for taking your time with this nonsense.

Great Hub, and thanks for all the efforts to make TextSecure what it is! o/

JavaJens commented 10 years ago

Theoretically the server has support for a database that stores messages which can be queried by the device or if an active WebSocket connection is registered are sent over that connection. However as far as I know the deployed server doesn't have this functionality enabled and the client doesn't do polling because it's resource hungry monster ;)

@moxie0 are you thinking about enabling WebSockets as soon as TheBlueMatt is further along with the Chrome extension? And is his server federated with yours?

reezer commented 10 years ago

Speaking about GCM alternatives. I didn't really dive too deep into this yet, but OpenMobster might provide one: https://code.google.com/p/openmobster/wiki/learnmore

metbril commented 9 years ago

Another GCM alternative would be Pushy.

https://pushy.me

Which recently got implemented by Fastmail in their android app.

Rui-Santos commented 9 years ago

What about http://www.pushlets.com/ ? It's open source. And old. But maybe somewhere to get ideas from. The whitepaper: http://www.pushlets.com/doc/whitepaper-toc.html

You should also take a look at MQTT (http://mqtt.org/). There is a Java library that is compatible with Android; the Eclipse Paho Client (http://www.eclipse.org/paho/). In very simplistic terms, MQTT is an asynchronous publish/subscribe mechanism that is well suited for what TS needs. It runs on top of TCP/IP. It needs to use a MQTT broker on the server side i.e. mosquitto (http://mosquitto.org) or RSMB (Really Small Message Broker)