Mambo, Lenya and Plone CMS: a comparison
Roberto Allende - Menttes -
- Licence: CC-BY-SA
Introduction
According to wikipedia a Content Management System (CMS) is a document centric collaborative application for managing documents and other contents. A CMS is often a web application and it is often used as a method of managing web sites and web content [1].
Similar to an application framework [2], the CMS possesses a group of elements that implement the standard structure but for a web site. An outstanding difference between the process of construction of a web site and an application is the heterogeneity of professionals that participate in the construction process, since a web page is the result of the work of graphic designers, editors, content editors, html programmers, css, javascript and web applications among others. Then, besides providing "objects " to build the web site, the CMS provide a collaborative environment where each one's work is developed and integrated.
The objective of this article is to analyze three open source CMSs based on three different technologies: Mambo implemented in PHP, Lenya built on coocon/java and Plone built on zope/python. To this purpose, we will see what benefits each one provides for the programmer, editor and the site user, the integrated applications each one possesses, commercial and community support. We will also show sites in production that use each cms and we will make a brief description of the features of the versions to be released.
Apache Lenya ver 1.2.3
"Do one thing, do it well." [3]
Version evaluated: 1.2.3
License: Apache Software License
Platform: Java - Cocoon
Apache Lenya is a CMS based on the XML publishing/application framework Cocoon and Off the Shelf components from the Apache Software Foundation. Cocoon implements separation of concerns and component-based web development concepts around the notion of 'component pipelines', each component on the pipeline specializing on a particular operation. This makes it possible to use a Lego(tm)-like approach in building web solutions, hooking together components into pipelines without any required programming.
Cocoon is "web glued for your web application development needs". It is a glue that keeps concerns separate and allows parallel evolution of all aspects of a web application, improving development pace and reducing the chance of conflicts. [4]
Cocoon applications can be designed to perform a custom sequence of transformations on a given XML resource (e.g. translate to HTML or PDF) before delivering it to a client. Lenya takes advantage of this framework and stores all content as XML, transforming it on the fly when required by clients. It then intelligently caches the results of the transformation so it can be reused if necessary. [5]
Lenya was originally started in 1999 to manage the content of a journal. In early 2000 its developer Michael Wechner co-founded Wyona [6], which continued to develop Lenya on the basis of the interactive newspaper edition of Neue Zrcher Zeitung [7]. In the spring of 2003, Wyona donated Lenya to the Apache Software Foundation, where Lenya was incubated and became a Top Level Project in September 2004.
Working with Lenya
There are four ways to view and interact with a site made with Lenya. The live view, is the on line site made up of documents that have been published. The site and authoring view are the ones which are accessed by those who manage the content. Finally, the admin view is from where users and groups are administered.
In the default configuration a user may be in one or more of the following groups:
- Admin who has access only to that area
- Editor can only add and edit content but cannot publish it
- Reviewer is the only one who can change a document state to "published" and therefore visible in the live site.
Editing content
An editor or reviewer uses the authoring and site view to fulfill his task. The authoring view is the site in the live view plus the necessary menus to run the document editing programs and the workflow. The site view owns the tree and the information regarding the contents and meta-information, workflow, assets, control version, scheduler and others are administered for each document.
Lenya editors
Lenya supports four different ways of editing content. Two wysiwyg editors, kupu and bxe. Both are very friendly and they provide such an abstraction layer that the user forgets he is running an application glued to a web navigator. Besides, the code they generate is elegant enough to be read and edited by humans afterwards.
Bxe (left) and Kupu (rigth) editors
Forms editor is an editor oriented to components. This editor divides the page in components like title, body, paragraph and it allows for the edition and modification of each one of these. Finally, there is a source code editor where you can edit plain html.
Thanks to the workflow lenya brings in the default configuration, the effort to keep the site menues is almost null. When a new document is created, it is automatically added to the site menu in the authoring section, not yet published. When it is changed to the published state, it automatically appears in the live website menu.
Lenya has a simple multilingual bearing, in fact the default site is in German and English and editing multilingual sites does no add any complexity to the menu.
Hiding in the help menu there is an option that shows the modification logs chronologically organized. Besides, you can see modifications and come back to the previous states in the site view of each document.
The editors and the site section provide a clipboard. A habitual clipboard to edit documents and a clipboard to handle documents in a content tree respectively.
Administration and template customization in lenya
The administration section only allows for user and group administration, server state consultation and searcher information. The other tasks are oriented to the unix. Lenya, as opposed to mambo and plone, stores the data in XML files. This adds to its flexibility and independence from other environments.
Template modification
In order to modify the site template we need to know about HTML, CSS, XSL and we have to
be sure about the place of the file to be modified. The CSS code is totally transparent
and you can use your favorite tool to edit it. The XSL code is used to generate pages and
it is elegantly modularized. For example, if you wish to modify the site layout, you must
edit the file page2html which has the following lines, among others:
<table width="100%" cellpadding="0" cellspacing="0" border="0">
<tr> <td id="publication-title">
<xsl:choose>
<xsl:when test="$language = 'de'">
Willkommen zur Default Publikation!
</xsl:when>
<xsl:otherwise>
Welcome to the Default Publication!
</xsl:otherwise>
</xsl:choose>
</td> <td id="project-logo">
<img src="{$root}/images/project-logo.png" alt="project logo"/>
</td> </tr>
</table
XSL and HTML
In this code fragment you can see how the header that will be used in all the pages of the site is modified. This is built with a string: “Welcome to the default publicaction!” or “Willkommen zur Default Publikation!”, according to the language.
If you know HTML, it is very simple to modify the template. The fields <xsl:choose> </xsl:choose> contain a control structure that selects the string to be shown in case the language is German ("$language = “by”) and otherwise. Then, the HTML code continues.
Similarly it is possible to modify the conduct of tabs, menu etc. Nowadays, Lenya is not easily integrated with design tools and there is no way to avoid the source code editing to this purpose, though documentation is very clear and it covers all the necessary aspects [8] and there are at least two proposals to change this [9] [10].
Lenya integrated applications
Among the integrated applications lenya owns, there is blog, Web Statistics, Site search by means of Lucene search [11]. Multi-Site Deployment, and Static deploy tool. Static deploy tool avoids Java's and a servlet server HTTP dependence by exporting the content of a non-dynamic site to html [12]. This enables you to use Lenya as a collaborative tool to build sites and upload the result to an economical server.
Though there aren't so many specific applications for lenya, since it is built on Cocoon, existing applications that have been developed with Struts can be integrated to it. To this purpose, there are several options, but if you make sure you use facades appropriately, it is possible to talk to the same backend from both and you can also wrap the output and add it into a page with the proxying stuff. Thus, you can obtain results like shopbloomfield [13], where a lenya site supports a shopping cart.
Lenya installation
Following documentation [14], lenya installation with all its dependencies shouldn't be a problem for somebody with minimum knowledge of a unix system. And it does not possess a great number of dependencies, since it only needs Java 2 Platform, Standard Edition, Apache Cocoon version and Apache Tomcat or Jetty HTTP Server.
Support
Documentation
Lenya documentation is organized in howto documents. Howtos cover topics that range from how to change an original template, how to personalize lucene search, to API documentation.
Commercial
"As the original creators of Apache Lenya, Wyona offer all the services one might need around it: Training, Support, Consulting and custom development". [15]
Besides, there is a number of consulting companies that support Lenya in Illinois, Massachusetts, California and British Columbia, Canada [16], among others [17].
Community
Documentation covers the elementary aspects and it may even do without extra support anyway, and the same as many open source projects, Lenya provides support by means of mailing list, newsgroups and irc channels.
Mailing lists are open and you can access the subscription interfaces from the web [18] and read messages dating for months.
In order to envisage the amount of users and developers, here follows a chart where we compare the level of activity of the users' lists, developers and source code commit for the last 6 months. The source code commit receives a mail for every code a developer uploads to the development repository.
|
|
Dec04 | Ja05 | Fe05 | Ma05 | Ap05 | May05 |
| Users | 286 | 324 | 339 | 327 | 407 | 449 |
| Dev | 720 | 464 | 648 | 768 | 517 | 790 |
| Commit | 265 | 241 | 278 | 380 | 193 | 175 |
Comparison of messages in the users' list, developers y source code comit
Lenya powered sites
Though it is in 1.2.3 version, Lenya can very well be used in production and the following sites prove this:
You can visit more sites in [19].
Upcoming Lenya versions
Lenya 1.4 alpha 1 will be available as from June 12th. This version is due to provide (Open)
Office integration, Provide administration GUI, Complete the move to an in-place UI paradigm.
Plone
Version evaluated: 2.0.5
License: GPL
Platform: Zope - Python
Plone is a CMS built on top of the Z Object Publishing Environment (ZOPE), wich is an objeect oriented web application written in Python. Zope publishes on the web Python objects that are typically persisted in an object database, ZODB. Basic object types, such as documents, images, page templates, are available for the user to create and manage through the web. [21]
The Plone project was started in 1999 by Alan Runyan, Alexander Limi, and Vidar Andersen. At the SolutionsLinux 2003 conference, the Plone Team released Plone 1.0, supporting 22 languages. In 2004, the Plone Foundation was formed to protect and promote the use of Plone.
Working with Plone
Interaction with Plone is similar to Lenya since there are clear differences among the three lists. There is a reader version of the site, on which special options are added for the editor and programming and for thece templates personalization you must use the Zope Management Interface.
The roles are defined by access levels. A site reader is a user that only has permission to read; the editors, programmers and administrators' roles are defined in a similar way.
The content administration is extremely simple because the environment is oriented to documents and folders. In the Plone site a user with edition permission has, by default, the site tree to the left and the content area in the center. In the upper part of the latter four tabs contents, view, edit and sharing are shown. Contents shows the current folder contents, the size of each component in kilobytes, modification date and state in the workflow. View is a preliminary view, Edit edits content, Properties defines the value of such attributes as Allow Discussion or not, Effective Date, Expiration Date, Language, document goal information and Keywords i.e. Document Metadata. Finally sharing allows for Sharing, it is a way to allow others' access to collaborate with you on the content. To share an item, search for the person's name or email address in a form, and assign them an appropriate role. The most common use is to give people Manager permissions, which means they have full control of this item and its contents (if any).
Editing content
In the Plone default configuration, instead of choosing the editor, you must choose the format in which you are editing which are structured text, plain text and html (source code). Structured text is a group of conventions to write plain text and to obtain text with format. For example:
hello * ' world' generates:
Another alternative is to install EPOZ. Epoz is a publishing wysiwyg for zope multiplatform that is integrated with plone. Epoz has formatting font and paragraphing tools, undo tool, and manipulation of images that enables you to change the images size using the mouse, replacing them by dragging.
Workflow
A workflow provide a logical way of moving content through a Plone site. A default Plone site has two workflows: the Default Workflow and the Folder Workflow [22].
The Default Workflow establishes states and transitions for each document, while the Folder Workflow does so for folders. A state is information about to document or a folder at a particular moment in time . Examples of states are public, public, pending, and draft. A transition is an action that activates state change. For example the figure shows the states and transitions of the workflow.
plone's dedault workflow [23]
Besides these two workflows, it is possible to define a new workflow from the ZMI, defining states, transitions and to program scripts to manipulate it.
Template Modification
Most template personalization tasks are run from ZMI. ZMI is a powerful environment that usually requires time to be assimilated, the same thing it happens with some aspects of the plone architecture, however that initial investment is capitalized in a high level of code reusability.
To be able to edit the template first notion of object should be understood since to document is an object. Then such expressions are one liners simple expressions that can do something simple and easy in one line of code and are used inside of the Zope Page Templates which is the templating system that Plone uses for generating HTML.
For example to modify a site header, the main_template object should be edited which has the layout of the site where following lines can be found:
<a metal:use-macro = "here/global_logo/macros/portal_logo">
The portal logo, linked to the portal roots
</a>
a portion of the main_template code
<h1 go = " portal-logo " metal:define-macro = " portal_logo ">
<a href =" /"
tal:attributes = href portal_url"
tal:define = portal_title portal_properties/title";
tal:content = " string:$portal_title " >
Plone
</a>
</h1>
portal_logo macro definition
Therefore, main template a Zope Page Template that uses “portal logo” macro which have three expressions such as to customize the header behavior.
Plone integrated applications
In Plone applications are called product. There is big number of products developed for Plone, and there are also products developed for Zope, that work in Plone or that can be integrated with small effort.
In the plone site [24] there is a list of Plone products that range from weblogs, to export PDFs, bookmarks handling, etc. Most of the products are developed by a third party / externals and although it is common to find more than one alternative for a given task, many of them are not stable or documented enough as to be integrated to a site effortlessly. However there are interesting, well developed products as Plone Desktop [25] which provides integration with Windows Explorer allowing for Drag and drop files into Plone through Windows Explorer, Cut and paste files into Plone through Windows Explorer, Edit files in your local programs (MS Office, Open Office, etc...).
Plone Installation
The installation test was made following the documentation of plone.org [26]. Although it is very similar to Lenya, because python is very well integrated to linux, it is probable that the installation requires certain extra work to fulfill the dependences. Anyway, to make the necessary tests, use zope 2.7.4 and plone 2.0.5 from tarball and installation I won't present big problems although, the same as lenya, it requires a minimum knowledge of linux administration.
Support
Documentation
You can download tutorials, howto documents and FAQs from the Plone site [27] freely. At the moment there are four books published about plone:
- Plone Live, by Michel Pelletier, Munwar Shariff
- Building Websites With Plone, by Cameron Cooper
- Plone Content Management Essentials, by Julie C. Meloni
- The Definitive Guide to Plone, by Andy McKay
The Definitive Guide to Plone is published with Creative Commons license and it can be accessed freely [28].
Commercial
The Plone Team is a group of people who have made significant contributions to Plone (code, documentation, community efforts and so forth). The development team leads the technical decisions and the Foundation was created to support the Plone Team as well as other developers and users. One of the main sponsors is Computer Associates [29].
A good number of consultants exists in the entire world [30], in fact in opensourceexperts.com, Plone is the CMS with highest support with 148 organizations, against Mambo with 37 and Apache Lenya with 5.
Community
Plone has 12 mail lists, for example users, developers, announcement, documentation, Plone User Interface and Design list, Plone Educational list which iscusses Plone as a Learning Management System, use of Plone in University and College settings and other educational areas.
|
|
Dec04 | Ja05 | Fe05 | Ma05 | Ap05 | May05 |
| Users | 1457 | 1433 | 1075 | 1766 | 1639 | 1408 |
| Dev | 158 | 133 | 153 | 30 | 481 | 407 |
| Commit | 98 | 76 | 61 | 336 | 474 | 277 |
Comparison of messages in the users' list, developers y source code comit
To this you should add the irc channels in freenode.net.
Plone powered sites
There are many sites made with plone in the web, such as the free software fundation [31], NASA's Mars Rover Website [32], Governor of Hawaii [33], Ubuntu Linux [34], VeraWang [35], Vanessa Riley [36], among others [37].
Upcoming Plone versions
At present the plone team is working hard to get the release of the 2.1 version 2.1 next August 1st, 2005. Some new features [38] are KUPU integration as wysiwyg editor, CSSs componentization and modularization facilities, Plone speed and optimization, among others.
MAMBO Open Source and Joomla
“Mambo makes the difficult parts of building and running a high-powered web site easy.” Anna Callahan (Jazz singer) [39]
Version evaluated: 4.5.2.3
License: GPL
Platform: PHP + MySQL
In 2000 Miró, an Australian company, developed Mambo CMS. They released a version as open source under the GPL and continued to develop their commercial version. With different teams working on each, these two versions of Mambo became quite different. [40] The Mambo CMS, a commercial variant will now be called Jango. In February, 2005, the 2.5.2. version was released and at present the stable version is 2.5.3.
Mambo is one of the most popular CMSs in the market. It is developed on PHP and mysql.
Working with Mambo
Mambo is organizad in Plublic Backend and Public Frontend users' groups. Within Public Frontend there are such groups as registered, author, publisher. Within Backened there are the Manager, Administrator, Super Administrator groups.
The registered users can authenticate in the frontend and have access to additional pages. Similarly, a user in the Author group can access frontend with options to add content in certain areas; a user in the editor group can also submit and the user in the Publisher group can submit, edit and publish content.
Users within the Backend groups have access to the administrationinterface where they can access the menu configuration tools, banners, users administration, layout definition, new components' installation, etc.
Editing content
Content can be edited from frontend and backend if you count on the appropriate privileges. Mambo content administration is handled with elements, i.e., in Mambo, as opposed to the CMS oriented to documents, you build a page with elements like static content, news item, a polls, banners, FAQs items, etc.
In the Deafult configuration the content related elements can be edited with HTML area. HTML area is a wyswyg editor with formatting tools for paragraph, font, tables, clipboard.
Mambo has scheduller to publish items automatically and a simple scheme for handling contents, it can only be published or not published and thanks to the users' groups that define access levels in combination with backend and fronteds you can simulate a workflow functionality.
A page, as well as the menu, is built a'la lego. In the Default configuration, instead of using a menu generator, there is an element that defines the menus. Then, to add or remove and item to the menu you don't need to edit code, as it is in the other CMS.
Template modification
The Mambo Template system is amongst the easiest to learn in the Content Management System family [41] and it consists of four files:
- index.php This is the template layout file.
- template_css.css The css stylesheet for the template.
- templateDetails.xml This is a metadata file in XML format.
- template_thumbnail.png A reduced screenshot of the template.
For example, in order to edit the Default Mambo site you have to edit a file which is a combination of HTML and PHP:
<?php
if ( mosCountModules ('banner') ) {
?>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="content_table">
<tr><td>
<p>
<div id="banner_inner">
<img src="<?php echo $mosConfig_live_site;?>
/templates/rhuk_solarflare_ii/ images/advertisement.png"
alt="advertisement.png, 0 kB" title="advertisement" border="0"
height="8" width="468"/><br />
</div>
</td></tr>
</table>
<?php }
?>
code used in mambo's template
Although a priori this code is not the most elegant one, something which is very important when making Mambo's site template is that it supports template edition from wyiwyg tools, such as dreamweaver(tm) [42]. Thus, the way to make templates in Mambo is by using these tools, which considerably reduces the knowledge necessary to generate skins; in fact, many sites developed in Mambo do not have a uniform visual format as in many Plone sites, and there are even template developer communities [43], though it is a pity that these sites' code does not always meet w3c standards.
Mambo integrated applications
The components are supplements and additions to mambo's core functions. Mambo can publish text, upload images, manage users, etc., but components are extra functions that can perform additional tasks. Examples of these are: download managers, forums, commerce, galleries, guestbooks, wikis, newsletters - the list is almost endless. [44].
One of Mambo's best strengths is the amount of addons it has, in fact there are initiatives such as MamboForge.net to encourage the community.
There are many addons for mambo [45], from Google Adsense Modules for Mambo, Payment Systems, Shopping Cart, Forms, etc. There are also addons that integrate mambo to other programs such as skype and sugarcrm [46].
Mambo installation
Installation of the program and all add-ons is carried out by means of web applications. Interaction outside the web application has been reduced to the minimum. You can only unzip a file or install the dependencies, which are php and mysql.
Support
Documentation
Mambo has three printed books in German, though that looks anecdotal when confronted with so much excellent and detailed documentation available in the Internet, such as Mambohelp [47] or books in wiki [48].
Commercial
Although Miró keeps its own CMS Jambo [49], it supports the community in a considerable way. Miro provides the day-to-day management of the business aspects of the project while interacting with the official Development Team via the steering committee. Miro also contributes programming resources to the project utilising its considerable experience in providing commercial software solutions.
Besides, there are companies especially devoted to the provision of specific solutions for Mambo, for example howtomambo [50] among others [51].
Community
Mambo's community mainly uses webs forums instead of mailing lists. According to Mitch Pirtle there are around 23000 user forums and you can access mambers [52] to observe such a community.
Mamboforge site [53]
Sites that use Mambo
Some of the sites that use Mambo can be found here [54] among others: ppbali [55], porche brasil [56], mjjsource [57].
Upcoming Mambo versions
Version 4.5.3. will be released promptly and it will be able to:
- Improve the installer by allowing for upgrades to existing elements
- Incorporate ADODB to provide support for MySQL 4.1 on PHP5 and alternate database platforms in the future.
- Allow for the installer to handle packaged elements (e.g., so that you can install a component, template and module in one operation).
Conclusion
Choosing a CMS is a complex task. You may follow different criteria for its choice and comparison. A quantitative analysis [58] can be very helpful to determine whether it will be necessary to develop add-ons or not. There are very good documents available to consult freely [59]. However, the analysis of results will closely depend on the requirements, for that reason this article intends to provide the necessary tools to make a good choice, more than just make a comparison. There are several general ideas, though, that can be obtained based on our tests. For example, since Plone and Lenya work environment are focused in documents, this makes them more applicable to Intranet or sites where big amounts of documents are shared. What is more, if a CMS is needed to develop an adhoc application or if the function needed is not implemented in either of these CMSs, both are a good choice since they are better prepared to make extensions on them.
In web portals or sites where there is no uniform layout, Mambo's orientation to “elements” provides very interesting flexibility. Another strong point for Mambo is the number of applications existing around it, which greatly increases the possibility that the adds-on we need are already developed and available freely.
Lastly, the CMS choice will not be the same if it is just for a site or you are looking for a development environment for many sites. In the first case, Mambo would be the good choice because it does not need a high effort to use it. In the second case, Plone would be the best one because the very modular architecture gives a high level of reusability, even in templates development among other things.

This work is licensed under a Creative Commons Attribution-Share Alike 2.5 License..



