Plone 2.0 has been released. Plone is a content management system built using Zope, an open source application server written in Python. It pulls together the Zope Content Management Framework with a number of other pieces to make a pleasant, standards-based, easy-to-use CMS. If I had to install a CMS at work right now, I’d choose Plone in a heartbeat.

  • Plone and Zope are easy to use and administer. There is, I grant you, a learning curve to consider: Zope’s conceptual model is a bit … let’s say opaque. You kind of have to wait for a “Eureka!” moment when everything just clicks. Plone inherits some of that initial complexity but also does a good job of disguising the worst of it. As web-based CMS go, Plone has one of the most user-friendly interfaces around.
  • It’s cross-platform (runs wherever Python does?). You can run it alongside your existing web server so need not abandon your existing infrastructure or face substantial retraining and retrofitting costs.
  • Open standards. Out of the box, Plone generates valid and accessible XHTML and CSS. How many CMS do that? To me, this is essential not only for the usual reasons, but also because I’m thinking five years down the road when Plone might be replaced, and I want to stand a chance of being able to migrate the content without digging through all sorts of lousy, invalid markup. I suppose, come to think of it, that is one of the usual reasons.
  • Note how I mentioned accessible? Of course, the valid XHTML & CSS help quite a bit, so if your design is done right, the only additional trouble you need take to improve accessibility is content manager training. I shouldn’t have to say this, but never trust a vendor when they tell you that their software is completely accessible, because it’s probably not true. I’ve had salespeople from certain large software companies tell me that their portal and CMS products meet all government accessibility standards, despite this claim being demonstrably false. From what I’ve seen of Plone, its accessibility claims are not a lie.
  • Built-in workflow. This is a good example of Zope’s security model and object inheritance at work. User and group administration is built throughout and is easy to work with. Any object (a folder, a file, whatever) inherits its parent folder’s characteristics and permissions and can be overridden. Couldn’t be simpler. Rollback to an earlier version is a snap, too.
  • Clean URL structure. Although sometimes I feel like I’m the only one who cares.
  • Plone is open source and Python. As much as I love Python, I’m not just looking for an excuse to use the language (if anything, I should be pushing us to centralize on Java). Python is easy to learn and to ramp up to actual productivity to modify and extend Plone if we need to.

The big down side, of course, is that it doesn’t cost tens of thousands of dollars. Sorry about that.

This raises an advantage of open source that I don’t raise nearly enough: cheap prototyping. Three years ago, we had a chance to install a Zope-based or other open source CMS at work but did not. In retrospect, this was a huge mistake: the process for which we delayed implementation ended up causing complete inaction. We would have done well to set up a low-cost interim solution. Free & open source software offers this opportunity far more easily than high-buck commercial competitors.