MONIQUE KUFFER MATABELE
REPORT
04.07.2005 - 22.07.2005

STAF 14
Daniel K. Schneider
SUMMER PERIOD

Search for a CMS (Content Management System)


I started this search with the following requirements: After searching the web, particularly those sites specialized in tracking those products, such as CMS Watch, Free Programming Resources, CMS Quebec, List of CMS by type, OpenSource CMS, I made a first selection of the following CMSs:

("comments" are taken from those sources or directly from the CMS websites)

Name System Programming Language Exemples Comments
Typo3 PHP/MySQL JavaScript, PHP Cost of development with Javascript (!) - Typo3 is a professional class Web Content Management System written in PHP/MySQL. It's designed to be extended with custom written backend modules and frontend libraries for special functionality. I has very powerful integration of image manipulation. (Download)
EzPublishing php/mysql PHP (?) Designed for online shops. Appears limited in ability to import content from other software.(comment source...)
Xaraya PHP/MySQL PHP Similar to PostNukes - Provides News Articles - Web Links Directory - Job Boards - Frequently Asked Questions - File Downloads - Photo Gallery - Member profiles - Web forums (message boards) - Articles Repository (i.e.: Knowledge base, cooking recipes, product reviews, news articles, etc.)
Exponent PHP/MySQL PHP Easy to use - A functional web application which gives the visual reigns of power over to the designers - all without having to custom hack the core system code for each new design. The administration model is contextual - if you need to edit some text on the home page, just surf to the home page and edit it. The extensibility of Exponent gives the ability to seamlessly integrate new themes, plugins, modules and subsystems simply by putting files in different directories, without touching any other piece of code, makes managing Exponent itself much easier.
Plone Zope and Python Python Plone is powerful and flexible. It is ideal as an intranet and extranet server, as a document publishing system, a portal server and as a groupware tool for collaboration between separately located entities. - Object-oriented - hierarchical databases - uses templates and CSS. Question: What are the implications of working with Python and Zope?

NEED ANALYSIS

For details about the project ASC, please consult the diagram on the following report: Online Competence Identification.

What are the tools required for the project? I have identified 4 zones: a public front space, a public exchange space, a restricted secure exchange space for teams, a secure project management space for teams. Each zone will require a set of tools with different levels of access. The following is a non exhaustive overall list of tools needed. Only 3 CMS will be looked at:

Needs Importance 1-2-3-4-5 Typo3 Exponent Plone Comments
chat 5 + - +
drawing board 5 a tool to draw
journal 5 dated, publishable, in which we can draw or download images, maybe the whiteboard can serve that purpose
forum 5 + - + public and private area
calendar 5 + + + simple calendar for events in public space
planning & scheduling 5 ? - + project management capacity
wiki 5 ? - +
shoutbox 5 -
e-mail 5 + + +
personal storage space 5 + - + need to develop different levels of storage, for personal use, teams, projects, resources, etc...
personal profile 5 + ? + with visual options as well
guestbook 5 +
WYSIWYG editing 5 + - +
downloading space 5 + ? + downloading documents of all kinds, with ease, in the right place, is primordial
white board 5 for teamwork (brainstorming, development); privately for journal production
conference 5 for teamwork (brainstorming, development)
search 5 + ? +
news 5 + + ? +
quotes 3 + ? + would be nice, but not essencial
Report & brochure publishing 5 + - + able to produce ready for print publication to be downloadable over the web
Imaging Library 5 + + +
slide show 3 + + +
e-commerce 5 + - + to sell publications
competence identification 5 a tool to help identify competences and skills
resource tracker 5 a tool to keep an "inventory" of resources for each project - use an inventory control module (?)

COMMENTS

PLONE

In a slide presentation called Open Source for e-Government, a Business Case, Stacey Quandt, 2002, there are a few diagrams I found useful in visualizing the Open Source infrastructure, and particularly this one which places Plone in context:

PLONE - ZOPE - PYTHON

Taken from the book The Definitive Guide to Plone:

