- I get too much spam, so I tend to check email less. - It's not as "real time" as I sometimes need it to be. Sill feels more like mail than like conversation. - I like to know when people read my messages (I know there's apps that allow this, but it's not ubiquitous) - I like to know when people are typing (aka, are currently in the conversation) - Different email programs send/format emails differently. Some seem to keep all the replies attached to the bottom of the latest message in a way my email program can't figure out and collapse.
I'm a fan of email tbh, and I wish more resources were invested in making it better, but I just don't think it lies in the same "space" as instant messaging.
For XMPP I recommend Conversations (https://conversations.im/) as client on Android and ChatSecure as iOS client (https://chatsecure.org/). An simple easy to use server implementation is Prosody (https://prosody.im/), but ejabberd (https://www.ejabberd.im/) is a good choice too. There are also multiple public servers if you don't want to run your own server instance, for example the XMPP server run by DuckDuckGo (https://duck.co/help/community-platform/xmpp).
For Matrix Riot is the best client implementation which runs on multiple platforms (https://riot.im/). The (afaik) only usable server implementation is the reference implementation (https://matrix.org/), but at some future point the currently pre-alpha Rust-based Ruma implementation (https://www.ruma.io/) could be a good choice too.
A nice thing about XMPP is that server-based transports can provide gateway-functionality to other networks. For example with Spectrum (http://spectrum.im/) it's possible to use your XMPP client of choice to chat with your friends that use Facebook Messenger.
It's looking like my best option is to buy an iPhone for an iMessage/Signal one-two punch.