[Zope3-dev] give ability to get rid of deprecated code

Florent Xicluna laxyf at yahoo.fr
Mon Sep 11 17:11:03 EDT 2006


Hello,

I am working on a 'light' version of Zope, where all deprecated things are
removed (and maybe other less useful things). Although this is probably not
convenient for the main part of Zope developers, this has some benefits for our
internal project, and probably for other people:
- easier to learn Zope for a newbie, when you keep only up-to-date packages,
- find directly the right way to do something, without trying too much
deprecated things,
- no useless packages loaded at startup, so application is quicker to start,
- less code to take into account and maintain,
- less disk usage (if you need to burn your application on a CD-ROM or USB-disk)

To achieve this 'light' application, I've listed all the things I start to
remove on my sandbox, and I've evaluated the easiness to do it.
* Easy to remove (18 packages):
(zope.app) annotation, content_types, copypastemove, datetimeutils, decorator,
dublincore, filerepresentation, location, mail, pluggableauth, rdb,
servicenames, site, size, tests, timezones, traversing
+ zope.modulealias
=> only need to remove ZCML include directives

* Harder to remove (3 packages):
zope.app.introspector (=> need to change permission within apidoc.codemodule) 
zope.app.layers, zope.app.skins (=> see proposal below)


I propose to patch the 'trunk' in order to allow removing of these packages.
Here are the  proposed changes:
- catch 'ImportError' when we make use of zope.app.skins
- introduce ZCML feature 'deprecatedlayers' which is 'on' by default and can be
disabled
- add a 'zcml:condition="have deprecatedlayers"' on each <layer> directive

And for zope.app.introspector, i see 2 choices:
- either replace the "zope.app.introspector.Introspect" permission with a
"zope.app.apidoc.UseAPIDoc" permission,
- or use a feature "have/not-have deprecatedintrospect" to select which
permission to use.

I've implemented and tested this:
  All unit/functional tests pass OK.
  It remains backward-compatible
Moreover it helps to track down some deprecated things:
I fixed 2 bugs, when implementing this change on my sandbox; see rev. 70065
(zope.app.testrecorder) and 70081 (zopeskel/etc)

What is your feeling about commiting this change on the trunk?

Regards,

-- Florent




More information about the Zope3-dev mailing list