I suspect it comes down to the details of the serialization format.<p>I know that Thrift and Protobuf were developed &#x2F; publicly released around the same time (~2008). They both have serialization and RPC approaches. They both have an IDL format and a compiler for codegen in static languages like C++ and Java.<p>Thrift was adopted by the Apache O&#x2F;SS community and so it can be found in some Apache  projects, e.g. Thrift is used as an interop format in Apache Storm and as a serialization backend supported by Apache Parquet.<p>Thrift has had a lot of client libraries for different languages come out over the years, so it tends to work everywhere.<p>IIRC, CapNProto and FlatBuffers were each built as fresh takes on protobuf. So I imagine they are similar, with IDLs and serialization approaches of their own. I took a quick look at CapNProto&#x27;s Python module documentation and it looks very similar to thriftpy in philosophy, but I don&#x27;t know its intricate details as I haven&#x27;t used it.<p>This guide to Thrift covers all the important details of its schema approach and is meant as a cross-language guide. It should be the official docs, but alas, it&#x27;s not!<p><a href="https:&#x2F;&#x2F;diwakergupta.github.io&#x2F;thrift-missing-guide&#x2F;" rel="nofollow">https:&#x2F;&#x2F;diwakergupta.github.io&#x2F;thrift-missing-guide&#x2F;</a>