ASN.1 have some nice ideas that the developer community has failed to grok, reverting back to simpler ideas that are more immediately rewarding, such as hand coding a lot of code that blasts away text based messages that may or may not be understandable to the recipients because, hey it works on my machine.
The core idea is that there is a language that defines the abstract message content, and there can be several encoders - binary, text, compact binary, depening on needs and computing and bandwidth requirements.
There are also some support for defining the criticality of any extensions to a protocol, to inform recipients if the can disregard an additional part it does not understand or if it's critical.
This is not an afterthough as json schema, but the core idea.