[Zope3-dev] Zope 3 Questions

Shane Hathaway shane@zope.com
Thu, 09 Jan 2003 15:31:12 -0500


Here are the answers to my questions.  Regarding the Zope UI, it's 
simply not finished yet.  Certain facets are not very polished, but the 
UI will be cleaned up in time.  My other questions related to packaging.

Shane Hathaway wrote:
> Ok.  But look at what happens when I perform the installation steps I 
> described above.  I see three alternatives:
> 
> 1) The content management package sets its "views" service to be the 
> active one, then the rich text package goes and finds whichever service 
> happens to be active and adds its components there.  Now the rich text 
> components are installed in the content management package, which isn't 
> what the user intended.

I talked to Jim and got my answer.  The answer is that packages should 
contain only components that end users will not modify in any way.  If a 
views service from a "closed" package is made active, the user will not 
be able to add new views, which is very sensible.  To install custom 
mutable services, packages should provide a service *factory*, not the 
service itself.  Thus the scenario described above will not happen 
except when the user has explicitly "opened" the package containing the 
mutable views service.

I can explain again the "open" vs. "closed" terminology if it's not in 
the wiki somewhere.

> 3) The third alternative is for packages to "install" and "uninstall" 
> components and configurations in the active services.  The user and the 
> system have no awareness of packaging except when installing and 
> uninstalling software.  In addition to their normal interface, services 
> that can hold components implement a configuration interface.  The 
> configuration interface allows installation/removal/querying of 
> configuration directives and components.  Active services are not in any 
> package, because they are not necessarily specific to any package.

This option is similar to RPM and Debian, but RPM and Debian both fail 
to properly meet a use case that's very desirable, yet distribution 
maintainers haven't met: making an updated package based on changes to 
installed software.  If I install the Zope RPMs and make changes to the 
installed software, I'd like to be able to make a new RPM with my 
changes.  To do that currently, I have to use the source RPM and reapply 
my changes to the source.

The current packaging solution for Zope 3 solves that in a very cool 
way.  Software will run right out of packages.  You won't be able to 
make changes to the software running out of packages unless you take an 
explicit step to state you wish to change that package.  To redistribute 
your changes to a package, you just click a button to export your package.

> You may be thinking along those lines already, or perhaps you have 
> another way to mix components from multiple sources into a single service.

This turned out to be the case. Never underestimate the Zope Pope. :-)

It might be useful to add this info to the next Zope 3 newsletter.

Shane