Content management with Plone

As those of you who have read my post Building a university website will know, I’ve recently been working on a website that uses the open source CMS Plone. I promised a more detailed article on Plone, and this is it.

Now that I’ve spent a couple of months first learning Plone and its underlying technologies, and then using it to build a fairly large website, I’d like to share some of my impressions of it, both good and bad. I’m not going to provide any code examples. Instead, I’ll focus on topics related to ease of use, accessibility, web standards compliance, and developer friendliness.

Some basic Plone facts

Plone is built on top of Zope, a web application server and development system written in the Python programming language. Zope has been around since the late nineties, and Plone was created in 2001.

Zope has a built-in database and web server, so you don’t have to have anything else. However, it can also be used with web servers like Apache and Microsoft IIS, and most relational database systems, and the recommended setup is to run Zope/Plone behind a web server like Apache.

Plone is highly customisable and extensible, is technology neutral, has an internationalised interface, and many add-ons (called Products) are available.

Platform compatibility

One of the major benefits of Plone is that it runs on just about anything. When I took a first look at it, I installed it on my PowerMac G4 at the office with no problems. It just worked. When the serious development work began, I installed Plone on an Apple XServe G5 and moved what we’d done so far to that machine. Again, no problems.

The client is hosting the site on their own server, which is running Sun Solaris, and when development was done we successfully moved the entire site to that server. Plone also runs on Windows, Linux, and BSD.

Unlike many other CM systems, especially commercial ones, Plone’s administrative interface works with just about any web browser. It works best with modern browsers, but you’ll get by with an older one if you need to. In other words, using Plone will not force you to use Internet Explorer for Windows. That is a major benefit. Hello, all you CMS vendors that lock yourselves into Microsoft technology: It’s time to wake up.

Basic installation and setup

Out of the box setup, at least on Mac OS X , is very easy. It just works, and I had Plone up and running in a matter of minutes. Excellent! As far as I know it’s just as easy to get started with the Windows installer, but I don’t have any hands-on experience with that or the Linux version. If you know otherwise, feel free to speak up in the comments.

XHTML + CSS quality of default templates

The default templates are better in this regard than those of any other CMS I have worked with. The default templates actually validate, and there is a tableless skin (a Plone skin is a set of page templates) included, although it isn’t the default. Still, much could be improved.

Many Plone skinning tutorials assume that you’re just going to edit the CSS and use the XHTML from the default templates. That may be acceptable to someone doing only very light customising, but we chose to rebuild just about every line of XHTML from scratch. We also completely replaced the default CSS files.

This was mainly to reduce clutter, remove extraneous whitespace, and to improve on document structure and semantics. The default templates use lots of presentational class names, unnecessary class attributes, and plenty of non-structural span and div elements. They also include a 27 KB JavaScript file with functions that the site we were building has little or no use for. For some strange reason, a base element is added to all pages before they are sent to the browser. Apparently there is no way to remove it. Quite annoying.

My point here is that there is more to the spirit of web standards than just using valid (X)HTML. Despite my complaints, Plone does do very well here when compared to others.

Accessibility features

Again, Plone does well here in when compared to other CM systems. However, there is still some room for improvement. As an example, the tabindex and accesskey attributes are used somewhat overzealously.

The tabindex attributes, which are used to define the order in which various parts of a document get focus when the user navigates by pressing the tab key, are for the most part unnecessary. The tab order established by the XHTML source is fine, so the tabindex attributes just add clutter.

When it comes to accesskey attributes, specifying one for all non-content links and form controls is nice in theory. However, they are very likely to conflict with browser or operating system shortcut keys (or with each other) unless they are applied carefully and manually. Some accessibility experts even argue that using the accesskey attribute, while being great in theory, is more or less pointless.

WYSIWYG editing

Plone comes with a WYSIWYG editor called Epoz. Other editors can be used, but we chose to stick with the default. Epoz is based on the editing capabilities built into Internet Explorer 5.5+ for Windows, Mozilla 1.3.1+, and Firefox (Firebird) 0.7+. This caused some confusion at first, since the behaviour is slightly different depending on which browser you’re using while editing a document (try deleting a table in Mozilla or Firefox without switching to HTML mode – you can’t).

Epoz does a reasonable job compared to many other WYSIWYG editors in commercial CMS packages, but the code produced is not good enough by my standards. Yes, I’m really picky about this.

Fortunately, it’s possible to configure Epoz to use HTML Tidy to clean up the XHTML before saving it to the database. Since I wanted to minimise the risk of invalid XHTML being entered, I installed mxTidy on the server and configured Epoz to use it. I also wrote a whole bunch of regular expressions to further clean up the markup after HTML Tidy has done its job. The end result is not perfect or foolproof, but acceptable.

A package like Plone that claims to be fully standards compliant and accessible would really benefit from having a very strict WYSIWYG editor that makes it impossible to enter invalid XHTML. XStandard is the only such editor that I know of, but unfortunately it’s commercial and only works on Windows (though it does work in Mozilla and Firefox as well as in Internet Explorer), so it isn’t really an option for an Open Source system like Plone.

URLs

No query strings are used in Plone URLs, which is good. You can specify a specific URL fragment for each document (or other content object) you create. The complete URL is then composed of the URL fragments found in the path to the current object. If you don’t specify a URL fragment, one is created for you. Automatically created URL fragments aren’t exactly user friendly, but at least they are search engine friendly.

I miss the ability to specify a document’s full URL. That would allow you to create a short URL for a deeply nested document, which is sometimes desirable. Other than that, Plone’s URLs are fine.

Learning curve

In my opinion, the major drawback of Plone/Zope is the extremely steep learning curve. Plan on spending a few weeks getting to know Zope before even looking at Plone, unless you’re going to use it as is, without making any customisations beyond tweaking the CSS.

To customise Plone, you need to learn the basics of Python, Zope’s templating language TAL, the Zope Management Interface (ZMI), and when to use what. Most likely you will also need to learn Archetypes, which is a framework used to create new content types. Having to learn everything at once can be incredibly challenging, frustrating, and time consuming. The available documentation does nothing to make it easier either. More on that later.

