▲ | jsnell 6 days 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". |