This is still true, Adam? Google would not deprecate Proto2, and Proto2 and Proto3 are just different flavors of Protocol Buffers? Me and my team are about to start a brand new project using Protocol Buffers and the lack of missing value check properties in Proto3 is a BIG concern.
Thanks in advance, and I wait for your response. Regards! On Tuesday, December 19, 2017 at 5:59:44 PM UTC-3, Adam Cozzette wrote: > > Yes, we are planning on supporting proto2 pretty much forever. Within > Google we have a huge amount of code using proto2 and for the most part > we're not attempting to migrate existing code to proto3. Language support > is one reason to go with proto3, but it's also simpler and more convenient > for working with JSON. > > On Tue, Dec 19, 2017 at 12:13 PM, Josh Humphries <[email protected] > <javascript:>> wrote: > >> Adam, >> I understand there is no *current* plan to deprecate proto2. But is it >> really expected to be supported forever? >> >> If that's the case, I suppose the only reason to choose proto3 over >> proto2 (if you happen to want the features and semantics of proto2) might >> be that not all languages/runtimes have support for proto2. Though I >> thought this was a short/medium-term issue. If all languages/runtimes >> eventually support both, it seems like a strange decision to continue >> supporting both indefinitely. >> >> >> ---- >> *Josh Humphries* >> [email protected] <javascript:> >> >> On Tue, Dec 19, 2017 at 2:23 PM, Adam Cozzette <[email protected] >> <javascript:>> wrote: >> >>> Actually we have no plans to deprecate proto2 and we are still actively >>> developing it, so you can really choose either one without having to worry >>> about support going away. >>> >>> On Sat, Dec 16, 2017 at 11:42 AM, Josh Humphries <[email protected] >>> <javascript:>> wrote: >>> >>>> I think proto3 was intended to be simpler -- an evolution of protobuf >>>> in a direction that is more refined and elides superfluous features. >>>> Eventually (though not likely any time soon), support for proto2 will go >>>> away. >>>> >>>> The main omission in proto3 that I personally felt strongly about was >>>> the lack of preserving unknown fields. But that functionality has been >>>> restored for many languages/runtimes in 3.5 (and coming soon, hopefully, >>>> for Go and the others). >>>> >>>> All of the other omissions in proto3 have alternate >>>> solutions/work-arounds that aren't baked into the language (like wrapper >>>> types and Any), which shows that these features didn't truly need to be >>>> language features to begin with. So it allows the language itself to >>>> remain >>>> simple, which means libraries/tooling are simpler to build on top. >>>> >>>> So a big advantage of proto3 is simplicity (and for some >>>> languages/runtimes, that will translate into improved performance). And >>>> another advantage is future compatibility (since, in all likelihood, >>>> proto2 >>>> will eventually go away.) >>>> >>>> >>>> If creating new files, it makes sense to use proto3. If you already >>>> have a corpus of proto2 files, a reasonable migration path forward is to >>>> start evolving them to proto3 (or, if the languages/runtimes you use don't >>>> yet preserve unrecognized fields, wait for that functionality to be fully >>>> implemented everywhere and then start evolving). >>>> >>>> - Make required fields optional. Required fields have always been >>>> dangerous. If a field is required in your protocol, it can be enforced >>>> in >>>> application code instead of in the de-serialization logic of the >>>> protobuf >>>> runtime. >>>> - Use Any instead of extensions. An extension range can generally >>>> be replaced with a repeated Any field. Extensions with scalar types >>>> will >>>> have to be "boxed" into single-field messages. >>>> - Use wrapper types for scalar fields where absence must be >>>> distinguishable from zero. >>>> - Usages of default values can be changed to use wrapper types and >>>> application logic that decides non-zero values to use when the field is >>>> not >>>> present. >>>> - Groups should be replaced with nested messages. >>>> >>>> Once a file is no longer using any proto2 features, it can be changed >>>> to proto3 syntax. Unfortunately, there is not yet a way to incrementally >>>> move to proto3. Once you change the syntax of the file, the generated code >>>> will change, and all clients of that generated code must be changed >>>> atomically in order to compile (at least for languages/runtimes where >>>> generated code for the two syntaxes is materially different/incompatible). >>>> I would hope that this is something that will be addressed in future >>>> versions of protobuf, to facilitate migrations away from proto2. >>>> >>>> >>>> ---- >>>> *Josh Humphries* >>>> [email protected] <javascript:> >>>> >>>> On Sat, Dec 16, 2017 at 2:17 PM, ajcurtis84 <[email protected] >>>> <javascript:>> wrote: >>>> >>>>> Thank you everyone for all the great input! >>>>> >>>>> Based on this discussion, what is the advantage of using proto3? It >>>>> appears that proto2 is more feature rich. JSON isn't a compelling >>>>> reason.... >>>>> >>>>> Thanks >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Protocol Buffers" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected] <javascript:>. >>>>> To post to this group, send email to [email protected] >>>>> <javascript:>. >>>>> Visit this group at https://groups.google.com/group/protobuf. >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "Protocol Buffers" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected] <javascript:>. >>>> To post to this group, send email to [email protected] >>>> <javascript:>. >>>> Visit this group at https://groups.google.com/group/protobuf. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> >> > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/protobuf/3e078cd3-ba3f-4ab0-a9a4-e8852f502045%40googlegroups.com.
