This is a statement of personal experience, not a manifesto. It’s likely to contain errors of both fact and judgment. I’m just throwing it out there FWIW.
I started using Zope early in the 2.6 series, skinned a CMF site, then moved to Plone 1.x. I built an intranet on Plone 2.0.5 and have upgraded that system through 2.5.3, 3.0.6, and the most current 3.1.x releases. Over that time, here’s what I’ve found.
I really value well-organized clear and concise documentation aimed at what I would call an “intermediate” level of understanding. While there have been gradual improvements in this area, I still find that it can be a lot of work to get the information you need to solve a problem. Between books, plone-users, chat, plone.org, and miscellaneous web articles, there’s a lot out there, but navigating and sifting through it can be a frustrating and time-consuming process. I also use DocFinderTab and occasionally even the Zope 2 API documentation (which AFAICT hasn’t changed since I started using it).
Support for Previous Releases
I have found that, compared to other software pojects, Plone demands more frequent updating in order to stay on a “supported” version. As of today (9 Dec 08), 3.1.7 is the current stable release and 220.127.116.11 is the lowest supported version. While the new buildout procedure makes upgrading much easier, I’d prefer not to have to upgrade every couple of months. Speaking of which …
While upgrading has become progressively less painful, especially if you do it frequently, there have been some major bumps in the road. 2.0.5 to 2.5.3 (migrating to Archetypes-based content types) was excruciatingly painful, and 2.5.3 to 3.0.6 was also challenging. Since then it’s been easier, but it continues to feel somewhat risky. Customizations of default Plone skin files are susceptible to breaking and there’s not usually an easy way to know where this will happen except by brute force testing. My sense is that Zope 3-style customization will offer an improvement here, but my first casual attempts to understand how to migrate my TTW customizations caused my brain to hurt.
One the cool things about Zope 2 and the CMF upon which Plone was/is built is the acquisition machinery which supports the “layering” of “skins”. Combined with TTW editing and in a few of clicks you’ve customized the interface. With Plone 3 moving more and more to Zope 3 technologies, it seems to me that customization is getting harder for the “casual” developer. While I appreciate that this movement solves certain problems of acquisition and TTW customization, I worry that moving customization more into Python code and generally increasing the complexity of the system will mean that you won’t be able to do much with a Plone site without a Python programmer.
Backup/Restore and Versioning
My sysadmin loves the repozo script and I can’t think of a serious problem I’ve had with the ZODB. It’s been solid. OTOH, restoring specific content items from a backup to production is not as straightforward as it is with a file system or RDBMS. Within the Plone UI, the content versioning provided via the “History” tab has some advantages over the old “Undo” functionality, but the comparison feature only supports content diffs and doesn’t indicate changes in metadata, related content, etc. And Undo did provide a way to “undelete” a deleted item (even though it didn’t/couldn’t always work), which has now been lost.
Continued in Part 2.