Skip to content

Proposal: disallow unsigned integers for istio.* protobuf namespace #28

Closed
@wora

Description

@wora

I would like to formally suggest to disallow unsigned integers for istio.* protobuf namespace for the following reasons.

  • If we allow unsigned integers, people inevitably will use mismatched signed and unsigned types for the same concept, such as network port. It leads to undefined behavior in different languages like C/C++/Java.
  • istio attributes only support signed integer. Adding unsigned integer increase system complexity for no real benefit.
  • Istio namespace is mostly for configs. The workflow for config is like this: proto schema => documentation => human => yaml => tools => proto config. The critical step is human => yaml. It is very unlikely humans can reliably remember the data types. And mismatch types will confuse users in practice.
  • Many important systems, like Java, Stackdriver monitoring, don't support unsigned types at all. If we want to build a generic system, it is better to avoid this unnecessary risk.
  • Google have discouraged unsigned integers for over a decade and we have not seen much downside across wide range of products.

To avoid unnecessary complexity to the system, I think we should avoid unsigned type for istio namespace.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions