|
|
|
|
|
by rektide
1599 days ago
|
|
I wonder if the original protobuf authors realized what they were doing would be carved in stone & become by far the leading structured data interchange system. If they had any idea so many subsystems would grow up around it, that it would root an ever-expanding ecosystem of tools? |
|
The creators (Jeff and Sanjay, two of the most-senior and most-prolific engineers at Google) were fully aware that some of the choices weren't the best, e.g. "varint" format for variable-width integer encoding is simple but not particularly well-designed from a performance perspective. They knew this, but it wasn't worth optimizing at that moment. Now it's way too late to change.
But that's OK. Systems that evolved often have such warts, yet function much better overall than systems which are carefully designed, because systems which evolved will naturally prioritize the design decisions that are actually important to get stuff done. If you sit down and try to design the perfect system in isolation, no matter how smart you are, you will inevitably spend a lot of effort on some features that don't matter, and not spend enough time on some that do. Protobuf is not an ideal design but at this point it has had so much effort put into making it practical that it's hard for anything else to catch up.
(Disclosures: I wrote Protobuf v2 and did the first open source release. I also wrote Cap'n Proto, a "better" design which turns out to be less practical in most use cases because it lacks the ecosystem breadth of Protobuf. I am also an early, small investor in buf.)