Thrift and Protobuf both support JSON as transport, yes - it&#x27;s useful when dealing with clients that can&#x27;t support the binary encodings (eg browsers, last time I checked). It&#x27;s an added benefit: you can use the fast encoding between clients that support it, but can fallback as needed.<p>The difference between communicating changes by setting a bunch of rules on how to do versioning&#x2F;structure&#x2F;etc vs changing an IDL is akin to verifying a <i>program structure</i> with unit tests and code reviews vs enforcing them with a compiler (sure, you can always use stuff like Json Schema or XSLT - personally never had a good experience w&#x2F; those). The latter is far easier, in my experience.