[openstack-dev] [oslo] oslo.messaging config option deprecation
Joshua Harlow
harlowja at outlook.com
Wed Dec 3 22:21:02 UTC 2014
Ben Nemec wrote:
> On 12/03/2014 02:45 PM, Sean Dague wrote:
>> So this -
>> https://github.com/openstack/oslo.messaging/commit/bcb3b23b8f6e7d01e38fdc031982558711bb7586
>> was clearly a violation of our 1 cycle for deprecation of config options.
>>
>> I think that should be reverted, an oops release put out to fix it, and
>> then deprecate for 1.6.
>
> +1. That was definitely a no-no.
>
>> If oslo libraries are going to include config options, they have to
>> follow the same config deprecation as that's a contract that projects
>> project up. Otherwise we need to rethink the ability for libraries to
>> use oslo config (which, honestly is worth rethinking).
>
> I don't see how that would help with this sort of thing. Instead of one
> project mistakenly removing an undeprecated opt, you would have dozens
> potentially making the same error, which would also then make their
> available configuration options inconsistent with all of the other
> projects using oslo.messaging. That way lies madness.
Isn't this the way most other libraries that don't use oslo.config
operate? Aka, the API they expose would follow deprecation strategies
that libraries/apps commonly use. It has always been sort of
tricky/hidden (IMHO) that the usage of oslo.config is really a part of
those libraries public API.
Example that shows what people might do:
# Using oslo-config as the API
def a(cfg):
if cfg.b:
print("hi")
# Using an actual kwarg
def a(b=False):
if b:
print("hi")
Now to deprecate the kwarg using function there needs to be some kind of
warning logged when 'b' is provided that recommends the new name (say
'c'); this is similar to what the oslo-config using API also has to do
but I feel it's less obvious and easier to break; since it isn't clear
from the function definition this is happening since the function still
gets just a 'cfg' object, and this just gets worse if u continue passing
around the cfg object to other functions/methods/classes...
Basically the only way to really know that someone is using 'cfg.b' is
by grepping for it (which makes the API very malleable, for better or
worse; it also seems to make it harder to use tools like sphinx that can
interpret function pydocs to denote functions that have depreciations
and such...).
IMHO it doesn't seem like the larger pypi/python world has gone to mad
(aka those projects, apps, libraries, others that haven't used oslo.config)?
But maybe I missed all the mad people or I'm in the crowd that is mad
and I can't tell ;) To me the inconsistency that you state is a
policy/people problem and need not be addressed always by oslo.config
(but could just be addressed at say review time).
I know not everyone agrees with this, but it's useful to think of
different ways and at least think about them...
>
>
> _______________________________________________
> OpenStack-dev mailing list
> OpenStack-dev at lists.openstack.org
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
More information about the OpenStack-dev
mailing list