optilude at gmx.net
Thu May 17 19:23:34 EDT 2007
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