Previously Chris McDonough wrote:
> On 6/4/09 11:59 AM, Martijn Faassen wrote:
> > Wichert Akkerman wrote:
> >> Previously Martijn Faassen wrote:
> >>> * often it is nice to have application configuration to have a user
> >>> interface, so that end users can configure aspects of the application.
> >>> This may be filling in an email address or customizing a template or
> >>> adding a user, etc. Local utilities are a nice solution for this, even
> >>> if there is just a single application installed.
> >> That sounds like a complicated workaround for not having a mutable
> >> global configuration.
> >
> > I don't think it's complicated. It's nice to install an object somewhere
> > that stores data and has a UI and also be able to register it as a local
> > utility. If you were to have mutable global configuration, you'd need
> > some way to expose it to the UI and content-space too.
> This is true.  OTOH, I've never really been keen on the idea that the CA API 
> should be bent around the idea that you're going to often want to find a 
> persistent registry.  It seems just as reasonable to:
> - put a persistent object someplace (with its own UI) that isn't registered as
>    a CA utility.
> - find it via the location API when you need it in your code.
> - *Pass* it to global utilities (or adapters) when you need to vary behavior
>    based on location.
> Maybe CMF tools weren't such a bad idea.

For Plone we regret that we used persistent utilities to store
configuration: they have made Plone instances much more fragile
(removing a utiliy's implementation breaks the whole site) and forces
you to write a UI for the stored configuration again and again. To move
forwards we have come up with plone.registry (see, which gives you a nice
central storage system for configuration.


Wichert Akkerman <>    It is simple to make things.                   It is hard to make things simple.
Zope-Dev maillist  -
**  No cross posts or HTML encoding!  **
(Related lists - )

Reply via email to