title: Difference between Microsoft's Bond and Google's Protocol Buffers
body: <p>Recently (January 2015) Microsoft open-sourced <a href="https://github.com/Microsoft/bond/">Bond</a>, their framework for working with schematized data. In many aspects it is similar to Google's <a href="https://developers.google.com/protocol-buffers/">Protocol Buffers</a>.</p>
  
  <p>What are the biggest differences between the two? What are pros and cons, that is, in which situations I would like to use one, but not the other? Of course, I'm not talking about obvious things like consistency with other projects or already existing APIs, but rather the features of both libraries. To give an example, Bond has <a href="http://microsoft.github.io/bond/manual/bond_cpp.html#understanding-bondedt"><code>bonded&lt;T&gt;</code></a> which, if I remember correctly, doesn't have a counterpart in Protocol Buffers.</p>