<p>What are the biggest pros and cons of <a href="http://incubator.apache.org/thrift/" rel="noreferrer">Apache Thrift</a> vs <a href="http://code.google.com/apis/protocolbuffers/" rel="noreferrer">Google's Protocol Buffers</a>?</p>

Protocol Buffers seems to have a more compact representation, but that's only an impression I get from reading the Thrift whitepaper.  In their own words:
We decided against some extreme storage optimizations (i.e. packing
  small integers into ASCII or using a 7-bit continuation format)
  for the sake of simplicity and clarity in the code. These alterations
  can easily be made if and when we encounter a performance-critical
  use case that demands them.
Also, it may just be my impression, but Protocol Buffers seems to have some thicker abstractions around struct versioning.  Thrift does have some versioning support, but it takes a bit of effort to make it happen.