Follow Slashdot blog updates by subscribing to our blog RSS feed


Forgot your password?

Professional Plone Development 98

Michael J. Ross writes "Among the hundreds of content management systems (CMSs) available for building Web sites, Plone may not be the most popular; but for the majority of experienced Python developers, it is without equal. This is partly due to Plone being one of the few major CMSs written in Python, and partly due to its powerful extensibility. Customizing and extending Plone, however, are not for the faint of heart. Fortunately, help is at hand, in Professional Plone Development, a book written by seasoned Plone developer Martin Aspeli." Read below for the rest Of Michael's review.
Professional Plone Development
author Martin Aspeli
pages 420
publisher Packt Publishing
rating 7/10
reviewer Michael J. Ross
ISBN 1847191983
summary A practical exploration of how to extend the CMS Plone.
Professional Plone Development was put out by Packt Publishing, on 26 September 2007, under the ISBNs 1847191983 and 978-1847191984. On the book's Web page, visitors can order a copy of the book (more on this later), download the sample source code found in the book, submit feedback, ask questions of the publisher, and download a sample chapter — specifically, Chapter 2, which presents the case study used by the author. For anyone who wants to get the most out of this book, downloading and working through the sample code would be extremely valuable.

The book's material is organized into 19 chapters, spanning 420 pages — despite what is reported on the publisher's Web page, which as of this writing indicates that the book comprises 300 pages. The book's chapters are grouped into four parts. The first one, the briefest, sets the stage for what follows, by presenting a context for Plone development, including the CMS's history, its competition, its use as a stand-alone application versus use as a framework, and other foundational matters. It also introduces the case study — a cinema chain's Web site — used throughout the book to illustrate the concepts being taught. Lastly, the first part of the book covers the development environment needed by the reader to follow along, including discussion of Zope, which is an open source application server designed for creating CMSs and other Web-based applications.

The second part of the book covers Plone customization: basic concepts, laying out a site's strategy, security and workflow issues, add-on products, and creating a new theme. The book's third part, the longest, covers how to extend Plone with new functionality: Zope programming essentials, custom content types, standalone views and forms, working with a relational databases, user management, creating user interfaces with KSS, and more. The fourth and last part of the book addresses real world deployment of one's extensions, including Zope server management, production server setup, LDAP authentication, and possibilities for the future. Unlike most technical books, the author provides at the end a brief yet worthwhile section on where the reader can go next to learn more along the same lines as the book. The brevity of the section is certainly not from a lack of knowledge or helpfulness on the part of the author, but rather the dearth of information available to developers interested in learning about how to extend Plone.

There's a great deal to like about this book. The author clearly possesses the expertise and experience needed for providing instruction on a challenging topic such as this. His explanations are not abbreviated, as seen in so many other technical monographs. Furthermore, most programmers learn best by viewing and mentally dissecting sample code. For such people, Martin Aspeli's practical approach — focusing on a substantial sample application — will prove more engaging and instructive than the made-up and oftentimes overly simplistic examples found in many computer programming books — including the increasingly popular cookbook titles. On the other hand, by placing almost all of the discussion within the framework of a single sample application, the author diminishes the potential of the book for reference purposes. To benefit the most from this book, the reader definitely would want to work through all of the chapters, in detail, and in the order presented.

In presenting the many steps of creating the case study application, the author provides a generous amount of information on what he considers to be best practices, to make the Plone development process more reliable, and the resulting code easier to maintain and further extend in the future. The confident authority with which the author covers these principles, and the validity of the examples provided, demonstrates his knowledge of the subject matter, and reassures the reader that the author has the experience to provide reliable technical guidance.

In terms of prerequisites, readers should have a solid familiarity with Python and Plone. The book covers Plone version 3.0, but still would be of value to developers who have not yet upgraded from an earlier 2.x release.

