[Zope3-dev] Discussion: Configuration vs. Configuration

Guido van Rossum guido@python.org
Tue, 22 Apr 2003 21:24:19 -0400


> So: i like the sound of "configuring intrinsics" and "configuring
> coordination".  *If they're accurate*, i think the distinction would
> help people understand what's going on.  I know the distinction is
> already helping me put in perspective what i've been hearing about the
> various configuration activities.  I have to qualify my opinions,
> though, because i still haven't really gotten started on getting up to
> speed on zope3.  My perspective is all based on the characterizations
> i'm reading here, and i may be inferring too much!

Hmm...  "intrinsics" is one of those words that (to me at least) have
very little semantics and a high "falutin" value.  And "coordination"
is definitely not accurate to describe the second kind.  What the
second kind primarily does is to *enable* (or disable) particular
services over others, and to specify permissions required for using
it.  This is complexificatified by the fact that in some cases (not
for services) you can also configure a name and/or interface used for
lookup; many different aspects of the ComponentArchitecture involve
lookups by name and/or interface, e.g. adapters, utilities, db
connections, caches; and even services (but in that case you cannot
configure the service name, and there's a hardcoded mapping between
service name and service interface, unlike for the others).

Of the suggestions so far, I still like "registration" best.  What
makes this a particularly good fit is that it suggests correctly that
this is something *external* to the component being registered --
unlike for the first kind of configuration, the component's own state
doesn't change, but its role in the overall system (not to be confused
with the role in the security machinery) changes, e.g. from merely
existing to actively participating.  Moreover, this is accomplished
purely by changing the data structures used for registration, external
to the registered component.  In fact, what is registered is not so
much the component as the role: some components can have multiple
roles simultaneously, and there are independent registrations for each
role.  OTOH, for each distinct role there can be at most one *active*
registration at any time; there may be other, inactive, registrations,
but those have no effect except to offer the site manager alternative
implementations for a given role.

--Guido van Rossum (home page: http://www.python.org/~guido/)