1. Product or framework
Harry Porter: Is Plone a framework or a product ?
Encolpe: Both, Sir.
HP: Then why I cannot see which part of Plone is a framework, and which one is the Plone product ?
E: Eh !
E: I guess there’s something wrong in the architecture. But there no fatal issue.
HP: OK, then where the base content implementation ?
E: Archetypes propose schema, filed and widget implementation with some basic implementation for the content object (unit, folder too).
HP: Now what do ATContentTypes ?
E: … some advanced implementation of content objects. I guess what you want me to say: basic implementation of content object should move from Archetypes to ATContentTypes to make a real separation between how a content object is stored and how it is displayed with additional functionalities.
HP: I wasn’t thinking so deep. I suppose that replacing Archetypes by something else would be easier if you choose this design.
HP: I tested NuPlone theme product and it was cool. But why the basic Plone theme cannot be separate from the CMFPlone product ?
E: Here I guess you reach the root of the problem. CMF have two base products to separate the framework from its basic implementation: CMFCore and CMFDefault. Plone doesn’t have such a trick: the CMFPlone product does both. I guess it comes from its will to be usable out of the box with only one click. To anwser to your original question split Plone in two products will not be enough to have a specific product for the basic theme: this one must be integrated in the default Plone product implementation then other Plone theme can be relied on it.
HP: Something hurt me recently when I discovered that CMFCore contains no skins directory.
E: We reach again a design choice and you may find another examples in Plone 3. The Plone architecture design must be a critical point in Plone 4 more than what’s the new cool feature we will add.
2. Out of the box versus ready to be customized
HP: Now, imagine that I’m a newbie in web and I want my website with cool theme. Where can I find themes for Plone and how can I customize it ?
E: You want site for Plone theme ?
HP: Not really. I want interactivity. Browse themes in a site (plone.org or somewhere else), then download an archive, put it in the PMI ad finally restart Zope (do we really need this step ?). Now I can choose my theme in the PMI. I want to be able to choose and use a theme like I do with my desktop theme.
E: Wooh. And you think that should be enough ?
HP: I want to be able to customize it simply. Without learn python or any template language. I just want an editing tool for viewlet and for basic stylesheet properties without having to go in the ZMI or to know an hide feature.
E: Only that ?
HP: If I can only learn HTML, CSS to customize my theme it really would be cool. Imagine a theme community around Plone.
E: It’s far from big projects I lead today, but I can see the benefit for the whole Plone community.
HP: It is like having Plone translated in the 40 most important languages: the goal is to raise interest in Plone with basic stuff to finally create business.
E: But you can use Plone out of the box right now and add tons of functionalities.
HP: Finally, i’am just an user, may be something like an advanced user, of system softwares. I don’t want to know anything around buildout, it’s to low level for me. Like for eclipse plugin I want to be able to browse plonepi within the PMI and choose a functionality or a product to add. Then plone should make an easy_install for me. I don’t care if it use zc.buildout in backend. I want my customization to be transparent.
E: Oh. You want Pypi integrated in Plone.
HP: Something like that, yes.
E: And if the egg that Plone download and install for you breaks the site, what shall Plone do ?
HP: In an ideal world it should run unittests and functional tests before to install it, shouldn’t it ?
E: Yes, but test coverage isn’t the priority in lots of projects. We need some code reviewer to elect some products and something to declare possible conflicts between eggs.
HP: It’s your work, not mine.
E: I can see the point. Is that enough for today?
HP: Yes. I may have some other questions or needs tomorrow.
E: And tomorrow is an other day.