4 ms·
> Protobuf's original sin was failing to distinguish zero/false from undefined/unset/nil. It's only proto3 that doesn't distinguish between zero and unset by d
by jsnell 1y ago
> Protobuf's original sin was failing to distinguish zero/false from undefined/unset/nil.
It's only proto3 that doesn't distinguish between zero and unset by default. Both the earlier and later versions support it.
Proto3 was a giant pile of poop in most respects, including removing support for field presence. They eventually put it back in as a per-field opt-in property, but by then the damage was done.
A huge unforced mistake, but I don't think a change made after the library had existed for 15 years and reverted qualifies as an "original sin".