Protobufs only capture trivial widening while enforcing consistent ordering. This is not heavy handed solution to a 5% problem (95% of the time the problems proto serialization solves aren’t a real issue)
What’s more interesting is how a field of entity might evolve semantically. Eg a field starts as a Boolean, but always true. Then it’s made to be true or false. Later you realize you needed a ternary (or larger enum). Then maybe you need to store different data with each enum value. Or maybe it needs to be an open ended code that’s based on integers than 3rd parties can add to (eg VNC frame encodings)
Protobufs only capture trivial widening while enforcing consistent ordering. This is not heavy handed solution to a 5% problem (95% of the time the problems proto serialization solves aren’t a real issue)
What’s more interesting is how a field of entity might evolve semantically. Eg a field starts as a Boolean, but always true. Then it’s made to be true or false. Later you realize you needed a ternary (or larger enum). Then maybe you need to store different data with each enum value. Or maybe it needs to be an open ended code that’s based on integers than 3rd parties can add to (eg VNC frame encodings)