Summary
Hi TTN team,
I’m currently integrating TTN’s gRPC API into a codebase and encountered a recurring issue stemming from TTN’s continued use of:
buf.build/envoyproxy/protoc-gen-validate
which corresponds to the deprecated protoc-gen-validate (PGV) runtime.
This is creating namespace conflicts with modern Buf-generated protobuf code using the Protovalidate runtime: https://protovalidate.com/
Specifically, PGV and Protovalidate both register the same proto:
which leads to the following panic at runtime:
panic: proto: file "validate/validate.proto" is already registered
previously from: "buf.build/gen/go/envoyproxy/protoc-gen-validate/protocolbuffers/go/validate"
currently from: "github.com/envoyproxy/protoc-gen-validate/validate"
Current Situation
No response
Why do we need this? Who uses it, and when?
Why TTN Should Migrate to Protovalidate
1. PGV is no longer maintained, and the Envoy project does not recommend using its Go runtime.
2. Protovalidate is the official successor, built and maintained by Buf.
3. Protovalidate:
• provides a more modern validation engine
• supports rich validation semantics
• avoids global registration conflicts
• integrates cleanly with Buf’s ecosystem and codegen
4. Many Go teams (mine included) are increasingly adopting Protovalidate, making PGV-based APIs difficult to integrate without hacks or stubbing modules.
Proposed Implementation
In Buf yaml: buf.build/envoyproxy/protoc-gen-validate -> buf.build/bufbuild/protovalidate
And change imports in protos:
import "buf/validate/validate.proto";
Contributing
Validation
Code of Conduct
Summary
Hi TTN team,
I’m currently integrating TTN’s gRPC API into a codebase and encountered a recurring issue stemming from TTN’s continued use of:
buf.build/envoyproxy/protoc-gen-validatewhich corresponds to the deprecated protoc-gen-validate (PGV) runtime.
This is creating namespace conflicts with modern Buf-generated protobuf code using the Protovalidate runtime: https://protovalidate.com/
Specifically, PGV and Protovalidate both register the same proto:
which leads to the following panic at runtime:
Current Situation
No response
Why do we need this? Who uses it, and when?
Why TTN Should Migrate to Protovalidate
1. PGV is no longer maintained, and the Envoy project does not recommend using its Go runtime.
2. Protovalidate is the official successor, built and maintained by Buf.
3. Protovalidate:
• provides a more modern validation engine
• supports rich validation semantics
• avoids global registration conflicts
• integrates cleanly with Buf’s ecosystem and codegen
4. Many Go teams (mine included) are increasingly adopting Protovalidate, making PGV-based APIs difficult to integrate without hacks or stubbing modules.
Proposed Implementation
In Buf yaml:
buf.build/envoyproxy/protoc-gen-validate->buf.build/bufbuild/protovalidateAnd change imports in protos:
Contributing
Validation
Code of Conduct