[Zope3-dev] Configuration changes

Jim Fulton jim@zope.com
Fri, 21 Feb 2003 14:33:40 -0500


Yesterday, Guido and I spent some time going over configuration
aspects of site development and he had a number of good ideas I'd like
to share and get feedback on.

Before I mention his ideas I'd like to note that the current UI is
definately too complicated. In many ways, it is a prototype designed
to work out some mechanism, much of which is needed to support
functionality, especially wrt installation, that isn't there yet.
In particular, there's a lot of mechanism to handle conflicting
configurations, which are needed to support software installation,
update, and uninstallation functionality as described in:

   http://dev.zope.org/Zope3/ThroughTheWebSiteDevelopment.

I believe that the UI can be greatly simplified without losing the
power of the underlying mechanism.

I'd also like to simply the task of writing local services and their
configurations.

Here are some of the ideas we came up with:

- Simplify configuration status. A configuration can be unregistered,
   registered, or active. Under normal situations, the "unregistered"
   state is uninteresting, so we can simplify this to just active and
   inactive (registered).

- Greatly simplify the "Services" view on the site/service manager.
   Now this view shows you the services configured and lets you access
   the service instances and configurations and lets you change which
   configurations are active. The UI is rather daunting.

   The services view should just show a list of the service types for
   which there are configurations.  For each service type, there
   should be a row of data:

   o A check box that is checked for active services and unchecked for
     inactive services.

   o The service name that is a link to the object providing the
     service. (This will not be a link if there are multiple
     services configurations and none of them are active.)

   o If there are multiple configurations for the service type, then a
     link will be provided to view all of the configurations for the
     service.

   o Perhaps the title of the service type definition will also be
     shown.

   A similar approach would be used for browsing other services.

- Greatly simplfy the configuration manager UI. This UI was designed
   to mimic ZCML files, but it doesn't scale very well. With only a few
   configurations, the UI can be overwhelming. This UI should show
   enough information to tell what the configuration is and provide a
   link to go manage it. It should also provide generic controls for
   removing configurations and for making several configurations active
   or inactive.

   Perhaps the UI should be a sequence of rows with:

   o A check box (for selecting rows for general operations)

   o Data. The data will be in two lines.

     The first line will contain a configuration status, type, and "key"
     data. This is data that defines what the configuration is for. For
     a service configuration, this would be a service type. For a page,
     this would be an interface, a view name, and a layer, if the layer
     is not the default layer.

     the second line woould contain configuration data, such as a
     component path or a permission.

     For example, for a service configuration, this might look like::

        Active Service ErrorReporting
        default/ErrorReportingService-1

     For a view configuration, this might be:

        Active Page index.html for IFolder
        default/index.pt, class default/index/IndexView, require Zope.View

     Perhaps the first line would be strong.

     When components or modules are mentioned, we should provide links
     to them.

   o A link to change the configuration.

Thoughts?

Jim

-- 
Jim Fulton           mailto:jim@zope.com       Python Powered!
CTO                  (888) 344-4332            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org