Despite being warned of the steep learning curve, I made the mistake of jumping straight in and start customising Plone, instead of learning more about Zope first. I just couldn’t imagine the learning curve being that steep. Looking back, things would have been a lot easier if I had started by reading up on Zope, TAL, and Python, and then tackled Plone. This is especially true when you want to rewrite all of the templates and the CSS – doing so will require a decent understanding of most of Plone’s components.

Documentation

I’d really love to be able to say that documentation for Plone is good and easy to find. Sadly, it is neither. Far from it.

Documentation is hard to find, inconsistent, confusing, unorganised, incomplete and sometimes outdated. Most of it also assumes that the reader already knows the ins and outs of Zope, Plone, and Python. This only makes the already steep learning curve even steeper. I know several people have worked hard to create good and usable documentation for Plone, so please don’t take this personally.

Apart from the free documentation available online there are a few books that you can buy. Unfortunately, The Definitive Guide to Plone, the book that many recommend (and I have bought and read), also suffers from assuming that the reader already knows a lot about Zope. I haven’t read the other books that are available (Building Websites With Plone, Plone Content Management Essentials, Plone Live), since they hadn’t yet been released when I started working with Plone, so I don’t know if they are any different in that regard.

The documentation for Plone is being worked on, and what’s out there is getting better, but at this moment, the lacking documentation is a major hurdle you have to overcome in order to learn Zope and Plone. Be prepared to spend a lot of time searching for answers.

Support

Plone and Zope are Open Source software, so it’s natural to turn to the developer community for help and support. In general, most people are helpful, some more so than others. I subscribed to the Plone-users mailing list, and I’ve sent plenty of confused messages to it. Sometimes, especially in the early days, I didn’t really know what to ask or what terminology to use, so I realise how difficult it must have been to help. In the end, I did manage to find answers for most of my questions.

I’ve found that whether you get any help or not (as well as the quality of help) depends a lot on how you ask your questions. You need to be as specific as you possibly can. Unfortunately that can be very difficult when your problem may be related to Plone itself, Zope, Python, your server setup, etc, and you don’t know where to start looking. You’d better make sure you have looked everywhere before asking though, or you’re going to get some RTFM responses.

I’d like to quote Andrei Herasimchuk here: I would RTFM if there was an FM to FR. With documentation being in the state it is, I’m sorry, but there will be stupid questions from apparently clueless newbies.

It’s hard to be a Plone newbie. Remember that!

The portal emphasis

All CM Systems aren’t suitable for all kinds of websites. Out of the box, Plone’s emphasis on being a community/portal CMS makes it a bit confusing when that’s not the kind of site you are building. Things like people being able to register themselves as users and every user having a home folder are not really appropriate for “normal” websites, in my opinion. This is not really a problem, since these features are easily removed. I’m mentioning them because I was confused by them at first.

Performance

By default, Plone is set up for development, not deployment. Before launching a Plone site, you need to make some configuration changes to enable caching and make sure debug mode is off. If you don’t, performance will not be good, to say the least. Unless your site gets very little traffic you will want to use a caching proxy in front of Plone, something that is highly recommended. Zope is not the fastest thing around, so anything you can do to reduce server load will help.

Summing it up

If you’ve read this far you might think I’d recommend against using Plone. Well, that depends. You do need to be aware of the really steep learning curve. Unless you have previous experience with Zope and Python, count on spending a lot of time – much, much more than you think – learning, searching for documentation, browsing mailing list archives, sending questions to mailing lists, etc. If you’re prepared to do that, go ahead. If not, maybe you should look at other systems. I know I definitely would have, had I realised how hard it is to learn (or taken the advice I was given).

Don’t get me wrong. Plone is a very powerful and highly extensible CMS. It’s just incredibly hard to learn to develop for, especially if you don’t have any previous knowledge of Zope and Python. I’d say that this is to a large extent because of the poor documentation. The lack of really good beginner’s tutorials and some kind of roadmap that tells you where to start and where to go next has made me send countless messages to the Plone-users mailing list, hammered Google with searches related to Plone, Zope, and Python, and pull my hair in frustration.

Despite the troubles we ran into, there is something that makes me like Plone, and now that I know it reasonably well I may consider it again for similar projects. However, I’m not so sure I’d recommend it to anyone without previous knowledge of Zope and Python. At least not until better documentation is available.

Posted on March 1, 2005 in Content Management

Comments

  1. I was deploying a Plone site and it was getting horrible performance during load testing. I put all the layout images, CSS, JavaScript and Flash behind Apache. This lead to a more 50x speedup on the site, and now I simply use mod_rewrite to map /static to the static content when deploying a Plone site.

  2. Just out of curiosity, what was (is?) the problem with the automatically added base element?

    Thanks for the write up. I have a little Plone experience, but it has been a while and this jogged my memory a bit.

  3. I started building our school’s website in Plone. It’s an awesome system to use and customize - it’s relatively painless to radically alter the appearance and XHTML of an entire site. However, a good amount of Zope and Python knowledge is needed to start writing your own functions and queries.

    Plone runs on Zope, a server platform, so it’s slightly more difficult to find hosting if you don’t run your own server.

    Three issues caused me to move away from Plone: 1) The system is a sledgehammer. It’s not made for puny, simple sites. 2) Plone can be pretty slow to respond on lower end systems. 3) As clearly stated above by Mr. Johansson, even adding simple functions requires a good understanding of Python.

  4. I couldn’t agree with this writeup more. I am a huge fan of python, and have done a few projects in Zope and am currently deploying a couple of fairly meaty plone sites. And the inital learning curve, even though I was a fairly good python progammer, was insane.

    I actually like zope and plone now that I have the hang of them. It is a powerful system, just hard to learn.

    And I don’t mind some degree of extra markup, in particular, an extra div to avoid the other box model hacks. But I agree that tearing down the templates and starting over if you are a serious about your html is a good idea.

    Thanks for the epoz/tidy trick. I will probably be doing that in the future. Just as soon as I find the documentation for it :)

  5. March 2, 2005 by Roger Johansson (Author comment)

    David: The base element is more of an annoyance than a problem. I want complete control of the markup that a CMS spits out. Apparently the only way to get rid of the base element is to dig deep into the guts of Zope and edit a python file somewhere.

  6. March 2, 2005 by Andy Hawkes

    The base element can be easily removed - just delete the (metal:baseslot define-slot=”base”) bit from the “header” file (cutomise from portalskins/plonetemplates)

    I’ve been using Plone for a couple of projects recently, and am getting increasingly used to it - the learning curve can be steep, though, especially when you’re looking for nested dependencies within certain products (don’t get me started!)

  7. March 2, 2005 by Roger Johansson (Author comment)

    Andy: I’ve done that, but it still appears on the rendered page. I asked about this on the Plone-users list and was informed that it can’t be removed.

  8. March 2, 2005 by Andy Hawkes

    That’s really strange - I did some quick testing on my dev machine and it seemed to work fine.

    I might have a more detailed look in to this one, as I seem to be able to override it via the “header” or via the “main_template”.

    Other than that, I fear to venture into the belly of the beast and start mauling python files ;-)

  9. When one is developing a cms, I highly recommend reading this review. Not only was it good for the end users, but it would help myself and my company reflect on future versions of our cms.

    You might additionally want to submit this to http://cmswatch.com/ - just a thought.

    Does Plone need root control of the web server?

    Requiring complete control of the markup might not be a required feature of the cms IF it’s written in XHTML strict/1.1 and use standards of some sort. This is a problem, however, with block and inline elements.

    Thank you so much for continuing with your review Roger; even though I have no intention to use plone, it was refreshing to read about another cms.

    -Ryan

  10. I’ve always seen Plone sites looking like ‘Plone’ sites. I assume that’s simply because most use the default templates.

    It’s good to know that Plone allows you to make your own markup. That’s been the biggest frustration with the CMS tools I’ve used.

    That said, with the steep learning curve, is there a huge benefit to going with Plone vs. just writing your own from scratch? I’m finding writing your own is the better way to go much of the time. Since every site needs to be customized, regardless of the tool, why not build something specific for that site?

    Finally, just FYI, there is a free version of Xstandard. It’s not quite as robust as the commercial version, though. And, yes, my biggest dissapointment is that there isn’t a Mac version either.

  11. Darrel: Many of the Plone sites listed look like Plone because the authors only chose to add a green background, change the logo, etc. It’s often tricky to recognize that a site is built using Plone (http://www.enfoldsystems.com/ and http://www.sra.gov.uk/)

    I’d recommend you take a look at Plone and its extensions before building your own. You can download a Windows/Mac Binary with an installer and have Plone running on your local system within 20 minutes.

  12. I’m curious Roger, were they already running Plone, did they insist on running it or what’s the deal on that front? I would think with that much time invested, and the drawbacks you point out, it might have made more sense to just build a site from scratch. I realize that you have to go with your client’s wishes…

    Although visually not all that much different out of the box than your average Plone site, connexions is one of the more interesting ones I’ve come across. ~d

  13. March 3, 2005 by Roger Johansson (Author comment)

    Andy: If you do find a way to remove the base element, please let me know.

    Ryan: Not sure what you mean by “root control of the web server”. To install it you will need admin access. After that I don’t think so. I’m no sysadmin though ;-)

    Darrel: Building your own system, while sometimes a good option, brings with it a whole set of other considerations. Been there, done that.

    Yeah, there is XStandard Lite, but it doesn’t support Web Services so you can’t use it to upload images or check spelling. We use XStandard Pro in our own CMS (which is not Open Source, and is an IIS/ASP application, so not an option in the project where we used Plone). XStandard is excellent, and a Mac version would rock.

    Douglas: The client wanted an existing open source system. After looking at the options, Plone looked like a very good choice. I had no idea that the learning curve was this steep. Had I realised that, Plone would probably not have been our choice.

  14. March 3, 2005 by Franck

    Roger, I remember a previous article where you were asking for information in order to choose between Plone & Mambo

    Now that you have experimented in your own flesh the learning curve effect of Plone, would you make the same decision again and why ?

    Thanks by advance for your answer

  15. March 3, 2005 by GunnarD

    I’m sysadmin and running the machine with zope/plone that Roger’s and his company has built.

    You can run zope/plone as any user you wan’t if you dont bind zope to port 80.

    There is some stability problem with zope, sometimes it just stopps responding and i can’t se why, nothing in loggfiles!

    I have now uppgrade python and zope (and some other program( to latest version, and i think (hope) that it’s more stable.

    Performance is SLOW so put a cache in from of it (Apache, squid …) and don’t forget to tell zope/plone what to cache, default nothing is cached.

    Zope/Plone is a disappointment both in stability and performance, sorry Roger. :)

  16. March 3, 2005 by Roger Johansson (Author comment)

    Franck: If I had known then what I know now, I would have looked for something that is easier to develop for, has better documentation and better performance.

    Standards compliance and accessibility of the default templates would probably be less important since you pretty much need to rebuild all templates anyway, regardless of which CMS you choose.

    GunnarD: Nice to see you here ;-) Agreed on stability and performance. As you can probably tell I’m not too happy with it either.

  17. March 5, 2005 by Cyrille Bonnet

    Hi all,

    Interesting article! Overall, though, it will probably scare potential clients away from Plone, and it is a pity, because Plone is excellent for certain types of CMS projects.

    I think there are a number of questions to be answered if you want to consider Plone for your CMS project:

    • are you happy with the HTML produced by Plone or do you want to redo it entirely? Tight control of the output HTML is costly in Plone, because one page is assembled from many pieces (as you found out!)

    • can you find people with good Zope/Plone experience for this project? Starting from scratch takes time (if you plan to upskill your internal programmers without a mentor, for instance)

    • what type of CMS projects are you trying to achieve? You pointed out that Plone is by default set up as a portal: this is very true. All “portal” features are easy to turn off (anonymous users can join, draft documents can be viewed by all, etc.) but some “non-portal” features are missing: for instance, in Plone, it is impossible, out of the box, to create a new version of a published document without retracting it. If your site has many documents, many contributors, and you rarely need to create a new version of a published document, Plone is for you! If your project is an Intranet with a small set of documents that change often, Plone might not be the best choice.

    Finally, I wanted to point out two things where my experience has been markedly different from yours:

    • in my humble opinion, Andy Mc Kay’s Definitive Guide to Plone is an excellent book and can be used as a beginner’s guide. It does not cover all advanced stuff (such as total control of the HTML) but it is a really good introduction and it is available online: http://docs.neuroinf.de/PloneBook/

    • in my experience, Plone has never had a performance problem: we recently completed a fairly high traffic site (5GB of content served/month): www.electricitycommission.govt.nz and, with ZEO, Squid and Apache, Plone performs pretty well. Maybe we got lucky ;-)

  18. March 5, 2005 by Roger Johansson (Author comment)

    Cyrille: Scaring people away from Plone is a possibility, though not my intention. I do want other developers to be aware of the learning curve that awaits unless you already know Zope and Python.

    The Definitive Guide to Plone is a good book but IMHO not the first thing a Plone beginner should read unless they have previous experience with Zope and/or Python. I found that after reading up on Zope (The Zope Book) the book made much more sense to me.

    With both ZEO and Squid performance should be fine, so I don’t think you got lucky :-). A standalone Plone will probably be slow unless you have very few visitors.

  19. Many Plone sites most certainly do NOT look the same. For example, some of the Plone sites my company has built include:

    Abstract Edge

    Vera Wang

    LGBT Center of New York

    Streetheory (American Legacy Foundation)

    These are all VERY different.

    I think the biggest reason that many Plone sites do use the basic templates with some CSS-based tweaks is that many of the people who use Plone are very technical, and are not designers. The UI Plone designers have done a pretty good job creating a nice design, so it’s much quicker and simpler for a programmer to just use what’s there. That does not mean it’s all that difficult to make a Plone-based site look however you want.

  20. March 7, 2005 by Roger Johansson (Author comment)

    Scott: Well, yes, those sites do look very different, but isn’t that because they are Flash sites (except the LBGT site)? That kind of removes the HTML and CSS from the equation. Is Plone used to manage the content on those sites?

    I agree with your reasoning on why many Plone sites use the basic templates either as is or slightly modified. And yes, making a Plone site look however you want is quite possible by changing the CSS. Unfortunately that leaves you with the default HTML structure, which is not good enough.

  21. Surely certain Plone functions should (and can) be more user-friendly (actually just adding a new tab to the menu requires passing through that scary ZMI and compiling a form, this sounds crazy…)

    Anyway, it’s not easy to mantain web standards when your ‘clients’ are used to copy and paste directly from Ms Word to Evolt because this saves time (pretending that images can be pasted too)

    I think that Plone should provide more high level tools to divert the users from that Zope messy interface (that’s not coded for humans :-)

  22. Plone is an excuse to drink beer with crazy people in Vienna.

  23. I really like plone because it is very easy to add logic. The template language is very good - you can only add very little logic to the templates and this will keep your application logic appart from the templates. I think that is a great bonus.

    trashpicts is another example of a website that does not use the portal layout allthough it is a community portal.

  24. Very interesting article.
    I saw Plone a week ago, after completing my web-site with Mambo in the past 2 months. As Python is more “nicely structured” than PHP to say the least, and ground-up object-oriented, I started to think that I overlooked something before heading into mambo after having a look at PostNuke but not Plone. Now I’m reinsured about my initial choice for Mambo.
    I’m happy to share a few experiences of Mambo rebuilding my website www.lightning.ch here (Hope you don’t think it’s off-topic, since you had the same thoughts initially):
    I have also rewritten my own templates and CSS from ground-up since I wanted the not only the content, but also the page structure to be completely separated from the formating and to have the site loading very very fast and be very secure, since our products are about speed and security. I ended contributing quite some code to make Mambo’s output XHTML compliant, and those contributions got warmly accepted. Most of my web-site’s pages now validate, except for some old content ported before I started using WysiwygPro as a great XHTML-“auto-sanitizing” editor.
    My learning curve (I was PHP beginner and CMS newbee) was very smooth, rewarding (you see results of your incremental PHP work quickly) and passionating, and now I think that I have a quite good understanding of how Mambo and main third-party components and modules works, thanks to the big help of the very nice editor/debugger Zend Studio Pro which allowed me to get familiar very quickly with the PHP code and the Mambo structure as needed by the specific part I worked onto. I have read that easy install and implentation, as well as the modularity are Mambo’s strenghts, but after I read your review I’m really understanding why. Documentation was poor a few months back when I started, but it’s now getting better very quickly.
    That’s it for my 5 cents’.
    I do not want to start a polemic on which is better, just wanted to share my experience. But I agree, you’re certainly right: Plone is probably better for very large sites with tech-savy dedicated people around, while Mambo is maybe easier to set-up and use for smaller and mid-sized sites without dedicated time for them.

  25. Hi Roger,

    Thanks for this extremely good overview of the current state of Plone.

    I stumbled over your article about a week ago, and I’m currently on a plane on my way home from the Plone UI workshop in Amsterdam, so I guess this is a good time to address some of your questions and issues.

    The feedback you give is extremely valuable to us, especially since you’re new to Plone and are capable of providing insights that the people in the center of the development are unable to see.

    • Quality of the default templates

    It is a bit harder than it should be to customize the existing CSS and XHTML templates. We are working on making this easier, the CSSRegistry in Plone 2.1 makes it easier to turn on/off selected parts of the CSS, and we are looking to improve the approach to the main template. The quality of the HTML is also slightly improved, although I’m not sure I agree with you on “unnecessary class usage”.

    A lot of the empty div/span tags are removed in Plone 2.1, they were an artifact of sloppy coding in some places (as you know, ZPT and TAL attach the template logic to tags, and sometimes people use tags where it isn’t needed).

    • The base tag

    This is an interesting one, and one that I was annoyed/confused by myself when I started using Zope long time ago. It has to do with the way scripts and objects work. Let’s say you have submit name deleteObject:method - there’s a big difference between ‘folder/document’ and ‘folder/document/’ when it comes to which object is deleted.

    For the full lowdown, consult this explanation on the base tag in Zope.

    • Access keys and tabindex

    In general, access keys are a nice theory, but don’t work as well in practice, and we are removing most of them in Plone 2.1, keeping only the big sections like alt-0 for home, alt-1 for news etc. The same applies to the tabindex use - we’re removing most of it and only keeping the most useful ones.

    • WYSIWYG editing

    XStandard is not an option, as you observed:

    It’s not open source. We take this very seriously, Plone should be a totally open solution out-of-the-box. That being said, we are also serious about interoperability with commercial and closed-source solutions - we just don’t want it to be part of the Plone core. Gratis doesn’t cut it (for those talking about the “free” version), as we need the ability to make changes and fix bugs.

    It Uses ActiveX. As you pointed out, Plone has excellent cross-platform and cross-browser compatibility, and we intend to keep it that way. :)

    Kupu will ship with Plone 2.1 out-of-the-box, and it delivers almost flawless XHTML support. You will like it. ;)

    • URLs

    The URLs are autogenerated from title in Plone 2.1, see Autogenerated Short Names in Plone 2.1.

    RedirectionTool will do what you are asking for with regards to having a short URL to a document that is nested deep inside the site. It can be downloaded from the plone.org download area.

    • Learning Curve

    There are three books available (you would probably enjoy JC Cameron’s book, it goes into more depth and has more code examples and Archetypes).

    Documentation is steadily improving, but with a technology as underdocumented as Zope, it will take a while before we have all the bases covered. That being said, I think the mailing lists are friendlier and more responsive than most, and the people there are doing a magnificent job answering questions.

    • Conclusion

    It is hard to be a Plone newbie - mostly because Plone is not a simple weblog system, web publishing tool or any one thing - it’s a comprehensive content management solution designed for the upper part of the content management requirements curve - and carries complexity with it.

    I hope nobody has told you to RTFM on the list when there was no FM to read - we are very aware of the documentation shortcomings, and we try to be extra friendly because of this, both on IRC and the mailing lists - but there are always people that are a bit tired of newbies that don’t do any investigation or searching before they ask questions. Fortunately, they are in the minority.

    Interestingly, I was working on an FAQ entry called “Is Plone the right tool for what I’m trying to do?” when I stumbled across your article.

    First draft is available here, comments welcome: Is Plone the right tool for the job?

    As for lack of a roadmap of what documentation to read - there has been the “How to read documentation” entry in our documentation area for quite a while. It is linked from the front page of the documentation section now, but might not have been when you wrote your article.

    It’s here, for the interested: How to read Plone documentation.

    I would be very interested in working with you while you still have the fresh perspective of the Plone learning process, and put up some tangible goals for the documentation team to work on. If you have the time for this (I know, nobody has time for documentation, but that is exactly the reason it is in its current state) feel free to contact me or the Plone Documentation list.

    Remember, we have inherited a lot of architecture we didn’t write that is under-documented - but it has also allowed us to build one of the world’s leading open source content management systems in the space of just a few years - so we’ve got to take the bitter pill with the sweetness. Minimizing this pain is a priority, though - and if you want to help out, I will leverage the community power I hold to helping you and the documentation team.

    Finally, thanks for the praise regarding platform compatibility, cross-browser support, ease of installation, accessibility, XHTML/CSS compliance. Nice to see that you like Plone even after an initial rough ride.

    Alexander Limi
    User Interface Designer
    Co-Founder of Plone

    Other questions raised in this thread:

    Ryan Brooks: “Does Plone require root control of the web server?”

    No. It runs as an unprivileged user, and requires no administrative privileges to install or set up. This makes it extra secure. If you want it to answer on port 80 (the standard www port), you will need to add this in Apache or whatever web server you are using, which may require root access - depending on setup.

    GunnarD: Stability/performance

    If you post your setup specifications (OS, installed products, Python/Zope/Plone versions) to the list, we can help you figure out what is wrong. Plone is extremely stable for us, but there are various platform issues that can be quite mystifying if you don’t know about them, like the stack size issue for Python on *BSD, for example.

  26. April 4, 2005 by Sean DALY

    I’d just like to chime in from an end-user standpoint. I work in a big company and I run (as a one-man show) a multimedia database with thousands of videos and scans. My existing platform, custom development in ASP over MS SQL Server with IIS, was no longer maintained by my company’s subcontractor. I had a very limited budget and was asked to migrate to MS SharePoint Portal Server, which would have multiplied my yearly technical budget by a factor of 2 to 4, while losing some functionality of the previous custom development, and with limited multilanguage support - unacceptable. As an alternative, I chose Plone, integrated by Ingeniweb in Paris. One month in production and 2000+ records later, I am simply amazed every day that such a low-cost, quick solution could be so robust, flexible, and reliable - I have over a thousand users logging in and searching metadata and the only change necessary on my existing server was more RAM and setting up IIS as the proxy. The production IT people here are happy; they spent less than 1 man-day overseeing the installation on the Windows server they administrate. I myself didn’t need to learn one line of code; I briefed the integrator and over 15 man-days they came back with new release candidates until we had our V1; nearly all of what my site needed came “out-of-the-box” with Plone. The look and feel of the previous site was perfectly duplicated, making the change transparent for my users; my site looks more like a multimedia Google than “a Plone site”…

    So - although I can write a decent awk program and I hope to code some Python someday - I couldn’t be bothered to develop anything myself… I just want to say that this is the open source model at its best: the client briefing the integrator who assembles and tests the components and does the necessary development. Two other divisions of my company have started their Plone projects and two others are looking at it… I can only recommend it as an outstanding price/performance solution

  27. April 4, 2005 by Roger Johansson (Author comment)

    Hi Alexander, and thanks for taking the time to write such a long comment. It’s great to learn that several of the issues I mentioned are being addressed in Plone 2.1. That certainly does not make it a less interesting CMS.

    Thanks also for the links to FAQs and documentation - they all look like good reads. I don’t recall seeing the article on how to read Plone documentation before, and it looks helpful.

    About FAQs and RTFM; I may have overstated that bit slightly, but there were the occasional responses that bordered on unfriendly and made me think twice about asking for more help. And trust me, I spent lots of time looking for answers before pestering the people on the Plone-users list ;-)

    Let me think about your invitation to help out with documentation. I’m pretty busy right now, and I don’t want to add too much to my already long to-do-list.

    Regarding GunnarD’s comment about stability: that seems to be an issue with Python having threading problems on multiple-cpu machines. He’s since configured the server to (IIRC) only let Python use one CPU, and that seems to have stabilised things.

    Again, thanks for leaving a comment, and for not taking my criticism the wrong way.

  28. April 19, 2005 by James

    I have used Plone extensively on several projects, and I would never touch it again.

    The poor docs alone is enough, but the user community can be downright hostile to folks just getting started.

    Plus, finding a good Python programmer to help mantain the system is expensive! They’re few and far between.

    We moved most of our projects over to eZ Publish (ez.no), and that has been a much better system for the most part.

  29. Wow! Where was this review when I could have used it?

    A year ago, I was talked into going with Plone for our school’s website. This review was spot on.

    In the end I produced this - www.forestry.uga.edu - but with a lot of blood and sweat.

  30. What about FCKEditor?

  31. May 21, 2005 by Michael

    What a great article. It correlates entirely to my experience although you were MUCH too kind in regard to Andy McKay’s truly awful book. (I’m allowed to say that, it cost me 30+ bucks).

    I appreciate Alexander Limi’s really gracious response to your complaints. I don’t know though. Plone strikes me as a bloated resource pig. All that looking through the file system just to render an image, for instance. Every site I’ve ever seen that uses Plone has this constipated feel when it first loads. When you get to know it better it all becomes clear. It sorely needs an easy to use mechanism for baking the site once and pushing it up to a web server as static or mostly static. The resources that Plone requires are too expensive for a lot of folks who have small and medium sites on shared plans.

    just my two cents.

    Anyhow — I’m curious. Now that the writer is not so sure he’d recommend Plone, is there anything he would recommend for those of us who have the same requirements as he?

    Also, if English isn’t your or Alexander’s first language, my hat’s off to you both. Your lucidity exceeds most native speakers.

  32. May 22, 2005 by Roger Johansson (Author comment)

    Tinus: I haven’t tried FCKEditor, and I don’t know how easy it would be to use with Plone.

    Michael: I don’t currently have anything else to recommend. I haven’t had the time to take a closer look at other open source CMSs.

    English is my second language, and I believe that goes for Alexander as well, so thanks!

  33. Regarding comment #31 by Michael, I’d have to agree. Because of the complex/powerful things Plone/Zope wants to do for every operation, it responds poorly without lots of configuration.

    Fortunately, there is a tool (in beta) that we’re evaluating for a client which does export the dynamic Plone pages as static pages to be served up directly by Apache or IIS.

    This allows Zope/Plone to only burn cycles when content editors are making changes to content, and during this export or other, perhaps scheduled, tasks.

    This (free and open source) static publishing add-on product for Plone is named CMFDeployment.

    More information and the download is available here: http://projects.objectrealms.net/projects/cmfdeployment

    I know it has numerous implementations already and that the primary developer, Kapil, will be presenting it at July’s Plone Symposium in New Orleans.

    I know the Plone team doesn’t want to bloat the core with more products, but I believe this is one that should eventually be packaged with the Plone core.

    I’ve used a similar feature with OpenCms (a Java-based open source CMS) and really miss having it.

    Cheers!

  34. June 4, 2005 by Roger Johansson (Author comment)

    Ken: CMFDeployment seems like a very interesting add-on. I’ll keep it in mind for any future Plone projects.

  35. Great review and interesting comments. Am about ready to launch our several government sites which we have been converting from an .asp style to Plone. I have several observations: I have used Mambo, phpwebsite, and XOOPs on many sites. They are fast, easy, and work great… to a point. If I am building a quickie site for a church or something like that, even a small online business, phpwebsite or Mambo are easy and work fine. I have a Mambo site that has run 100% for 3 years with little admin work required; HOWEVER, Plone is hands-down the best IF you need a site (Intranet or Internet) for a larger organization, that has staff and teams or departments, and you need very fine control over permissions, group rights, etc. I very easily connected our Plone site’s user login system to our LDAP (active directory) system on our network, allowing us to reuse all the groups, userids, and passwords, so staff can login and edit PARTS of the sites with their normal userid/password. Plone lets you manage thousands of images, PDFs, and other documents… very clean. Works with webdav using a free program called netdrive to map any plone site as a drive letter in windows. Makes it easy to then just copy and paste files from a network or local drive (we have 2 terabytes + of “normal” network drive space full of potential content for plone :-) Took 5 minutes to figure that part out. REALLY speeds up population of any site, dropping staff resistance to change! Tip - make sure ALL of your first few levels of plone folders use easy to understand shortnames!!!! Otherwise, all you see in windows explorer (using webdav to map a siet to say the “z” drive) is a bunch of computer generated shortnames. If you name them logically, it is easy for others to use them. STABILITY - The whole plone/zope thing is extremely stable. I have never (and I mean never) had anything lock up on me or crash, even as I made a million mistakes. Love the undo feature!!!!!!!!! Saved me a zillion times from really dumb things, like when I deleted the entire users folder setup. Also, being able to copy one single file (data.fs) to transfer everything in/on/about your site fromone machine to another or to a backup is great. I developed almost all my “skin” customizations using a windows (very quick) install of plone on my desktop PC. When I got my look, copied the data.fs to the linux server we setup for this project. Easy. I still switch back to my desktop when testing new ideas, etc. Another tip: if you are developing multiple sites, as i was, on a single instance (so therefore all in a single data.fs), use the export ability to write out just a single “site” or part of a site to transfer just that part from a development plone machine to production. The only thing you have to do is mack sure the products/versions are the same on all your test plone PCs and the server. Make sense. Also, super cool how you can be in the ZMI admin interface and easily copy and paste whole folder trees from one site to another. I am a big cut and paste guy. On plone.org, use the “how-tos”. They are pretty good. Also, there are now 4 plone books - get and read them all if you are building complex sites. They all have different focus, so it helps to have them all. The plone .css system is really powerfull. Do 99% of everything in terms of visual layout changes to site in a single .css file. It REALLY works. You basically override just about any setting, can make tabs use graphical images, with rollovers, etc. Very powerful, but of course, this takes more thought and testing than just a quick site built in Mambo. In summary, plone has power to make simple and complex sites. Simple sites quickly out of the box, just like Mambo or phpwebsite, but it also gives you options none of the others can touch. And much development of plone/zope is going on - very active -to me a good sign for any CMS. Look at the number and type of sites using plone (on plone.org’s list). It is impressive. All of these open source CMS communities have their place… I just have had fun with plone on soem bigger projects. Good luck everyone!

  36. I have been searching for alternative to my present situation running my web site, Whiplash Info, described below, and found this excellent thread.

    I run what’s a couple of years ago was a site helping me master and control my every hour existing pain after a car crash. Lacking all knowledge of programming and different code I used MS Frontpage as tool and editor. I run the site without profit and all free for all visitors, and so far has financed it all by my self and since a year ago with contributes from ads. I use a web host provider.

    Since early beginning I have used MS Office for all my “office” jobs, and the step wasn’t far going to use FP as editor and site building. But – the site has grown far beyond the capacity of me using FP and it’s built in options.

    As a result of the car crash I have developed some cognitive problems, and spelling, building correct sentences is some of them, thus the capacity of the MS Office 2003 Pro suite concerning language functions is nearly essential for me. Since I haven’t yet found any CMS/DMS using anything near MS Word’s capacity of language support for spelling and grammar support, using other WYSIWG-editors will be something like start all over again for me and other persons with so called minor brain injuries.

    At present the site consist of more then 4000 pages, 30000 hyperlinks and thousands of images. The site has about 40000 visitors and many of them need help in matters concerning injuries and related health care, insurance matters, law mattes and so on, but all my availably time I today handle problems with the site. As time went by my visitors asked for more services such as help-forum, chat and so on. For this purpose I implemented external software’s. Today the site uses about 10 different data bases, none of them is - or can be normalized. As a result – it has been a one-man-show site, and with no possibilities to delegate any access rights to any other.

    Now a days the visitors not only represent injured and their relatives searching info and help, governments, health care business, insurance companies and media also frequently visit the site.

    Other persons are interested in writing and publishing at the site, but as today I can’t delegate any editorial or other rights (not sure this is the correct word) so I have to do all editorial work my self.

    I have been looking around for something like CMS/DMS and/or community possibility for some time now, and really am confused. I have learned some ASP, and data base basics, but have given up the prospect of learning enough to built something for start, and why invent the wheel once again, founding the open source projects and so much knowledge and capacity at the web.

    I have had a glanced look at Typo3, Mambo, Drupal and so on, but are very confused. I begin to realize I haven’t got enough knowledge and know how, and could need some advice.

    I publish news in fields concerning injuries and illness such as studies, thesis in all fields concerning illness, injuries and so on, so the document handling is quite essential but as today a sad chapter. The structure of today is a result of me publishing without any thoughts about the site growing so much.

    I also have ideas about the future develop surrounding Whiplash Info and injured and sever ill person’s needs and support. My dream is becoming a millionaire so I could buy a complete solution.

    Could someone, please give me some tip, hints and advice?

    Tomas Alsbro, Whiplash Info

  37. Roger Johansson: Many Plone sites most certainly do NOT look the same. Here is more then 20 sites with different Plone designs . ANY design can be put in Plone. You can check it for sure.

    Cyrille Bonnet: it is impossible, out of the box, to create a new version of a published document without retracting it. If your site has many documents, many contributors, and you rarely need to create a new version of a published document, Plone is for you! If your project is an Intranet with a small set of documents that change often, Plone might not be the best choice. I don’t agree. It’s just a question of Workflow. I have an optional Re-Publish feature implemented for 10 minutes by Plone developer for Zope and Plone products Every published document can be Re-published without retracting.

    Tomas Alsbro: Search “Plone development” in Google and post your message to developers.

  38. September 7, 2005 by Roger Johansson (Author comment)

    Ihor: Yes, I’m well aware that you can make a Plone site look any way you want. I think the site we built for The Faculty of Arts at Göteborg University is proof of that.

  39. I’ll follow-on to the thread once again. For ‘editions’ of content (not having to retract), see the CMFEditions product (http://plone.org/products/cmfeditions)

    For even more mind-blowing examples of non-Plone-looking sites, see these completely Flash-based sites on the front end that are managed by Plone on the backend:

    (http://www.verawang.com/)

    (http://www.wolford.com/) (fyi - click your language preference after the into.)

  40. Cyrille Bonnet: it is impossible, out of the box, to create a new version of a published document without retracting it. If your site has many documents, many contributors, and you rarely need to create a new version of a published document, Plone is for you! If your project is an Intranet with a small set of documents that change often, Plone might not be the best choice.

    There is also an product that you can add in Plone called PVS (Portal content Versioning System). We use this for our site (http://www.oid.ucla.edu) and it tackles the problem you have mentioned by creating versions of changes made to a published document. Once changes have been made, depending on how your workflow is setup, you can switch versions from the version history.

    Here is the link to the company the created it with a full description of the product:
    http://www.emergence.com/WhatWeOffer/products/PVS

    An updated version can be downloaded here: http://www.zope.org/Members/emergence/PVSForPlone2

  41. First, this is indeed a very good and worthwhile article, and I wanted to add a couple things. I work with Mike (above) at UCLA.

    Agreed: the learning curve is steep, but not so steep you can’t do it. Yes, it takes awhile to get your mind around some concepts, but once you do, then everything becomes much clearer. And, as some people have said, this might not be the best web application environment for your needs.

    Yes, there is a lot of crazy documentation out there, but if you keep to the recommended versions of the software componnents, then focus your reading on those versions, things are easier.

    I respectfully disagree with those saying the community is hostile. Not only have people been generous with their time and responses, I searched over a year’s worth of Plone digests for nasty uses of RTFM. I found two. Only 2 in over a year of discussion, and in one of those the guy apologized and said he used RTFM as an innocent shorthand for “see the docs for more.” Additionally, Andy McKay’s book is available for free download, so don’t complain about spending $30.00. (http://plone.org/documentation/manual/definitive-guide) But even if you download it, you should still buy the book (we bought two copies) because he deserves the support.

    Stability: we have never had a crash or downtime in the whole time we have used Plone on four different servers, on Red Hat Ent. Linux 3, Red Hat Ent. Linux 4, and Mac OS X. Plone has been swift and stable for us, even when we hammered it during out development and learning stages.

    Finally, one aspect that no one has mentioned here: our Plone users love it! We have about 20 content editors, none who would know HTML from Python from CSS. All have praised the ability to edit and control their own content, have found the Epoze editor adequate for their everyday needs, and have given us very little support questions. From that perspective alone our entire organization has found Plone an exceedingly good product and our success has generated quite a bit of interest here at UCLA.

  42. We’ve happily used plone for 18 months for a small-scale community web site, so I was pretty surprised at all the (relatively) harsh criticisms of plone in this excellent thread. Thinking about them, it seemed to me that maybe they came from people who have strong web design and/or web construction background, for whom a lot of the plone ‘overhead’ got in the way of their own expertise and design goals.

    For our community site, being able to install it out of the box, run it with very few problems, and get all the free capabilities and very acceptable look&feel (with no additional programming required) was like a gift from above.

    We occasionally run into an off-center idea we want to implement that would require digging into TAL/python — most times we let it go, but once or twice I’ve dug in (not knowing any python before I started) and learned something and made it work.

    In general I’ve observed that plone has a lot of sophistication, and sometimes the concepts are not well expressed (or less often, not expressed at all) in the docs, but you don’t have to learn about all of it before you start using it — learn as you go has worked very well for our team.

    To sum up, I find plone exceptionally well suited for a software professional to run a sophisticated content management-oriented and community-oriented site, with the lowest possible effort. And it keeps improving (smart folders rock). We’ll stick with it.

  43. March 20, 2006 by tomk

    100% agree!

  44. Short observations:

    • Please understand that some of the core developers are solving problems that may be different from your needs. A lot of the websites on http://plone.org/about/sites are quite sophisticated and have teams of content editors working day in and day out. Features such as: Security, Workflow, Creating/Repurposing Content Types, Rich Web UI are mandatory for such systems.

    • Plone is built for out-of-the-box user experience. This is at odds with “fast efficient” performance. There are a lot of knobs for nontechnical users to twiddle to affect the system in dramatic ways.

    • Plone’s community is, on the whole, exceedingly helpful. On #plone where over 150 people are on a daily basis asking/answering questions — I’ve never seen anyone kicked from the channel or yelled at. The mailing lists are a great source of infomation as well and the same laid back helpful community seem to have a solid presence.

    • Plone is a CMS. Its becoming more focused on Content Authoring/Production. The idea is to make it the best CMS (commercial or opensource) with regards to user experience. Gocept has just released a end-user book thats ~80 pages for 100% end user. This again reiterates that there is a huge market of end users using Plone as a strict CMS.

    • Plone has a healthy aftermarket for consulting (just search for Plone on google and look at the adwords) and software. At Enfold Systems we sell Windows integrations for Plone: We have a Microsoft IIS (webserver) integration, server integration and a desktop shell component. I dont know of any open source CMS that has a native windows desktop integration. Currently the software is free for non-commercial usage!

    • Plone is, as far as I know, the only CMS that has two ways of deploying content to platform and language neutral environments! CMFDeployment and Entransit both are production quality content deployment systems that allow teams to pick how they want to deliver content. Entransit even has a PHP, .NET, Java, and Python example frontends; using XML on the filesytem and RDBMS for meta data. Entransit is compared to Documentum and Interwoven in its feature set for content delivery.

    • Plone has over 4 books (there are over 10 if you count translations and book in languages other than english) with a end user book just published. Zope has books written on it. And Python has many many books. There is also over 50 translations of the Plone user interface! There are typically 2 conferences per year focused on Plone (not including Python conferences) there are Symposiums and Conferences. This means that most audiences are covered: developers, integrators and end users all have most of their needs covered.

    Lastly, please understand that Plone is feature rich and are known for not “scaling down” to personal websites. The main reason for this lack of simplicity is that most of the developers of Plone get paid to build very complex systems. They extend Plone to make their job (writing complex software) easier. After all this is a Open Source project. In fact its rare that such a large domain specific project does not have a company backing the development of it.

    Most of the above critical comments revolve a round misconfiguration, apply Plone to domains where it did not fit, or people expected to customize the system w/o knowing Python. Please compare apples to apples. If your extending Typo3 - you will have to know PHP, if your extending Vignette - you will have to know Java. If your extending Plone - you will have to know Python.

    I suggest looking more at Entransit, it is a open source project and for people who want “fast and nible” frontends — I believe Entransit is the solution for you.
    http://www.povertylaw.org/ uses Entransit + Python + Postgresql + Xapian + DemocracyInAction REST api for Login/Subscription/Donation.

    -Alan Runyan

Comments are disabled for this post (read why), but if you have spotted an error or have additional info that you think should be in this post, feel free to contact me.