Protocol buffers (called
protobuf in code) are a binary serialization format that is very small and extremely quick to encode and decode. You describe data structures in an abstract way using a declarative mini language, and generate source code (in a variety of languages) to make reading and writing the data easy for users.
You can think of protocol buffers as a modern alternative to XML, except that the definition of the data structure is separated from the content, and the content is in a binary format rather than text.
It's clear to see the benefits when you look at a real example. If we wanted to represent a person with a name in XML, we could write this:
<person> <name>MAT</name> </person>
This takes up about 30 bytes (discounting ...