An Introduction to Plone
Saturday, October 23rd, 2004In today’s information society, organizations across the globe are using the Web to share valuable content with a worldwide audience. A common problem facing large-scale Web portals is effectively and efficiently managing their content. Developing a scalable content management solution is not trivial and can often cost organizations large amounts of time and money. However, several cost-effective open source content management systems (CMS) such as Plone, Typo, and Bricolage, developed over the past few years, are now ready for prime time.
What is Content Management
A content management system enables a group of centralized technical administrators and decentralized non-technical users to create, edit, manage and publish a variety of content. This content can be managed with a CMS within the constraints of a centralized set of rules, processes and workflows to ensure a uniform end-user presentation. Content to be managed is considered to be any unit of data that can be described by “metadata”. Metadata is the description or set of attributes of the data being managed. Common examples of content are images (GIF/JPG/PNG), documents (OpenOffice, KWord, MSWord), streaming audio/video (MP3/OGG/MPEG/AVI), or any other custom data type meaningful to the user organization. Metadata describes the content (such as JPG, MP3 or MSWORD) or its possible relationships to other content such as links. With all these different types of content, there is a need for systems to first create or author the content, then describe it, called metadata tagging, and eventually update it.
In addition to the basic tasks of authoring, tagging and updating content, a CMS should also support:
- Separation of content and presentation – Authoring must be style-based to ensure publishing to multiple presentation formats.
- Easy manipulation of content – Non-technical users should be able to add, edit content with minimal knowledge of technical details.
- Multi-user authoring – Multiple authors should be able to collaborate and edit content together.
- Workflow and security – If required, content authoring, tagging and publishing should be subject to a centralized set of business rules. Adequate security levels and audit trails must be in place to protect the integrity of the content.
- Versioning – Track all modifications to the content.
- Scheduling – Time sensitive content is displayed based on relevant metadata properties such as publication date, expiration date, and so on.
- Search and indexing – Contextual content listings based on various metadata properties such as author name, publication date, categories, and so on.
What is Plone
Plone is an enterprise content management system built on top of Zope and the Content Management Framework (CMF). To understand Plone, you have to understand Zope and the CMF as the underlying architecture. Zope is a powerful open source Web application server written in Python, developed by Zope Corporation. The CMF was developed by Zope Corporation as an open source API for creating complex content management systems. Plone takes advantage of this and many other features and improves upon them to provide the user with a high-quality product. Plone sits above the CMF as an application running on top of Zope. Developing and extending Plone requires a thorough understanding of Zope and its object infrastructure.
Why Use Plone
Key features that will help you decide if Plone is right for your site include ease of customization, security, integration, scalability and Web-based site content management. We will survey some of these features of Plone to better understand their usage and importance.
Software applications usually need some amount of customization in order to support functional requirements. Plone is no different. Fortunately, it allows users to easily tailor the system for their needs. Customization can be done at different levels including basic look and feel alterations, complex page templates, user roles and permissions, workflow and content type definitions.
Look and feel should adopt a user-friendly interface design that complies with industry standards such as accessibility support. Plone’s user interface is fully XHTML compliant and inherently supports Web accessibility standards such as the Web Accessibility Initiative (WAI). Plone’s user interface supports internationalization “i18n” and has been localized in more than 25 languages including German, French and Japanese. However, Indian language localization is not yet available.
Substantial changes to a site’s appearance can be made using page templating. This involves creating a “skin”, which is a set of templates. Each “skin” is a composite of HTML, Cascading Style Sheets (CSS), Javascript and Zope page templates. Page templating requires knowledge of Zope’s Template Attribute Language (TAL).
One can extend Plone’s functionality by taking advantage of its plugin architecture. Plugins for specific features are available from the “Plone Collective” project at (sourceforge.net/projects/collective). Since Plone is open source it can be modified and enhanced at all levels.
Fundamental security features such as users, groups, permissions and roles can be easily customized in Plone. Site integrity is maintained by setting content object security attributes to strictly control user interaction. User registration and personalization features allow site content to be presented based on user preferences. Interfaces to LDAP directories, relational databases (MySQL, PostgreSQL, Oracle) and other repositories. Such interfaces enable easy access to user authentication data for integration with other systems.
Most site content management features in Plone can be accessed through the Web. Authoring, updating and removing content is easily done using any Web browser, allowing content authors to focus on content, and not on technical details. Rapid prototyping as well as long term phased roll-out of sites can be handled easily using Plone.
Scalability and Performance
Plone was designed to provide a rich feature set, not speed. However, one can increase Plone’s scalability and performance using many techniques and tools. Some basic techniques to improve Plone’s performance are enabling caching (internally, using Zope or externally, using Squid or Apache), configuring Zope to run in “production” mode versus “debug” mode, and of course, increasing hardware resources (faster processors and more memory). Performance bottlenecks can be identified using profiling tools such as Call Profiler, Page Template Profiler and Python Profiler. Call Profiler is a Zope based tool that analyzes an incoming HTTP request. It lists the objects (e.g., document, image, folder etc.) used and access times for each object. The Page Template Profiler works only for Zope page templates and lists the objects used and access times for each object. The Python Profiler provides low-level timing information for underlying Python code.
On the whole, Plone is a very easy to use environment for all Web sites - small to large. Some great examples of Plone built sites are – the Mars Rover site (mars.telascience.org), Zettai (www.zettai.net), Austrian government (www.oesterreich.at).
Good resources to learn more about Plone are plone.org (of course), Zope (www.zope.org) and books such as Andy McKay’s “The Definitive Guide to Plone” by Apress.
Trying out Plone on some of your organization’s difficult-to-corral data can lead to a more robust and secure content management world for you.
