Earlier quoted context omitted.
I've never looked at proto3, but proto2 has at least the following issues: * No clue about namespacing. If you pick the wrong name for something, you can have name clashes within a protobuf, across uninterpreted option classes, with protobuf source code, with your own source code; and it's different if you're in Python or C. Nowhere are naming restrictions defined. * The API is maddening and inconsistent, especially…
The short answer is the Python implementation wasn't exactly great.
Both implementations are equally bad, despite that they seem to have been written by two separate teams that didn't communicate with each other.