Ok, so after reading for a few hours and going on the basis I got this meta-view:
- Most of the strong-crypto messengers uses Double Ratchet
- Signal protocol is the most well developed (so far). It has specifications and is developed/tested by many respected people.
Some software and notes about them (I'll just note about desktop clients, since smartphone is cancer and should not be used anyway):
- Signal: very good security (on protocol-side, it's the best option now). Has a unofficial cli client, but is written in Java. The official desktop client is bloated as fuck and has no privsep (as far as I know). Uses XMPP servers (very bad, from my perspective). Not on Tor by default. Leaks metadata.
- OMEMO: an implementation of signal protocol. Same issues as above, minus all the benefits (auditing). Can't see way use it, unless some good CLI client implementation rise from it's community
- Matrix: experimental, but has a solid foundation protocol. Many respected people are starting to advocate for it. It's in development, though, and the only client (Riot) is not capable of doing much.
- Wire: seems good, based on signal protocol principles. Written in Haskell (yuuhay). The UNIX client is in development . Though: It's not really distributed, has no privsep, the GUI seems bloated as fuck too, no Tor by default, leaks metadata.
- Ricochet: weak crypto, but leaks very few metadata. No privsep, bloated GUI.
- Tox: I have no formed opinion on it. Have no specification as Signal protocol and leaks metadata. Can't see way use it, unless you want an alternative to Signal.
- Briar Project: still in beta, but will probably replace Ricochet (I hope so). Has better crypto. Same problems: no privsep and bloated gui
My conclusion for now (I'm not an expert, take it as an opinion): text through Ricochet, Signal for image/video; wait for Briar.
Being idealist, someone will develop a software in next decade that works on mesh anonymous P2P, based on Signal Protocol/ZKP/CONIKS, using PQcrypto, that has formal proofs/verification, good coding security (safe language, capability-based, strong isolation, privsep, W^X, encrypt database by default, etc), that leaks no metadata and have no bloated interface.
But... I'm being idealist :^)