There has been a recent push in decentralisation and interoperability for communication networks. This is great, but most of the popular protocols have a fatal flaw: extensibility. They allow implementations to extend the featureset by including optional components or allowing them to create their own.
This leads to a lot of problems. If an implementation is popular enough, it will in essence hold other implementations intending to interoperate with it hostage because the extended features may change the meaning of information. For example, on the Fediverse, Pleroma used the extensibility features to add reactions. Most users cannot easily migrate their followers and posts, so it forces anyone not using Pleroma to implement it in their software. This makes important communications completely hidden from certain users.
A particularly egregious example is quote reposts. It's a feature very few people wanted, but became a desired feature by people on a popular frontend called Soapbox. Soapbox implemented it, and made a massive amount of posts un-navigateable with other frontends. Instead it forces users to click on trees of links to browse quote threads, leading them to the bloated Soapblox client on the remote instance. Unless, of course, your clients also implements it. This of course holds other clients hostage because they're forced to implement quote reposts to have posts be readable.
Another good example is XMPP, which to say the least, is a mess. You're constantly fighting clients and servers with various XEPs, people using different encryption schemes, and massive configurations with all the different XEPs. One of my first experiences with using XMPP was a room owner yelling at its members to disable encryption, otherwise she'd kick them. It's an absolute clusterfuck that is borderline unusable. Many will argue "But it works for people like WhatsApp!", but the part they're missing is that it's not an interoperable network, it's a closed one.
That's really the fundamental problem. Interoperability and extensibility are a horrible idea together. It leads to people implementing features in conflicting or harmful ways, arguments and infighting (Soapbox has a history of implementing features that cause problems with other software and people,) and overall creates a mess of a user experience. People want these networks to be used by as many people as possible, but how is your grandma supposed to know that sending an Emoji doesn't work on a Mastodon, but works on a Pleroma or Misskey? How are average people supposed to grasp that? Unless you use a completely different protocol or block federation with instances that use different featuresets it's not going to be used by normal people. Understanding all of this is very much not something most people will be able to do. Understanding federation already is a massive problem. We can do better than this.