I'm a firm believer that the only practical way for any protocol to have a shot at real decentralization (and not fall prey to defacto centralization via default client settings and new user onboarding pitfalls) is after a radical personal server revolution.
As long as users are _only_ running clients, the balance is always going to slip towards centralized back ends even in the most well-intentioned networks. Every user must be their own server, providing client UI code to himself. Everyone's servers connect to each other, everyone's client connects to their own single server.