just curious, why do use protobuf instead of flatbuffers?
The whole situation is extra confusing because some of the core codegen plugins are built into protoc. That's a distribution and version-matching strategy from the Google team rather than a requirement of the plugin system. I'd very much like Google to ship the built-in plugins as standalone binaries, even if they're also bundled with protoc.
The problem is that each of these standards is different, and impossible to modify.
So, we need something that can serialize one standard to a wire format, and then deserialize from that wire format to another standard.
Oh wait...