Note that Jeff Dean and Sanjay Ghemawat -- the original creators of Protobuf -- aren't average Google engineers. They are literally the highest-ranked engineers at Google (Level 11, "Senior Fellow", a title assigned only to the two of them last I heard), and they basically invented MapReduce, BigTable, Spanner, and a variety of other foundational distributed systems technologies. Jeff now leads the AI division while Sanjay continues to focus on systems infrastructure.
So yeah, "amateurs".
(Disclosure: I wrote Protobuf v2, but it was just a fresh implementation of the same design.)
I've encountered plenty of genius-level engineers when it comes to algorithms, architectures, and distributed system design that wrote GOD-AWFUL unreadable and unmaintainable code. I wouldn't trust them to design an API or a common framework optimized for usability.
In fact I almost wonder if intelligence is a hinderence in such cases. When you're too much like Cypher, and "don't even see the code", all code and all library choices feel equivalent.
Whether Dean and Ghemawat are high ranking or not, do the points stand? Is the design of protobuf solid?
https://news.ycombinator.com/newsguidelines.html
Also, please don't create accounts for every few comments you post. We ban accounts that do that. This is in the site guidelines too.
HN is a community. Users needn't use their real name, but do need some identity for others to relate to. Otherwise we may as well have no usernames and no community, and that would be a different kind of forum. https://hn.algolia.com/?sort=byDate&dateRange=all&type=comme...
HN is not a community, it’s a cargo cult where only certain thoughts are allowed and you ban people who think differently, no matter how well they present their argument or how polite they are.
Further, you engage in ad hominem and dishonest attacks, make calling and violation of every other rule in your rule book you capriciously enforce against everyone else.
Because of this, you have no standing to expect anyone to ever respect your rules.
This is why this site is considered a joke to the rest of the world and the tech community.
It’s the epitome of Bay Area smelling-ones-own-farts, and you’re oblivious.
Politicians don't swear in public, but they sure do in private. I'm sure a smaller conversation with Jeff would be fascinating.
That's not correct. There are (current) examples of people leading thousands (or more) people by making publicly offensive statements.
It's just the statements are polarising (on purpose), to create feelings of inclusion among the supporters + and blame [social problems?] on the people being pointed at.
Smarter -> less probability of making stupid decisions and giving stupid answers.
Dumber -> more probability of making stupid decisions and giving stupid answers.
My biggest concern with protobuf though is that it ends becoming the proverbial "I have a hammer, now everything looks like a nail" scenario. Every Googler goes through orientation with protobufs and gRPC, and then they proceed to stamp it everywhere... including places it may not belong. And then take it with them when they leave Google.
I think the article tone is inflammatory but most of the points are solid.
I think there's a lot not to love about gRPC/protobufs (used them at Google and again now at a startup) but I don't feel like this did a good job highlighting those issues.
The serialized format mimicks JSON, except that it supports tables- arrays of structs. This saves space compared with actual JSON, since the column names only have to be given once. Also tables where the columns are primitive types can be loaded directly into common spreadsheet applications. This is useful for my specific application.
The application has a CLI that allows you to browse the data with xpath like expressions. You can set or get any field of the hierarchy (using the serialization format), and since the type is known it can parse and schema check the user input.
I use the serialized format for storing a copy of the data in flash memory, so that it can be restored on boot up.
The metadata with the type information is all marked as const. In embedded systems, this data is placed in flash memory instead of precious RAM.
I'd push back at this. After starting to use protos (even at Google) these issues smack pretty much everybody right in the face.
As someone who has done extensive work with Protobuf extension fields in Python, I can only echo that the API is nightmarish.
Handling a serialization scheme "generically" is the "wrong thing to optimize"?
Sounds like the #1 thing anybody would want from it...
Tools like protobuf and thrift were designed to facilitate schema evolution since interfaces in these ecosystems evolve quickly and independently. Generics undermine this by creating strict dependencies on a few types, making it difficult to evolve a single type without breaking things.
Poorly implemented generics would undermine one of the design goals of this project. In addition, there aren't nearly as many opportunities for generics in an IDL as in a programming language, so what would the upside even be?
a) total SLOC for that logic is much, much less than SLOC for code that works with _specific_ protocol buffers
b) "consumers" of protocol buffers as a tool/technology mostly don't worry about what's going on under the hood of the generic serialization, etc. code
So it will often make sense to to make that core generic logic even significantly more complicated if it means making the stuff that everyone has to write over and over again even a little bit easier.
The main good point: Google's problems are probably not your problems, don't just blindly adopt Google tech for no reason.
Also: calling people amateurs without really substantiating is a huge smell IMO. The average Google engineer isn't a genius or particularly amazing by any stretch, but especially for something as core/foundational as protobuf, the answer is much more likely something like "these decisions made more sense for Google internally, especially when weighing against the cost of significantly re-architecting how proto works". The ad-hominem at the beginning reeks of someone who had an email chain that went like:
"You guys are doing proto wrong, don't you realize protos should obviously be like XYZ?"
"Well actually we'd like to do X but it would've been too hard, I'm not actually sure Y is a net-win, ..."
(omg what amateurs...)