Plone is 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 and flexible open-source Web application server. The CMF is a framework for a system; in other words, it provides the tools for developers to build a product, rather than just providing an out-of-the-box system that users can use immediately. Plone is a layer on top of the CMF, which is an application running on top of Zope.

Zope is written in Python, a powerful object-oriented, open-source programming language comparable to Perl or Tcl. Knowledge of Python isn't required to use Plone or even to do some basic administration; however, customizing products and scripting Plone does require some Python.

From the Python Web site: Python is an interpreted, interactive, object-oriented programming language. It is often compared to Tcl, Perl, Scheme or Java. Python combines remarkable power with very clear syntax. It has modules, classes, exceptions, very high level dynamic data types, and dynamic typing. There are interfaces to many system calls and libraries, as well as to various windowing systems (X11, Motif, Tk, Mac, MFC). New built-in modules are easily written in C or C++. Python is also usable as an extension language for applications that need a programmable interface.

WxPython is a GUI toolkit for the Python programming language. It allows Python programmers to create programs with a robust, highly functional graphical user interface, simply and easily. It is implemented as a Python extension module (native code) that wraps the popular wxWidgets cross platform GUI library, which is written in C++. This page for API(Application Programming Interface) documentation for wxPython.

GOING AHEAD WITH PLONE

The operating system recommendation is Linux - this is what most people run Plone on, and where you get the best results. Plone can be deployed on most platforms, but if you use Linux, it's easy to get help. As I work on Windows 2000, the installer for Plone came as a *.exe file. No problems with the installation.

The recommendations for a Plone server: a high-performance computer will obviously make Plone perform better. Plone is a complicated system that requires processing power and memory. In general, it's recommended you don't go into production with a machine slower than 2GHz with less than 1GB of Random Access Memory (RAM) if you're serving a large Web site. It works fine with setups as low as 500MHz and 64MB of memory for more modest sites, however. For a base installation of Plone, you'll need about 50MB of hard drive space.

To use Plone, you need a Web browser that can access the server. If users want to log into your site, then they must have cookies enabled. JavaScript isn't required but will provide a richer user experience. Because of the large amount of Cascading Style Sheets (CSS) in Plone, modern browsers will see the correct Plone interface in a richer, more attractive way; however, it should be quite functional in any reasonable browser.

INSIDE PLONE

As the Plone Controller is started, there are 2 options are available on the Site Management: a "View Plone" and a "Zope Management Interface". One comment I found in the text long after having played around with the management interface is the following:
If you're familiar with Zope, you should never, never, never add content from the Zope Management Interface (ZMI). Depending upon how you've installed Plone, you may have already seen the ZMI and used it for customizing and developing Plone through the Web. However, adding content through the ZMI will create content items that are incomplete and don't work properly.

In the "View Plone Interface"

Adding and editing content in a Plone site is possible with more than just through a Web browser. Access via File Transfer Protocol (FTP), via Web-based Distributed Authoring and Versioning (WebDAV), or via scripts is all possible.

You can edit the document content in at least three formats: structured text, HTML, and plain text.You can use What You See Is What You Get (WYSIWYG) editors such as Epoz to produce it. Ideally the HTML should also be valid Extensible HTML (XHTML) to comply with the rest of the Plone system.

Any piece of content can have any number of properties assigned to it. These properties are known as metadata and provide information such as: Allow Discussion, Keywords, Effective Date, Expiration Date, Format, Language, Copyright, Contributors of an item.

Workflow is the ability to apply different states to the content, such as: Visible, Pending, Published, Private. A review option gives the list of items submitted for review.

Common image filenames end with an extension such as .gif, .jpg, .jpeg, .png, or .pict. You can display images inside Plone on a Web page without having to download them to the local computer if the type of the image uploaded is viewable in the user's Web browser. You can't edit images directly; instead, you can edit the image on your hard drive using any program, such as Adobe Photoshop or GNU Image Manipulation Program (GIMP). External Editor is a tool that lets you edit images using a program without having to upload and download them.

Contents are organized in folders. Everything inside a Plone site is in the Zope Object Database (ZODB) which is organized in a hierarchical structure.

In the "Zope Management Interface"