Professional Plone Development is definitely best suited for Plone developers and administrators from the intermediate to advanced levels. However, even someone fairly new to Plone, would benefit from what it offers. In fact, carefully working through all of the material, and taking the time to really understand it, could take a developer from the beginner to the intermediate level. With further experience, subsequent rereadings of the book would likely yield further insights. It's that kind of book — meaty and in-depth, and not in any way a shallow "dummies" book.

However, there are some criticisms that should be leveled against this book, although none of them have anything to do with the writing of the author or the sample code. Rather, these are recommendations for future improvement directed to the publisher. First and foremost, the book's print on the page, is quite shiny — and not in the sense of a "Firefly" compliment. Rather, it reflects light as if the ink were extremely glossy. As a result, depending upon the placement of one's reading light, the page being viewed invariably has a large shiny spot, forcing the reader to keep rocking the book back and forth, relative to the light source, in order to shift the glare away from the section on the page that is currently being viewed. Of the hundreds if not thousands of technical books I have read, this is the only one with this type of printing, and I hope it is the last. This problem is not seen with the largest text of all, such as "Part N" at the beginning of each of the book's four major parts.

The images in the book, of which there are few, have a high degree of pixelation, which makes them look cheap, though it certainly does not make them impossible to read. As with the book's text, the pictures suffer from the same annoying shininess.

Earlier it was mentioned that the prospective reader can order a copy of the book from the publisher's Web site. However, I would not recommend this until the publisher improves the way that they package their books for shipping. Rather than enclosing the book in a plastic bag or a piece of clean wrapping paper, to protect it, the book is placed bare inside of the shipping box, in which it bounces around during transit, as it makes its way to the purchaser from the shipping/distribution facility. Consequently, the corners and edges of the book are easily curled, and the outside surfaces of the book's cover are scratched from the imperfections found in the shipping box's interior. This shows what can happen with books that are mailed with no internal protection. Publishers should not assume that what the shipping department sees when they place the book in the box, is what the customer sees days later when they receive it. Fortunately, this book is available from all major online booksellers, including the 11 firms listed on the publisher's Web page, for various countries. While this might not guarantee better protection of the book's cover, I have had far fewer similar problems with, for instance.

Despite these production flaws — all of which can be corrected — Professional Plone Development is a worthy addition to the library of any Plone administrator interested in making the most of their Plone installation, any Python developer who wants to create Web sites without reinventing the wheel, and any professional programmer interested in taking advantage of the growing demand for Plone developers.

Michael J. Ross is a Web developer, writer, and freelance editor.

You can purchase Professional Plone Development from Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
This discussion has been archived. No new comments can be posted.

Professional Plone Development

