[Zope3-dev] Re: Deprecations when interfaces changed (was Re: Re: Usage of IAnnotations disrespects interface declaration)

Tres Seaver tseaver at palladion.com
Sun Dec 17 18:26:21 EST 2006


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Dieter Maurer wrote:
> Christian Theune wrote at 2006-12-17 11:34 +0100:
>> ...
>> Jupp. Is there any technical chance the we can use the deprecation mechanism
>> or something like this to inform developers that they are not fully
>> complying to a changed contract?
>>
>> Still, for me it feels like the original interface should have included this
>> and I think it would be nice if we have an exit strategy for this (and
>> similar) situations where the original interface was wrong. I consider
>> the solution that introduce an additional interface in the long term to be
>> less than optimal. (Except if someone has a good explanation that I can
>> give to new developers why we made that distinction in the first place.)
> 
> You can use the deprecation mechanism when you are ready to introduce
> a new interface and deprecate the use of the old one (i.e. generate
> a deprecation warning when an adapter is registered for the old interface).
> 
> Generating a deprecation warning in the case when something does not
> provide/implement features newly introduced into the interface may
> be expensive: you need to explicitly check any object providing the interface
> whether it truely provides the added features as well.
> 
> We might want to implement something like version numbers for interfaces
> in the future -- following the example of protocols ("HTTP/1.0" versus
> "HTTP/1.1"). Then a class/instance may declare that it implements interface
> "I" in version "V".
> Then, we may issue deprecation warnings, when a too old interface is
> used.
> 
> Of course, adding version numbers to interfaces, is just a convention
> to introduce new (but related) interfaces.

We might be able to add a 'check-adapter-compliance' option to the
zope.conf, which would turn on the expensive test of conformance during
registration, and raise an exception if the interface failed to supply
all required names.


Tres.
- --
===================================================================
Tres Seaver          +1 540-429-0999          tseaver at palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFhdId+gerLs4ltQ4RAjNvAJ4ogwrQkSDlgI+XhWehnURI6oHCvgCfTSIX
1GAzH+llVlDwNPJzJ09j1+M=
=xH/X
-----END PGP SIGNATURE-----



More information about the Zope3-dev mailing list