[Grok-dev] Skinning/themeing

Martin Aspeli optilude at gmx.net
Thu May 17 19:23:34 EDT 2007

Hi guys,

I know there was a debate on this a while ago, but having done some 
thinking, and in light of the experience of writing Plone 3, I feel that:

  - We ought to have a standard way of sharing UI structure.

This is analogous to main_template in Plone

  - We ought to promote a standard set of viewlets

Viewlets are great. They make it easy to write general components, such 
as ratings (with annotations, which are also great) or tagging or 
information boxes. It'd be useful if there was a semi-standardised 
vocabulary of viewlet managers that applications could use. This would 
mean we'd get the same name for similar elements of applications' UI, 
making it easier for other code to plug itself into those viewlet.

  - We ought *not* to write our own themeing engine.

For this, I think we should embrace Deliverance. :)

Plone very much wants to move in this direction, where ZPT's are used to 
define page structure and shared elements (which are also good at), and 
plain-HTML theme files with Deliverance rule files are the way to go for 
the end look-and-feel (which is much more designer-friendly).

Simple applications won't care. Simple applications will just hard-code 
look-and-feel into ZPTs. Simple applications don't need anything more 
complex or powerful for skinning/themeing. Simple applications possibly 
even want something simpler than ZPTs.

Complex applications, or those where designers are different people to 
coders, or those that want to be extensible and skinnable, do need a 
themeing system. Rather than inventing a new one, I think Deliverance 
continues the Grok mantra of simplicity, elegance and innovativeness. I 
know some people have already started looking into this marriage, and 
I'm really keen to hear of their experiences.

To my knowledge, to make this happen, we would need:

  - To nudge the Deliverance build/install/deploy story along a little 
further. It's not too bad, it just needs an installer or an egg or a 
buildout recipe, and some better Windows support.

  - A developer-friendly way of configuring Deliverance - probably as a 
filter using the Twisted web server and WSGI.

  - Some Grokkable conventions for storing theme files and resources

  - Documentation and patterns an examples :)



More information about the Grok-dev mailing list