I think one of the biggest structural problems with versatile protocols like Matrix is that it's all one big spec, and the assumption (and example set by flagship client) is that one client should implement all of it.
This means it's impossible to build focused experiences for parts of the overall feature set (e.g. a calls-only app).