Differences between protobuf v2 and v3.
proto3 does not support required/optional fields. All fields in proto3 are optional.
proto3 does not support specifying default values for optional fields. In proto3, the default value is fixed for type (it is usually 0, false, empty string, etc.)
proto2 supports groups (but they are deprecated anyway)
proto2 supports extensions mechanism
extensions are not supported for oneof