Useability is not good
Useability is not good
Posted Dec 18, 2025 16:03 UTC (Thu) by NYKevin (subscriber, #129325)In reply to: Useability is not good by mbunkus
Parent article: Conill: Rethinking sudo with object capabilities
* Bindings for quite a few major languages.
* No semantic type ambiguities (schemas are mandatory, so the type of every field is known in advance). This is also used to propagate static type information into the language bindings (by generating per-schema serialization code).
* Few/no syntactic type ambiguities (strings are quoted, floats have decimal points or an "f" suffix, etc.).
* Comments are supported.
* Losslessly (and easily) converts into a binary format for efficient on-wire representation.
* Supports a JSON-like syntax, which should feel familiar to most people.
Disadvantages:
* Not opinionated enough. Several things can be spelled in multiple ways, and these spellings can be freely mixed.
* Quite a few bits of the linked spec say things like "depending on the implementation...," although this is mostly confined to edge cases where you write something silly and the implementation has to guess what you mean.
* Many enterprisey features that are not required for simple use cases. Expect to see "com.google" etc. show up a lot.
* Similar to TOML, it has support in several languages, but not in every language under the sun (contrast with JSON).
* If your build system is... less than ideal, then you probably think that generating code is scary and problematic. As you might expect, it works fine under Bazel, because that's how Google uses it internally.
Disclaimer: I'm a Google engineer, and Google invented protobufs.
[1]: https://protobuf.dev/reference/protobuf/textformat-spec/
