I&#x27;ve certainly observed the same I think :) and yeah pleasing everyone is impossible -- I think though there&#x27;s a somewhat coherent way to put at least part of those two things together.<p>Not wanting code generation might come from people who don&#x27;t like the additional build step and artifact deployment. I don&#x27;t like that either, but what I mean by &quot;less metaprogramming&quot; is that the code that&#x27;s <i>generated</i> currently makes copious use of descriptors, metaclasses, and other &quot;complex&quot; things in a way that makes it extremely JIT-unfriendly on PyPy. We had to completely abandon it in favor of using protoc-c wrapped via CFFI. So I care about speed (almost entirely -- protobuf powers systems for us that do ~350K messages per second).<p>(I do though think it would be possible to satisfy <i>both</i> complaints simultaneously. I spent about 5 minutes trying to write a codegen-less, pure Python implementation: <a href="https:&#x2F;&#x2F;github.com&#x2F;Julian&#x2F;pb&#x2F;tree&#x2F;master&#x2F;pb" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;Julian&#x2F;pb&#x2F;tree&#x2F;master&#x2F;pb</a> but I didn&#x27;t find the Proto3 docs mature enough to figure out the binary protocol at the time. Not sure there&#x27;s enough there to see what direction I was trying to go in, but I have given this a shot before).<p>And thanks for the reply, I do agree that there is <i>some</i> conflicting concerns involved here.