To customize your Plone site, it is necessary to access the ZMI (Zope Management Interface). Plone puts together three layers of technology to create a page. Python and page templates create some Hypertext Markup Language (HTML), which is sent to the browser. CSS determines the majority of the look and feel of your site, including the tabs, the images, the boxes, and the overall layout. The fact that Plone's CSS is totally customizable means that from a few style sheets users can completely customize many aspects of a site.

In Plone, you're actually publishing objects that are located in Zope; most of them are objects that are persisted in the object database. The concept is more complicated than standard Common Gateway Interface (CGI) environments, where a script is executed and passed a series of request variables. Everything in Plone is an object, everything in Zope is an object, and everything in Python is an object.

When you request a Uniform Resource Locator (URL) from Plone, an object in the environment is called. Plone does this by translating the URL into a path. So, if the URL is /Plone/login_form, what Plone is going to do is break that URL down into a path and look up each of those objects in the database. It's going find the Plone object and then a login_form object inside the Plone object. Looking up this path is called traversal; essentially, Zope traverses across those objects and then calls the last one in the path.

Plone and Zope have added a twist, called acquisition, to this whole publishing system. The concept behind acquisition is one of containment: Objects are situated inside other objects called containers.

In a standard object-oriented environment, an object inherits behavior from its parent. In Plone and Zope, an object also inherits behavior from its container. An object goes through a container hierarchy to figure out how to get these behaviors.

The Zope Page Templates system uses TALES. The main use of TALES is in Zope Page Templates, the HTML generation system for Plone. Although its name may suggest it's suitable only in templates, many tools in Plone use this syntax to provide simple expressions, such as actions, workflow, and security. The Template Attribute Language (TAL) provides all the basic building blocks for dynamic presentation. TAL defines eight statements: attributes, condition, content, define, omit-tag, on-error, repeat, and replace.

For Advanced Plone Templating and Scripting

One of the nice elements of page templates is that different functions are clearly separated into different namespaces.Two other namespaces are key to Plone.

The first is METAL. As the rather long name suggests, it's similar to TAL in that it's an attribute language and inserts itself into element attributes. However, its primary aim is to ensure that you can reuse chunks of other page template code. It does this using the slot and macro functions.

The second is I18N, which allows you to translate the content of page templates. This is used in Plone to localize the interface of Plone into more than 30 languages and for many users is one of the key features of Plone.

At least four different levels in Plone exist for creating logic. The simplest level for using Python in Plone is the Python TALES expression. The other layers of adding scripting Plone happen roughly in the following order:

A Useful Tips: Because page templates are valid Extensible Markup Language (XML) and can be used independently of Zope or Plone, you have several useful scripts for cleaning up page template code and performing syntax checks. These are additional tools and checks; Zope actually performs all the necessary checks when you upload a page template.

Other options will not be reviewed here.

RESUME

To resume and cover what I might have missed in the above selection of key elements from the book (most of it is cut & paste), here is part of the description of Plone's features:

COMMENTS

Those are the aspects I looked at so far. If I decide to use Plone, I will have to familiarize myself with all 3 levels immediately in order to be able to customize the look of the site. Some of the concepts we are already familiar with, such as templates and CSS. The management interface is easy to use, and many products are available (called modules in other CMS) to build up the site.

RESOURCES & REFERENCES

Tools used: Xemacs, Inspiration
  1. CMS Watch
  2. Free Programming Resources
  3. CMS Quebec
  4. List of CMS by type
  5. OpenSource CMS
  6. The Definitive Guide to Plone
  7. List of Plone Sites
  8. Online Plone Help of the University of Sidney's Learning Lab
  9. Exponent development roadmap
  10. Typo3 Feature List
  11. Three Faces of XML in Zope Services, Documents, Datastores by Jon Udell (02/02/2000)
  12. How to Think Like a Computer Scientist
  13. wxPython specifications
  14. Internet Scripting: Zope and XML-RPC, by Amos Latteier, January 12, 2000
  15. Open Book Project
  16. Open Source for e-Government, a Business Case, Stacey Quandt, 2002
  17. XHTML Validator
    CSS Validator