Earlier quoted context omitted.
> Yeah. Don't do that without versioning your protocol. It's even less difficult to handle than maintaining API/ABI compatibility in a library. Actually, the whole point of that was so you don't have to version your protocol. Protocol versioning actually tends to make code maintenance a pain in the posterior, and working through old data really annoying. Instead, you do optional fields. If you don't want that, go ahe…
> If you don't want that, go ahead and just write raw bytes and don't bother with the serialization layer. Or just keep using protobuf2, 'cause it's been working great for us for ~6 years. > But you don't have to do either. It seems like you aren't familiar with the use of protocol buffers. I've written my own protobuf compiler. I'm familiar. > You just define optional fields with a reasonable default, and magically…
Oh sure, I wouldn't change practices, but I'd certain question why that practice had been put in place.
> That only works up until there's no "reasonable default".
If there is no reasonable default, I'd be even more wary about making it a required field.