Products · Product
Protocol Buffers
Raised as a usability problem by 25 people on Hacker News over 11 years (2016–2026), in 20 threads.
People raised many different problems with Protocol Buffers, but no single problem has yet been raised by 3 people in 3 different months and threads.
Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.
The newest 25 complaints
- Managing and distributing definitions is a nuisance and adds a build step2026-08-16
- Generated Python classes are opaque and impossible to inspect2026-07-12
- Adding one UI checkbox requires changing about 20 intermediate services, taking two quarters2026-02-15
- Must null-check every field in code, which obscures math and forces converting protos to internal types2025-09-06
- Developer finds the serialization format user hostile and time wasting to work with2025-09-05
- Protobuf needs library install, schema files and a cumbersome API to use2025-05-09
- Java protobuf tooling is subpar and needs workarounds to get working2025-01-23
- Old timestamp function name is unintuitive, poorly documented, and requires awkward error handling2025-01-23
- Developers find it counterintuitive, hard to learn, and hard to debug2024-05-17
- Protobufs are hard to use on the web, needing a proxy like grpc-web2024-05-10
- Protobuf adds complexity, backwards-compat issues and footguns that make it hard to work with2024-05-09
- Binary payloads are hard to read without special tooling2023-11-17
- Grammar makes no sense and nobody knows how the parser behaves2023-09-21
- No way to represent optional values, forcing duplicate types and manual conversion code2023-07-21
- Protobuf library described as awful to use2023-07-18
- Built-in toJSON returns invalid JSON, missing braces for binary types2022-10-31
- Commenter gets more confused by the API and docs and can't work out how to implement it2022-10-31
- Can't tell whether an empty string means a real empty value or no value2022-08-04
- Every field being optional makes the format insane and awkward to work with2021-11-20
- Oneof wrapper types force awkward extra structs and private interfaces2020-03-02
- Generated Python imports were broken and packaging the output needs manual post-processing2019-12-24
- Developers find oneofs unintuitive, leading to mistakes2019-12-24
- Chained setter builder calls feel clunky compared to idiomatic Kotlin assignment2018-09-08
- Pure Python driver is incredibly slow; C++ driver is experimental and non-default2017-07-21
- API is inconsistent and confusing; lists behave unlike real lists2016-07-29