The Buf blog

Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
All
June 2, 2025
M. C. Sunny Young de la Sota
Protobuf

Tip of the week #7: Scoping it out

buf convert and protoscope are powerful tools for examining and debugging wire format dumps.

All
May 19, 2025
M. C. Sunny Young de la Sota
Protobuf

Tip of the week #6: The subtle dangers of enum aliases

Enum values are a poorly designed feature and shouldn’t be used.

All
May 13, 2025
M. C. Sunny Young de la Sota
Protobuf

Tip of the week #5: Avoid import public/weak

Avoid import public and import weak.

All
April 29, 2025
M. C. Sunny Young de la Sota
Protobuf

Tip of the week #4: Accepting mistakes we can’t fix

Protobuf’s distributed nature introduces evolution risks that make it hard to fix some types of mistakes. Sometimes the best thing to do is to just let it be.

All
April 22, 2025
M. C. Sunny Young de la Sota
Protobuf

Tip of the week #3: Enum names need prefixes

Enums inherit some unfortunate behaviors from C++. Avoid this problem by using the Buf lint rules ENUM_VALUE_PREFIX and ENUM_ZERO_VALUE_SUFFIX.

All
April 15, 2025
M. C. Sunny Young de la Sota
Protobuf

Tip of the week #2: Compress your Protos!

Compression is everywhere. This pervasiveness means that wire size tradeoffs matter less than they used to twenty years ago, when Protobuf was designed.

All
April 8, 2025
M. C. Sunny Young de la Sota
Protobuf

Tip of the week #1: Field names are forever

Don’t rename fields. Even though there are a slim number of cases you can get away with it, it’s rarely worth doing, and is a potential source of bugs.

Get started on the path to universal schema adoption

Define your schema once. Generate SDKs, docs, and dependencies automatically.