FWIW, I'd be fine with dropping negative field ids and implicit enum values.
Bryan Duxbury wrote: > Hey guys, > > I wanted to run an idea past everyone. There was an email to the list > a few days ago about Ruby enum validation of implicit values that got > me thinking that Thrift allows a lot of design decisions that aren't > really in line with best practices. In order to achieve respectable > forward and backward compatibility, one of Thrift's main stated > goals, there are a bunch of things you *should* do, but that aren't > enforced. For instance, implicit enum values and optional field ids > in structs and on service method parameters. These are things that a > careful Thrift user should never really do, but since they aren't > enforced, there's risk for new users to do the wrong thing. > > My idea is that we should change the Thrift IDL essentially to force > these best practices on users. The obvious benefit is that even a new > user will be pushed to do the right thing, avoiding potential > pitfalls in writing their definitions. The downside is that .thrift > files will be a little more verbose on average. (It's also a non- > backwards-compatible change, so everyone will have to update their > Thrift definitions.) At least in my mind, it seems like the positives > would outweigh the benefits, and it would free us up to do things > like get rid of autogenerated negative field ids. > > What are everyone's thoughts on this idea? > > -Bryan
