This doesn't inherently have anything to do with open source, but the problem that whatever license the apps on the phone are under they can't all be implementing their own push/pull message queue, having 30 open network connections constantly waking up the phone is going to drain the battery.
If I install 100 apps that have their own messaging implementation should the phone just not be showing that to me, even though my battery is now drained in half the time as a result? I'm pointing out that as a user this is very pertinent info to be showing me, if I have 30 apps running in the background I'd like to see it.
That’s a fallacy. I tested it, the battery impact is zero if properly implemented.
I implemented a prototype before, where I had a standardized protocol, and apps give the GCM library (I modified microG’s) a URL to connect to, and an auth token.
microG’s GCM library would keep all those sockets open, just as it does with the sockets for Google’s several cloud messaging services, and upon receiving a message, wake up the app.
As result, only one app runs in background, every app can use its own notification service, you have no battery loss, and you can keep everything open.
All this can work. Google just doesn’t want it to.
There are a few things here. From a technical level, how do you think GCM/FCM is implemented? A socket is hardly a scarce resource and keeping 2 open is only 1/65535 more "expensive" (from a kernel standpoint not power/energy) than multiplexing two streams on one connection. It's possible FCM uses some micro polling strategy so that the radio can sleep for short bursts, but I don't see why the same mechanism can't be exposed to other apps if that was the case.
Second, from a product level there is a double standard now. Apps that build infrastructure using Google's platform services don't have to put a persistent notification in front of users and clutter the phone ui. Apps that choose not to depend on google (the "open source" as it pertains here but you're right it's not limited to open source apps) do. That's a pretty obvious power play.
If you want to see all the stuff going on in the background why are things that buddy up with google exempt from that in your eyes? I could flood your phone with a high priority FCM message every 500ms effectively making my app run all the time and you wouldn't know. There will be apps that do it (as there are with APNS on iOS) and it is in fact far worse for battery life. Maybe we differ on this point but there are certainly things I want happening in the background that don't need a ui. That's the precedent on the desktop anyway.
BTW The ordering of FCM messages is not guaranteed so they're not even as useful as a TCP connection.
If I install 100 apps that have their own messaging implementation should the phone just not be showing that to me, even though my battery is now drained in half the time as a result? I'm pointing out that as a user this is very pertinent info to be showing me, if I have 30 apps running in the background I'd like to see it.