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