Comments Filter:
  • ZOPE (Score:5, Informative)

    by neo ( 4625 ) on Wednesday November 07, 2007 @01:56PM (#21269703)
    When my friend and I were creating an offshore gambling application for a sports bookie in [censored] we decided to go with Zope. Our decision was made on a couple factors. Mandrake could encrypt both disk and swap out of the box, Zope had (has) an incredible security model, and very few sports betters would likely to know Python. (Yeah, you with the glasses, I know all about you. I know you exist but you weren't on our books).

    In any event, when we looked at Plone we ditched it immediately. It was too much. We lost all the abilities to control the minutia of any given piece that we wanted and the bubble up ability of Zope was more or less lost.

    I'm NOT saying don't use Plone. It has a lot going for it... but don't forget to look under the hood and see if straight Zope will do what you need first.
    • this is my first time hearing of Plone and Zope. After reading the websites of both projects and this review, I don't really understand your comment. From what I am reading, Plone is run ontop of Zope. So, if you didn't like what Plone had to offer, then you basically wrote your own Plone competitor to run ontop of Zope, while your comment leads me to think that Zope is a Plone competitor.

      I guess I would call Zope a "window manager" and Plone a "Desktop Environment". Does that sound about right? Or wou
      • by neo ( 4625 )
        Zope is a very open ended content management system. Open ended is almost too lax a term. It's more like a content management SDK. Very open to modification and robust (excepting the database). Plone uses this environment to build on top of and Zope makes a great foundation. Plone does what it does so well because Zope does what it does so well.


        Zope: Framework
        Plone: Application on top of Zope.
      • What is the Zope? (Score:2, Informative)

        by Wheat ( 20250 )
        I guess a good analogy in regards to the Zope that Plone runs on would be "Python is the 'GNU/Linux', Zope is the 'GNOME', and Plone is the 'Firefox'".

        Zope has been around for almost 10 years now, so when people say "Zope" they can mean very different things. Zope 2 was originally used as a content management systems and a through-the-web development environment using the Zope Management Interface (ZMI). This was way back in 1998-2000 when web sites were simpler and mixing these UI of these two application
        • Re: (Score:3, Interesting)

          by nuzak ( 959558 )
          Grok actually makes me interested in Zope 3 -- because ZCML makes J2EE's XML configuration look sane. It's perhaps a perfect example of how not to write a configuration language, and especially how to not write an XML configuration language.

          I just wish I could find decent documentation on Zope3. The greatest fear of the Zope 3 development community seems to be that someone might someday actually be able to use it.
        • cant get a better anology than that!
    • by dracvl ( 541254 ) on Wednesday November 07, 2007 @02:25PM (#21270093) Homepage
      Plone is a Content Management System, not an web application framework.

      Writing a gambling application in Plone is absolutely not what it's built for, in those cases you should use something that fits the use case better -- Zope 3, Django, TurboGears or Pylons come to mind if Python is your language of choice. They are all excellent frameworks, Plone is much closer to an application than a framework.

      -- Alexander Limi, Plone co-founder

      • by neo ( 4625 )
        Exactly me point. I don't want to take anything away from Plone, but I want to show that Plone is built on something pretty nifty in it's own right.
      • Oh come on Limi - you're selling yourself short!

        I'll write a gambling application in Plone because I get to rapidly model the app with ArgoUML, generate my skeleton code and fill in the missing code and templates.

        Plone has excellent UI which I can just re-use. It is quite easy to strip away what I don't want, or conversely to build a minimal design from scratch. In fact, in many cases I use Plone as a "thin" layer over Zope.
    • by amaupin ( 721551 )

      I've used Zope as the backend for everything from an online dating site to a simple online game store. It's easy to extend and unless you want to copy you should look at the wide variety of already available Zope products before installing an extra layer of abstaction.

      I looked at Plone a few times over the years but it just appeared too crufty and since Zope supports Python scripts it's easy enough for a competent programmer (of which even I'm not!) to roll their own solution.
    • Well, Plone is a content management system. An offshore gamling application doesn't exactly sound like a CMS site... So even if you had liked what was under the hood, you probably wouldn't have ended up actually using much of it. :)
  • by Just Some Guy ( 3352 ) <> on Wednesday November 07, 2007 @02:05PM (#21269839) Homepage Journal

    I love Python. In fact, I wrote a short magazine article [] about how much I like it (although I admit that the promised sequel never materialized; sorry Tony). Having said that, working with Plone was like pulling teeth. It's obviously a nice system with huge potential and excellent customization options, but the learning curve is enormously steep.

    We ended up abandoning our Plone intentions and moving toward Drupal for pre-made CMS stuff; even if I don't like hacking in PHP, hundreds of other people have already done most of the work [] for just about anything we might conceivably want to do. For true web application development beyond content management, we switched to Django and haven't looked back. If you already know Python, Django's learning curve is exceedingly shallow.

    I don't hate Plone. It's just that it didn't seem to offer anything more than its competition, and that's from someone who already built a large web application in Zope (which is the platform Plone is built upon). Having said that, this book and others like it can hopefully make it a lot easier to get started with Plone development. It has great possibilities if you can get past the startup cost.

    • I've deployed plone extensively inside my organisation, it automates the monitoring and configuration of almost everything we do across Cisco, Windows and linux platforms, it's great. But I will say that the documentation I've read over and over again has failed to give me much confidence that I understand it.

      Every time I've had a question the online forums have answered them fantastically quickly (better than any Cisco TAC case I've ever opened), and the answer has always seemed obvious and intuitive once
      • "there's just something about Zope and Plone that I find difficult to grok"

        Zope and Plone have notoriously steep learning curves... in fact, my former boss said they were more like cliffs or mountains than curves.

        For me, the key to success was to take a bit of time to learn Python. If you can "think in Python" suddenly Zope and Plone make a lot more sense. The Zope Object DataBase (ZODB) is essentially just a big collection of Python objects, so using Python can give you a lot more precise control over just
    • by div_2n ( 525075 )
      The one thing I didn't see after (attempting) browsing through those modules is a desktop explorer integration piece.

      Plone has this with some software from Enfold Systems. The general idea is to have an ultra quick and easy way for content managers to browse to files, open them, save their work back to the CMS and retain version history along the way.

      The Enfold solution is almost there. It does everything except retain version history with the saving of files.

      Plone with the Enfold Systems add-in is everythi
      • If Drupal has that, I'd love to be able to evaluate it. If it doesn't have the desktop (yes, Windows) integration piece to easily open and save files, I'm not interested as this is an essential piece.

        Well, you bring up an interesting point: everyone has different requirements. Desktop integration is completely unneeded in my company, so its (apparent) lack in Drupal doesn't matter to us. Similarly, I'm sure there are Drupal modules that don't have Plone equivalents that somebody depends on every day. I have nothing at all against Plone - if anything, being a Zope shop I'd like to see it come out of hiding and build a big developer community.

        It just doesn't meet our needs today, that's all. If it

        • by div_2n ( 525075 )
          I'm using FOSS wherever I can. A preliminary use of Linux on the desktop is showing great promise. If the WINE folks can work out their regressions and make some further progress, I foresee Linux replacing many desktops.
          • That's almost where we're at. We have exactly one Windows-only app that the majority of our employees use, and it's developed in-house. We're moving towards replacing it with a web app, or possibly a Python+QT/GTK GUI. When that happens, there will be no technological reason for us to stay on Windows.
    • I went to the Drupal site. It didn't say anywhere I could see what language it was based on. If you hadn't mentioned php in your post I would have been at a total loss.

      These platforms all need to spell out what language they are based on a lot better than they do.
      • Re: (Score:3, Informative)

        by Just Some Guy ( 3352 )

        These platforms all need to spell out what language they are based on a lot better than they do.

        From the download page []:

        Note: Drupal works with PHP 4 & 5. If you need support for the newest PHP 5.2, however, you must use Drupal 5.1 (and higher) or Drupal 4.7.5 (and higher)

        Beyond that, why would you care? Either it has the features you're looking for or it doesn't. It's expected that the majority of users of such a thing will just want to install and use it, not hack on it. Put another way, off the top of my head I don't know whether Firefox is written in C or C++ and don't really care. As

        • I think if you look at the % of firefox users who hack firefox to mod if for themselves, and the % of any web framework users who who hack on their framwork, you will find the second numer is much much higher than the first.

          Firefox also doesn't require me to have C++ installed on my machine. Drupal does need php to be installed on my machine.

          They are very different things.
  • The cmses, which are generally based on php/mysql, fall little short of doing housework, laundry and cooking. One can do everything with them. So ? whats the racket about 'professional' development on a cms on pythong ? it doesnt go professional unless there are hundreds of thousands of people using it, and using it for serious ends, like oscommerce.
    • There *are* hundreds of thousands of people using it, millions even, see: []. Akamai, Novell, CIA, Discover Magazine, to name a few.
      • "using it" does not mean who actually use it as a client/visitor. user here means the provider of that service, ie the company utilizing it. cia and so on do not count as examples in that. even if they deployed sh*t, people would have to use them. no choice.
    • The poison with python is that it is a FANTASTIC programming language. That's what. :)
      Sure, for the end user with their CMS it doens't matter what the CMS is written in. But me, who writes it, I care. :)
      • yet, fantasticness does not justify widespread usage.
        • When it comes to languages, they do, as the word "fantastic" when it comes to languages can be translated to "something that is justified for widespread usage". :)

          A more reasonable comment from you would have been to ask what makes it fantastic. But you didn't ask that, so now you may never know. ;-)
          • Mona Lisa is fantastic. Can it be used widespread ? Is it relevant ?

            Moreover, even if that word was fit to use in that fashion, the simple fact that it is not in widespread use would mean that it wasnt that 'fantastic'. Volkswagen beetle would be in 'fantastic' category then, likewise "ibm compatible personal computers". but not python.
            • If Mona Lisa is a fantastic programming language, then yes. If it isn't then your reply is irrelevant.

              "the simple fact that it is not in widespread use would mean that it wasnt that 'fantastic'."

              Eh... no.
              I said that if a programming language is fantastic, that justifies widespread use. Notice the words "justifies".

              First of all, you just did the most basic and fundamental of all stupid logical errors. The statement "If A then B" does NOT mean that the statement "If B then A" automatically is true.

              Secondly, I
  • Just be sure to apply the recent hotfix for a pretty nasty vulnerability. []
  • I have been using it and developing apps for it for the past three years. There is a learning curve but it is worth it. There are some great videos about how easy Plone is to work with on the plone site: []
    • Plone is great if it is a good fit between the requirements and developing custom document types within a CMS framework. The architecture is highly layered. The low level way of developing under plone has a non-trivial learning curve to it. The high level way is to use what is known as plone archetypes [] which makes it really easy to create custom document types. The skinning of the custom types becomes very easy using Zope's METAL [] technology which is a very cool page templating system.

      I have discussed pl

  • "Plone"? "Zope"? Please tell me that professional web developers are not attempting to use words as silly as these yet still be taken seriously.

    Besides which, I heard somewhere that PL/ONE has a syntax worse than JOSS...
    • by Marcion ( 876801 )
      Well all good software has silly names, what's your problem?
    • Besides which, I heard somewhere that PL/ONE has a syntax worse than JOSS...

      You know you're old when you get the joke... PL/I haha

    • Zope stands for the "Z" object publishing environment ... not sure what that means, but you get used to it :-) Plone is the name of a (now defunct) techno band that Alexander Limi is a fan of.
    • You might want to looks at Silva, also based on ZOPE. Not only is the name not silly, it also has great version control for content and uses XML for content metadata.
  • I've been developing with Plone for 3 years, and admit that like any other complete web app out there there's a learning curve, but - Martin Aspeli's book is precisely the sort of clear and useful document a web developer needs to get started with an great application like Plone. It is also a solid guide for any seasoned Plone integrator to the direction Plone will be taking in the future.
  • The comment earlier that Plone only can handle small sites is completely refuted by facts. There are some seriously big sites using Plone, such as,, Akamai's website, etc. As an example, I know for a fact that [] (Discover Magazine's website) got nearly 100,000 site visitors just yesterday and gets over 1.5 million page views per month currently. Bottom line, Plone is really powerful stuff. If you are doing a small rinky-dink site, it might be overkill (depe
    • by BrDerby ( 629560 )
      Atkins website ( is also a Plone site that gets a lot of traffic - millions of page views each month.
  • We started in plone, spent about $30,000 dollars on initial prototyping but found some problems and then rewrote in ruby on rails; redoing the same work for about $10,000 and being more complete. Granted our needs were not for the full plone capabilities, and granted some of the initial research we did in plone did rollover to the RoR version but the fact is nobody uses the full capabilities of plone and most of the features that one really needs can be easily written as small modules in say drupal or ruby
    • Hi,

      I won't get into a language-or-framework argument - I am big believe in "right tools for the right job", and it sounds like Plone wasn't the right tool for you. If you didn't need a CMS, in particular, it was almost certainly the wrong tool. :-) Personally, I find Ruby syntax to be very convoluted, but that's mostly because I'm used to a different style of programming that fits my brain better. If Rails works for you, by all means use it!

      However, I take some issue with the use of the word "obsolete". May
    • by reex ( 1185901 )
      Hi Anselmhook! This story is really sad - I would not have wanted to be in your place when you told your client or investors that you wasted 30.000$ on nothing and that you need to start everything from scratch, with another system, with another crew. I think there is a lot to learn from your story. First, there is no system that is a good choice for "any task". Plone has its strengnesses and also some drawbacks: it is an excellent choice for many solutions but as you point out too, it is not good for any
    • by Wheat ( 20250 )
      Sweet bejezus!

      "Beyond this the python notation is terrible; verbose, clumsy, the white-space requirements are completely ridiculous and impositional". The Python syntax excels at creating maintainable software, yes some people take offense that Python is trying to take away their creative control of white-space and other common language styles, but this is only a boon when you have software that has to be maintained by more than a single developer. I would certainly raise the red flag to any team taking adv
    • * Plone was excessive for our needs. We reimplimented the needed feature subset quicker in Rails than learning how to use the equivalent feature subset in Plone would have taken.

      * Plone conventions in database management and templating were difficult to understand, even if you had a deep understanding of databases and web content creation, due to implementation idiosyncracies.

      * I really dislike Python's syntax.

      I think syntax is a "You say tomato, I say tomato" sort of point, but the first two points should
  • Thank you for a fair and balanced review. I hope you enjoyed the book!
  • The university I work for considered Plone for some large-scale CMS concerns. We finally decided in favor of Drupal instead because PHP developers are a dime a dozen. We have plenty of in-house expertise, but thinking about hiring down the road it seemed best to us not to narrow our options for at best a marginal software advantage.

    My 2 cents.
    • I did once the same conclusion - I'd better write my app in PHP, because there are so many PHP coders, a dime a dozen. The truth was, that the coders for that dime where so lousy, that wiping after them was a real chore.
      My conclusion was, that once the codebase grew out of "basic stuff" and went into OOP, the dime a dozen coders couldn't keep up and the salary for a guy who can do decent OOP in PHP is the same for decent Python coder.
      It really doesn't pay off.
      • I disagree. There are plenty of good PHP programmers. There are lots of crummy ones, it's true, but it's not like it's hard to find a really good PHP coder when you need one. There are just more in general. Besides which, our codebase (Drupal) is already written, and that's half the point. We want to be able to hire people who can get their minds around the CMS, not write modules from scratch. We employ a lot of designer/developers, and while it's plenty easy to find a designer with enough PHP skills to cod
        • There are lots of crummy ones, it's true, but it's not like it's hard to find a really good PHP coder when you need one.

          On the other hand, you don't need a "really good" Python developer, because Python (unlike PHP) doesn't make it exceedingly easy to write buggy code that looks like good code.

  • I've been using Zope/Plone as a development platform for years now (Since an early alpha of plone1.0), and I can honestly say it is without equal.

    There is an incredibly steep learning curve and sub-par documentation, but once you get your head around it the speed and ease of development amazes everyone I develop for (And myself).

    Having started using Java/Tomcat again for a project, It feels like taking several steps backwards. Apart from the the (imho) superiority of Python over Java*, The entire developmen
  • Is there such a thing as a good cms? It seems like most designs seem to breakdown when there interdependencies between data.

    Then again, I've only ever used DotNetNuke, which is a complete joke of an application.
  • plane bad.

You will never amount to much. -- Munich Schoolmaster, to Albert Einstein, age 10