Time to jump ship! Use element / matrix an open, decentralized, end-to-end encrypted chat protocol with slick clients for Android, iOS, Desktop & Web: https://element.io/
Also easy to self-host a server, if you need full control:
When the lockdowns started I sent my relatively old parents to riot.io. They were able to get it working on their phones and tablets pretty well. The only thing we had trouble with was the riot.io-mediated jitsi multi-person video conference setup. But they handled the basic riot.io setup and 1-to-1 stuff fine.
The notifications transport for these on iOS is necessarily centralized as push notifications have to be sent from an apple developer client cert to Apple's APNS system.
There is no such thing as decentralized messaging on iOS for this reason.
The matrix developers run a push service, which all servers have to talk to to push notifications to their iOS app, even if you run your own instance.
[ EDIT: The following statement is false! Changes in APNS have rendered my previous understanding out of date. ] This means that both the push server operator, as well as Apple, can see the content of all of the push notification messages, thereby bypassing the e2e encryption as well.
> The matrix developers run a push service, which all servers have to talk to to push notifications to their iOS app, even if you run your own instance.
This isn't really true: there are lots of Matrix iOS clients out there, and each run their own separate push server. Only Element iOS's push server is run by the 'matrix developers', and if you are worried about that then (if you are an iOS developer) you can build your own copy of Element iOS pointed at your own push server.
> This means that both the push server operator, as well as Apple, can see the content of all of the push notification messages, thereby bypassing the e2e encryption as well.
This is completely incorrect. By definition, the server can't see the contents of end-to-end encrypted messages, and we don't send push contents (encrypted or otherwise) to the push gateway anyway. Instead, the push notification is a single flag sent to the client to tell it to wake up, which then runs a Push Extension (on iOS) to talk to the Matrix server and do E2EE in order to display the notification body (if desired). It's become particularly painful since iOS 13 thanks to https://appleinsider.com/articles/19/09/05/secure-messaging-....
Oh, okay, so just to confirm this means that push servers *AREN'T* getting any information about the messages being sent to users? The contents of the message, who sent it, etc?
They don't get the contents of the message, and I don't believe (off the top of my head) that they get told who sent the message. It's just a "you received a message" notification, that the phone then has to expand into the actual notification itself by talking direct to the server.
I stand corrected, this is a new feature. Still, the push message itself is centralized via a single dev account, and of course Apple, even if you are running your own homeserver.
I thought that it just sends push notifications without content which then wake up the app so that the app itself can fetch the message from your homeserver with encryption
Try talking with friends / groups on a few different servers (it's decentralised, remember) and you will soon see what scalability issues are. As you add n servers to grow Signal you need n^x for Matrix.
As a longish time Matrix user I've never experienced scalability issues due to federation. The federation actually works pretty well. Scalability from Matrix comes/came due to the fact that some servers were too popular. Though that is actively being worked on: https://matrix.org/blog/2020/11/03/how-we-fixed-synapses-sca...
You can use the public matrix server that offers an interface to it with the Element web client and is maintained by Element the company (used to be called New Vector):
https://app.element.io/
If you do want to set up your own server I wrote a guide when I learned how to do it with Google cloud instances:
https://munfred.com/matrix
Also easy to self-host a server, if you need full control:
$ mkdir -p ~/synapse
$ pip3.6 install --user jinja2 matrix-synapse
$ cd ~/synapse
$ python3.6 -m synapse.app.homeserver \ --server-name my.domain.name \ --config-path homeserver.yaml \ --generate-config \ --report-stats=no