Skip to content.

OpenAdvantage - Freedom, Choice, Control

Sections
Home Articles Mambo review

Mambo review

This review follows on from my previous article, which outlined the criteria I applied to many of the main open source CMSs to determine their suitability for a developer. Mambo is an established product which has received many industry awards (e.g. Best of Show and Best Open Source Solution at the LinuxWorld Conference and Expo Feb. 2005; Best Free Software Project of the Year, Linux Format Awards 2005). It is ideal for small, simple websites with a straightforward structure.

Homepage: http://www.mamboserver.com/

Version evaluated: 4.5.1

License: GPL

Platform: PHP + MySQL (should run on any standard ISP space supporting these)

Commercial support: available from Miro International, including per-incident support and service level agreements

Example sites:

Overview

Mambo would provide a good foundation for a web development company looking to provide simple managed-content websites. It can be easily configured to allow registered users to log in and edit pages via the web: the tools made available for authors are straightforward and require little training. From a developer perspective, some decent documentation is available at http://docs.mamboserver.com/ (though some of it is annoyingly incomplete).

Default capabilities

Mambo is probably the simplest to install of the CMSs covered in this review. The only preparation needed before installation is creation of a MySQL database and user; the rest of the installation is carried out through a wizard interface via the web browser. This includes thorough checking of the required directory permissions and PHP settings, so if anything is incorrect in your PHP + MySQL setup, you are alerted before installation is attempted.

Once installed, the default set of features is focused on providing ease of use for the website author:

  • The user interface is excellent, providing optional WYSIWYG editing of content. The administrator tools are available through a separate interface, which makes a good clean separation between the two parts of the system (the public website and the administrator back-end).
  • Inserting images into a content element is fairly simple: you can upload images while editing content via the web interface, then insert place holders for the images
  • While the templates are quite technical, mixing PHP code with HTML, the layout of page elements (e.g. banner, news area, login form) can be simply modified through the admin. interface. It is possible to move these elements into a variety of locations (e.g. top of page, left-hand side, right-hand side). Using this approach, you can rapidly move, remove and add elements to the page layout.
  • It is very easy to modify the menus available, and to add your own menus.
  • PDF printing of site pages is available out of the box.
  • The help system is extensive and actually helpful.

While Mambo has many excellent features and is generally easy to configure, there are a few areas where I feel it is lacking:

  • User and role management: A default set of roles is available, but it is difficult to define your own custom roles. Defining fine-grained permissions on a per role basis (for example, restricting access rights for a single document) is difficult to achieve. It is not impossible, however: sections can be created which have restricted permissions, and documents placed within those sections. Overall, though, access control is very large-grained.
  • Versioning: Mambo has no version control, so it is not possible to roll-back to a previous version of a page if drastic editing errors are made. Versioning is planned for the next version of Mambo, but the coding hasn't progressed very far as yet.
  • Admin. interface: The admin. interface is very packed, and would be difficult for novice users to follow. I found it difficult to navigate and often had problems finding the right option to accomplish tasks I was attempting.

Additional modules

Additional extensions are available from MamboForge. While testing Mambo, I installed a couple of these to add the functionality I needed:

  • Remository: This is a file repository extension. Uploaded files can have an attached license which must be accepted before the file is made available (useful for open source software download sites). It also provides two modules, one of which shows most popular downloads, and another which shows recently uploaded files.
  • Events calendar: There are many events extensions, but this one seems to be the best established and most highly regarded. The calendar functionality is good, showing events in a clickable calendar layout which can be toggled between day, week, month and year views.

There are many extensions covering a wide swathe of functionality. The developer community seems very vibrant.

One caveat about extensions is that they tend to be of variable quality, with several that are simply unsuitable for use on a production website (e.g. they produce buggy output or simply don't do what they are supposed to).

Template extensibility

The templating system in Mambo is not particularly elegant, and relies on PHP programming experience. So it could be difficult for a designer without PHP experience to make significant changes to the default templates. Having said this, some minor changes can be made by moving page elements around through the administrator interface, and by altering the CSS for the site.

Elegance

The Mambo source code seems to be very low-level: there is a lot of manual string formatting, HTML embedded in PHP, and large tracts of procedural script (rather than function calls). There is no clean separation between presentation and logic, and careless changes to the HTML layout of a page could easily impact on PHP code.

There also seems to be little in the way of an API which modules can call: instead, a component or module seems to simply act as a script which is loaded and run by Mambo wherever it is to included. Compare this to Drupal, where a single module could affect multiple parts of the page, inserting HTML into the header, footer, side menu, content pane, etc.. A Mambo module has very localised effects by contrast.

In summary, Mambo seems less "hackable" than some of the other systems covered here, and less open to developers: an experienced PHP programmer would be able to make changes, of course, but Mambo does little to make this easy.

Related articles: