Evaluation of Plone

This is an evaluation of Plone against GnomeWeb/CmsRequirements . Please add your feedback here.


Only testers going through the whole GnomeWeb/CmsRequirements/CmsTest can add their points. You can add your comments on the evaluations made.

Ranks: 0 Not supported - 1 Partially possible - 2 Possible but complex - 3 Possible and easy










Publish static pages

3, after I found the link


Ramon: You can decide which day this page should be published and which day removed

Publish news

1 - news was posted in the wrong place


We have SmartFolder to collect all News in the site, so News could be stored in anywhere (i.e user's folder), and We also have chance to custom this: store(move) News into a static dicrectory (i.e /newsitem/) when it be publised. keep in mind that zope/plone has a filesytem-like storage structure, we should define some rule for adding new content (i.e Please add News item in the /newsitem folder). YangHong

Define friendly URL of a page, including subdirectories



Ramon: You can decide to create alias, use uid numbers or decide all uri names You needed to enable "Allow editing of Short Names"(default is disabled) in preferences->Personal preferences, or URL will generated automaticly accord to the content Title. YangHong

Publish images in a page



Ramon: You can use Image object to publish an Image and put in on all the pages using FCKEditor or kupu ( REST and HTML ). You can also use PloneArticle that is a product to create templates using images and attached files to generate the page.

Publish attached files in a page


Ramon : see above

Publish podcasts / screencasts


Ramon: You need to enable flash on plone to publish screencasts on flash and you can use ATAudio, Podcasting, FlashVideo products to enable multimedia

Integrate aggregated feeds in a page


Ramon: with ploneSin

Pre-publish a page making it available only to users with editing permissions


Ramon: Using workflows you can create all this kind of situations. On basic plone instalation you have private state, visible but not public and public. You can decide that visible but not public, that is using for editing, is non-visible.

Customization of forms for different content types (i.e. case studies)


Ramon: You can create custom all templates. By default you have the basic form that can be modified. You can also create forms using PloneFormMailer to create a form that is mailed

Set feeds for new content


Ramon: All objects on plone have the option of disscussion allow for members. It's also possible to enable anonymous.

Track and diff of all changes made


Ramon: When an object is published you can see the history and the changes

Notify that a page has been updated

Revert changes


Ramon: there is the history of the object/content

Display when a page was last updated


Ramon : By default

Create localizations in the GNOME supported languages


Ramon : Using linguaplone you can decide to which languages you want your content. There is an utility to see two languages at the same time to translating.

Get language settings from browser


Ramon : By default

Edit interface strings in all languages


Ramon : PloneTranslations

Content as PO files or at least XML import/export

Set links between different versions of the same page

Control version system to detect outdated pages


Ramon: You can create an inteligent folder with all outdated pages

Visualization of status of translations

Create and edit menus and submenus

Assign pages to menu entires

Stablish relations between pages


Ramon: you can say that one page is related to another

Create an automatic sitemap


Ramon: by default

Assign keywords to pages


Ramon: by default

Customize homepage to make it look like the mockups

Customize theme to make it look like the mockups

Set different templates for different sections

Search performance (probably to be tested in a big website)


Ramon: search engine is really powerfull and fast. It's also with some ajax to get livesearch

Search results per type of content


Ramon: you can create inteligent folders or do an advanced search based on types, contents, how old, text, author, workflow state or keywords

Index content in the server not produced by the CMS

Create new accounts and assign permissions


Ramon: you can use LDAP or not and you decide creatings groups and assigning roles to diferent groups

Set permissions policies

Set permissions at a page/section level

Check documentation for help

Activate caching system


Ramon: with cache-fu it's really easy to tunning cache system, based on autentication, http-headers. Actually works with squid.

Check statistics

Backup database

Upgrade new version


Ramon: each version of plone and products have a system to migrate content

Additional comments:

  • Explain here anything relevant not covered by the table above.

CMS Platform

  • Version: Plone2.5
  • Platform: Python2.4.3
  • Backends:
    • ZODB
    • SQL Database (users, groups and content)
    • LDAP (users and groups)
  • Architecture:
    • Zope-2.9.4 application server that has some protocol implementation
      • HTTP (HTTPS with apache)
      • FTP
      • WEBDAV
      • ICP
      • XML-RPC
    • Good integration with Apache and Squid
    • Native caching system - CacheFU


  • (!) robust against attack attempts (!) some features protected by authentication (!) option to communicate over a secure channel (SSL) (!) upstream is active releasing security updates

Plone, and the Zope application server on which it is based, has an outstanding security record. Plone/Zope is sandboxed from the filesystem, so even if the CMS security were somehow compromised, your server/network would not be at risk. The Plone Community does not know of a documented successful attack against a Plone/Zope server.

Zope has 15 entries in the CVE dictionary, and 3 entries since January 1, 2005. Plone has 1 CVE entry ever. PHP has 1258 total entries, and Drupal has 22, all found in 2005 & 2006. Python has 17 entries so far (3 since 2005). See for yourself at http://cve.mitre.org/cve.

Plone and Zope have a strong track record of responding very quickly to security issues that are discovered, and these are announced and released at http://plone.org/products/plone and/or http://www.zope.org/Products/Zope/hotfixes.

More general background on Plone site security can be found at: http://www.jazkarta.com/technology/plone/tutorials/security

Sections of a Plone site can be run through an SSL connection.

This is documented at: http://plone.org/documentation/how-to/apache-ssl

Plone has a robust, highly granular role-based security framework that can support both simple and complex rules for limiting access to site features.

There is an outstanding tutorial on this by Martin Aspeli, one of Plone's core developers, at: http://plone.org/documentation/tutorial/understanding-permissions


Simple URLs


Plone automatically generates friendly URLs -- no mod_rewrite needed.


  • (!) ways to translate standard CMS strings

The whole UI is translated via po files. For the content it is managed inside the DB, but there is support for XLIFF export. The list of currently available translations is here: http://plone.org/development/teams/i18n/existing-translations

  • (!) ways to translate content

There is also a module called LinguaPlone. MarcAndreLureau LinguaPlone is a tool to manage and maintain multilingual content that integrates seamlessly with Plone.

  • How far is Plone from using/importing/exporting PO files for publishing content in several languages?

LinguaPlone imports and exports using theXLIFFstandard. Not sure about its support for PO files, but I believe that PO can be transformed into XLIFF and vice-versa. JonStahl .

  • (!) * preferably show translators what changed and what needs updating

  • (!) * This is a must for me. Translation is impossible without it, and out-of-date translations are worse than no translations. For others, translation via .po files might be a must. MurrayCumming

LinguaPlone uses the notion of Canonical versions, so you can do things with workflow, like invalidate all translations of a document when the master copy has changed.

  • How far is Plone from having a revision control system showing to translators what changed in the original English pages and what needs updating in the translations?

Plone has a very solid revision control system, CMFEditions, that works well with LinguaPlone. I'm not certain what kind of summary views across the site it can offer, but I would imagine these wouldn't be too hard to code. . (!) preferably get language settings from browser (Accept-Language) and session (cookies) Done by default Plone

  • (!) have URLs to translated pages, so they can be directly referenced

Oxfam uses Plone and provides referencable links to show articles in a certain language.


  • (!) a comfortable framework for editing content (!) * can be wiki style, but does not have to

Plone ships with Kupu, a strong graphical HTML editor. It also supports several other graphical editors including FCKEditor. Users can also choose to use ReStructuredText (REST), Plain Text or raw HTML if they choose.

  • (!) "draft" content, which is already managed in the system, but not yet published (!) * translators can do their job before content appears to the public

Plone has a robust, easy-to-customize workflow engine that can allow content go through almost any drafting and approval process that Gnome.org requires. The workflow system is extensively documented. One good starting point is at:

You can specify dates to publish and retract the content for every object

  • (!) track who has rights to edit a page

Plone uses a role based permission system. You create users and groupes. Roles can be asigned to both globaly (Plone configuration) or for single objects/trees ("sharing"-tab for the object). Plone can get user from other sources (DB, LDAP)

  • (!) track who did edit a page (!) * I think we should default to anyone being able to edit a page. Logging in is already an obstacle. MurrayCumming. (!) track exactly what was changed. For instance, like a diff.

This can be achieved using CMFEditions.

  • (!) can display when a page was last updated


  • (!) perhaps change management, so older version of a page can be recalled

    • This can be achieved using CMFEditions

Plone supports content versioning via the CMFEditions add-on product -- http://plone.org/products/cmfeditions. Content can be rolled back to previous states, and diffed.

  • (!) copyright and licensing information can be displayed on the pages

There product PloneCreativeCommons does this for cc licenses.


  • (!) the served html should be accessible (!) * with a wide range of browsers (desktop and mobile)

Plone comes with a stylesheet for mobile devices.

  • (!) * for people with disabilities

Plone is highly accessible and complies with US Gov't Section 508 and W3C accessibility standards. Plone's markup is valid XHTML and CSS. More information on Plone's accessiblity features is at: http://plone.org/accessibility-info

  • (!) the markup should primarily capture content structure not representation (!) * (i.e. "heading" versus "big bold font")

STX, REST and other wiki-like languages produce only structure. Kupu, the wysiwyg-html-editor, focus on keeping a consistent look of the website. It provides only structural elements ootb. You can add tag/css-class combinations to kupus format-menu (like "p discreete" -> <p class="discreete">). It can filter any tag/attribute combination you want. There's a "transformation" that can filter potentialy bad tags (js, object,...). You can write custom transformations easily and put them into a transformation-chain.

  • (!) support hierarchical URLs (subdirs) (!) support hierarchical navigation (submenus)

Plone has hierarchical URLs and navigation elements, and a built-in breadcrumb navigation element.

  • (!) preferably have a site map

Plone has a built-in site map.


Plone has "simple" feed aggregation available via the CMFSin add-on Product (http://plone.org/products/cmfsin). The PloneRSS add-on product (http://plone.org/products/plonerss) provides even more power, transforming aggregated content in to first-class Plone content objects that can be workflowed, edited, etc.


Plone is highly themeable, and strongly separates logic from presentation. There are several useful products and tutorials that help make theme creation easy.

One good starting point, from Plone co-founder Alexander Limi, is at: http://plone.org/documentation/tutorial/creating-plone-themes

Note: Alexander was recently hired by Google's user experience team!


  • (!) There should be enough expertise in our community to: (!) * select (know the CMS enough to assert it meets our reqs) (!) * install (the whole stack, includng RDBMS) (!) * manage (keep updated and secure, without breaking it) (!) * fix (add missing features or critical updates not yet released by upstream)

I believe there are a number of Plone users in GNOME community who can 'select', 'install', 'manage' and 'fix' things. Should we start a volunteer count here? BaijuMuthukadan, RudaPorto, YangHong

  • Integrated full text search with ranking support
  • All content are indexed
  • Fine control of what fields should be indexed
  • Smart folders to easy creation of complex content search
  • Support keywords as standart metadata
  • Clean XHTML templates to best Google index
  • Easy control of what show in the Site Map
  • An add-on to the google sitemap system: http://plone.org/products/qplonegooglesitemaps


  • reposo.py script comes with Zope to easy backup/restore ZODB, on-line, full or incremental
  • can do clustering and distribute the zope aplication server load with ZEO (one DB backend (ZEO) with some Zope front ends)

Issues - Comments

GnomeWeb/CmsRequirements/PloneEval (last edited 2008-02-03 14:46:59 by localhost)