Jan 26 2005

Plone, Again.

Published by Chris McAvoy at 1:06 am under Python

I’ve spent a good amount of time with Andy McKay’s excellent “Plone: The Definitive Guide.” It’s a great book. Not only for Plone, but for Zope as well. I’ll write a more formal review in the near future (which reminds me, I owe a Python Networking Essentials review as well). I’m waiting on a copy of another Plone book, to do a tag team review, much like the recent Slashdot-Plone-doubleheader.

Apart from the book though, I wanted to acknowledge a few misconceptions I’ve had about Zope, and encourage others that might have the same hang ups:

1) Zope isn’t quite “LAMP”. If you’re coming from PHP or Perl, and you try and force Zope into that model, you’re going to be frustrated. You need to let go a bit, and try and learn how Zope wants you to do things.

2) Use the ZODB if you’re not overly in need of a RDBMS. An object database seems weird at first, especially if you’re afflicted with the above, however, it’s easier to write a Zope app backed by the native ZODB than an external RDBMS. It also helps if you download the standalone ZODB package and play with it. It helped me understand the whole Zope-y concept of “everything is an object.” They say it constantly, but it didn’t really click until I installed the ZODB separately, and put some objects in it. Then it became clearer. It may be possible to think of Zope as a filesystem like hierarchy, but I don’t think it’s a good way to look at it, especially if you’re trying to get over any PHP-prejudices you may be bringing to the table.

3) Build a product. Even if it’s a quick dumb thing, build one product. It helped me a lot. There is a TON of product associated init boiler plate, the sooner you can separate out the boilerplate from the meat, the sooner you can start to see what other people are doing with their products.

4) Spend some time with Archetypes. If you need to build a content type, that won’t require an overly huge amount of customization, then an Archetype is perfect. With a relatively small amount of code, you can have an easy to use, fully formed Plone content type.

5) Take your time learning Zope Page Templates, and don’t try and force the model your favorite template language has established for you on ZPT’s. They’re really different, but worth your time. Every time I’ve tried to learn Zope, I’ve usually breezed over ZPT’s, which was a mistake. This time, I took my time with them, and I think it’s made a difference.

I’ve been critical of Zope in the past, one minute I’ll love it and think I’m going to move all my projects to Zope, the next I’ll hate it, and do everything I can to forget about it entirely. I’m working on a project for my wife and her friends that will be entirely Plone based, it’s content heavy, but Archetypes took care of it in a flash. We’re going to be building all the page templates this week. After the site is “live”, I’ll write up a “how I used Plone to build this site” entry, as this whole experience has been pretty enlightening.

I still prefer the Webware model for 75% of my Python web projects, but Plone / Zope fits nicely in the remaining 25%.


Share and Enjoy:
These icons link to social bookmarking sites where readers can share and discover new web pages.

  • del.icio.us
  • digg
  • Reddit
  • StumbleUpon

Trackback URI | Comments RSS

Leave a Reply