What I think we need is Interoperability, not just protocols. What I understand by interoperability is what a mature (spoken) language provides. Although its body of words remains pretty much fixed, it offers a wide range of expression. I think that what we need is a language of the internet to achieve this type of interoperability. So, in a way, a language can be seen as a communication protocol and, with such a language, two systems can talk and discover and consume each other's services. This language shouldn't change too much, but it should be complex enough, to start with, in order to allow a high degree of expression and, ultimately, interoperability.