[Zope-dev] Extras (was zope.password)

Shane Hathaway shane at hathawaymix.org
Tue Mar 10 20:03:59 EDT 2009


Stephan Richter wrote:
> On Tuesday 10 March 2009, Dan Korostelev wrote:
>>> Either you have a dependency and declare it or you don't have a
>>> dependency. Since we don't want to use "extras" anymore, I think this
>>> calls for another package which depends on zope.password and zope.schema.
>> I still don't like/get the idea of creating and maintaining extra
>> package that merely contains a vocabulary factory for another package.
>> Whatever, I reverted that change. Roger, just exclude
>> zope.app.authentication's "password.zcml" file, include
>> "zope.password" explicitly and define your own vocabulary.
> 
> I think we have become dependency paranoid. And we embrace package 
> proliferation instead, which in my opinion is equally bad. If you really hate 
> the dependency, make it an extra requires. I know that goes against the 
> latest guidelines as well...*sigh*
> 
> My big problem here is that we dismiss all solutions but new packages. We want 
> to minimize dependencies and not have extra includes. The only choice left is 
> a separate package. We should, however try to make the number of packages a 
> parameter too.

It seems to me that "extras" are a lot like Gentoo USE flags, except 
that the infrastructure for USE flags is much more complete.  USE flags 
are an essential feature of Gentoo.  Perhaps if the Python packaging 
chain had similar infrastructure, there would no longer be a reason to 
avoid extras and we could solve packaging and dependency problems a lot 
more easily.

Here are a few things you can do with USE flags that you can't yet do 
with extras:

- You can enable or disable a USE flag globally (yet override it 
per-package).  If you don't need X-Windows on your server, just add "-X" 
to /etc/make.conf, and nothing will be built with optional X support. 
If we had this feature, we would just add "-zope.component" to 
buildout.cfg and nothing would be installed with optional component 
architecture support.

- Packagers can specify whether a USE flag should be enabled by default.

- USE flags can cause whole chunks of code to not be compiled or 
installed.  I would love to be able to specify "-coptimizations" to 
build a Zope app without any optional C optimizations.  (That way, 
tracebacks would often be more informative.)

These days I run both a Gentoo and an Ubuntu box.  The Gentoo box has 
more features, but fewer packages, because Gentoo doesn't have to divide 
packages to avoid dependencies.

My $0.02.

Shane


More information about the Zope-Dev mailing list