I built a Web site using Plone. I read "The Definitive Guide to Plone" in order to do so. Along the way, I kept a log of my impressions, which I'll relay here. Most of them are complaints, usually because I've done better in Aquarium for that particular item. However, I should mention that Plone did indeed fill my needs, for which I am grateful. Some of the comments refer to TAL, some to Zope, and others to Plone itself.
- The lack of elif and else in TAL drove me nuts.
- In TAL, try to use conditional logic to toggle between a <b> or a <p> tag. The normal way of changing tag attributes won't help you change the tag itself.
- The slot mechanism in Metal isn't as flexible as normal OO inheritance.
- Why must the Zope object hierarchy match the inheritance/acquisition hierarchy (which is tied to the URL hierarchy)? I like my URL hiearchy to make sense for users, and for each object, I like to be able to say what it inherits from explicitly. I like for screens in completely different locations to be able to inherit from some other object in a distant location. Fortunately, TAL improves upon this.
- Metal macros really are macros in that they execute in your namespace instead of taking arguments. This increases coupling.
- You have to restart the server if you change the translation catalog.