[Zope3-dev] Re: RFC: The browser:page compromise
Tres Seaver
tseaver at palladion.com
Thu Apr 20 15:14:40 EDT 2006
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Philipp von Weitershausen wrote:
> Tres Seaver wrote:
>
>>-1 on breaking ZCML in the wild. Propose *new* directives which have
>>new semantics, but for existing directives, we should clean up the
>>implementation rather than modifying semantics. E.g., we should be able
>>to rip out the gunk which synthesizes new classes in 'browser:page': I
>>think it derives from a period before we could assign a
>>'__Security_checker__' attribute to instances, and so *had* to have a
>>class in order to make the checker stuff work.
>
>
> It's not only the security checker. It's the whole IBrowserPublisher
> implementation that's jerked into the subclass. My proposal is exactly
> stopping that.
>
> Of course, we can implement new directives (possibly with the same name
> but different namespace URI) and deprecate the old ones. But that's only
> marginally different from what I propose.
The difference is that your proposal *forces* people to change
previously-working ZCML; that is the thing to which I am opposed. I
think we have been too "deprecation happy" over the last few releases;
in particular:
- Introducing new deprecation warnings in "third-dot" releases is
probably inappropriate: people shouldn't need to think about such
issues during "normal maintenance" upgrades, where we explicitly
promise API stability.
- Deprecating an API without cleaning up *all* core uses is a *lie*;
I would be strongly in favor of reverting *any* such cases as
"premature." Some of the lies we have propagated here are also
violations of my first tenet, which reinforces their
inappropriateness.
- Deprectaion of an older, stable alternative, *no matter how grotty,*
should go hand in hand with *lots* of confidence that the new favored
alternative really is superior, and by enough margin to make the
switch worthwhile. In my mind, this means that the new
implementation needs to be rolled out *in production* and tested in
the wild *before* we can deprecate the older alternative.
"Refactor mercilessly" is not a mantra which works very well for
frameworks, particularly once they have rolled out with third party
dependencies. Note that classic XP is specifially "framework
averse", and comes out of a purlely leafmost / application-centric
development model. It is also hostile to remote / dispersed
development, which we routinely practice.
Tres.
- --
===================================================================
Tres Seaver +1 202-558-7113 tseaver at palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQFER92N+gerLs4ltQ4RAscJAJ9/odAd+QLQ75PLznSIgKyqctY5zwCgp79V
ZsMgT6G7slYBbfFXfqWBkL0=
=6RBB
-----END PGP SIGNATURE-----
--
===================================================================
Tres Seaver +1 202-558-7113 tseaver at palladion.com
Palladion Software "Excellence by Design" http://palladion.com
More information about the Zope3-dev
mailing list