On Monday 17 December 2007, Jim Fulton wrote:
> > As a usecase take a forum application which should be installed more  
> > than once in an instance but needs different layouts and also  
> > different subset of functionality.
> I don't have this use case. I wonder how many people do.

I certainly do have this use case all the time. :-) We often have to write a 
publically facing and an admin UI. The admin UI should not be available 
publically. With skins this can be solved very elegantly.

In a bigger project, we have a true hosted services environment, where 
customers want very customized UIs, both in look and feel. In those cases 
skinning is very important to us, since we can choose which layer we have to 
use as bases for the custom skin.

> We tend to think up complex use cases and then make the zope framework  
> more complicated to deal with them.  Sometimes these are legitimate  
> use cases, but they are rarely common cases and their solutions should  
> generally not be inflicted on the masses.

I think that using default browser layer is the way for people not to worry 
about skins. However, I have found that this is a really bad long-term 

The biggest problem is that I do not have any control over the default browser 
layer. I install a package to use its API, but often get a lot of views for 
the default browser layer as well. Without careful review, there is now way 
for me to tell whether this opens a security hole. It is thus much safer, to 
start a new skin from scratch, and carefully add registrations. We developed 
some minimal base skins (see z3c.layer), which do the most basic setup and 
which we reviewed somewhat for security.

And even if the the security is okay, I would not want to expose all the 
views. I want control, but often, registering everything from scratch is very 
tedious. Layers -- and thus skins -- act as collection  s of view 
registrations. I think that z3c.form* demonstrates this very nicely. If I 
only use the IFormLayer, I only get the widgets, and only by inheriting from 
IDivFormLayer or ITableFormLayer, I also get form layout components.

As Jim pointed out in another E-mail, base component registries (such as 
z3c.baseregistry) can solve this problem, but only partially. Base registries 
can only be applied on the site-level. So sure, I can customize the look and 
feel (and much more) for every site. But for skinning I often want multiple 
UIs for the *same* site. This problem cannot be solved with base registries 
today without writing additional software. And this use case is extremely 
important to us!

Stephan Richter
CBU Physics & Chemistry (B.S.) / Tufts Physics (Ph.D. student)
Web2k - Web Software Design, Development and Training
Zope-Dev maillist  -  Zope-Dev@zope.org
**  No cross posts or HTML encoding!  **
(Related lists -
 http://mail.zope.org/mailman/listinfo/zope )

Reply via email to