Future of Mambo Development
Written by Team Mambo
Friday, 04 November 2005
Today, the Mambo Core Development Team and the Mambo Steering Committee released
a Policy Statement outlining the plans for the future development of the Mambo Open
Source Content Management System. The statement outlines the new team's philosophy
and approach and provides details on both short and long term goals. If you are
interested in Mambo development, or how Team Mambo is addressing the challenges
they face, we encourage you to take the time to read this article.
Bringing ideas to fruition
The Mambo Core Development Team is almost entirely new to the Mambo code and
as a result, brings fresh eyes with new views on the state of the project. The released
code is feature rich, but the new team feels a need to review a number of the core
mechanisms in order to make them robust enough for further long term development.
The code that was under development at the time of the fork was incomplete and not
fully tested, so without the knowledge that departed with its developers, is considered
to be of limited value.
In this situation, the core team's first priority is to deal with the recorded
bugs in 22.214.171.124 in order of significance and to tackle all known security weaknesses.
The factors that cause these problems are generally well known and it is essential
that the security issues be addressed quickly and effectively.
Historically releases of Mambo tended to involve a very high proportion of the
total code and sometimes came with disruptive frequency. Goals for future stability
include: efforts to implement development and release control procedures that will
reduce the frequency of bugs and remedial releases; and, progressive design, with
particular emphasis on encapsulation inside sound and documented interfaces.
While bugs are being fixed and security loopholes eliminated, improvements are
being made, mostly in small ways, and the team is gaining familiarity with the code.
On minor housekeeping issues:
- The core development team has agreed to use only a standard three digit
release numbering system, with the first release to be 4.5.3.
- There will also be efforts to resist feature creep through practices such
as last minute addition of functionality. In the case of 4.5.3 no new features
are being added apart from the previous work on a simplified user interface,
demonstrated in the 4.5.3 beta.
- However hard we try, some bugs are inevitable. Provided these are non-critical,
the team will make regular bug fix releases that can be implemented by Mambo
site administrators without particular urgency.
- Notification procedures are also being implemented for key partners and
third party developers in an effort to improve communication and transparency.
Current Mambo Development Projects
Dates are given for guidance only. Reasonable efforts will be made to keep to
them, but in the nature of a complex project that relies on volunteer workers, none
can be guaranteed.
- Internationalization is strongly demanded and is considered to be a top
priority. Work is currently in progress to decide on the best technical solution.
It is expected that decisions will be made on the approach to be adopted by
mid November 2005, at which time development will commence. Once standards have
been established for data formats, work on translation can commence. This should
be under way from the beginning of December 2005.
- The second priority project is to establish a viable Role Based Access Control
system throughout Mambo. The ACL facility presently in Mambo 126.96.36.199 is considered
excessively large and complex and is being replaced by a lightweight, flexible
system designed in the light of recent thinking on OO RBAC mechanisms. It will
provide comprehensive access mechanisms that can be used both within Mambo and
by third party developers for their solutions.
- Priority is also being given to work on templates, although this is presently
at an early stage. However, the goal is to provide a highly flexible facility
that will combine two important factors. One is to make some reduction in the
freedom of templates so as to reduce the likelihood of security issues through
template installation. The other is to retain the ease and flexibility of template
development that has been one of the critical factors in Mambo's success.
Mambo Development Goals
Much of Mambo consists of plugins components, modules or mambots sometimes known
collectively as CMTs. (This part of Mambo is also being called the 'outer core'.
The plugins are automatically installed as part of the Mambo installation, unlike
third party plugins. In order for plugins to be possible, Mambo requires an inner
- A guiding principle for development is to aim at a small, efficient, fast
inner core. Code here includes such things as session management, plugin management,
core access control mechanisms and database interface layers. One medium term
goal is to have more reliable and efficient mechanisms for managing the loading
of code on demand. The ability to fully implement this is currently constrained
by the lack of availability of PHP5 in the web hosting market, but some steps
can be taken.
- Another principle is reduced reliance on large libraries of code. Pulling
in libraries is a quick way to create new functionality. There is no intention
to cease consideration of good solutions of this kind. However, many of the
libraries currently in use are cumbersome. They create difficulties in maintenance
that are greater than for internally developed code, and can often place design
constraints on future development.
- Vital to improved code is the implementation of encapsulated objects that
have defined interfaces. The vast majority of Mambo (including third party plugins)
ought to be in the form of groups of classes. Globals should be substantially
eliminated as should reliance on properties of objects. There needs to be a
clear definition of which classes and methods are intended to be available to
three classes of use: within the class, within the Mambo core, and generally
by anyone. Documentation should match the type of use. Soundly designed classes
reduce the dependencies that arise through a lack of clearly defined interfaces,
allowing more rapid development and reduced risk of faults.
- Enhanced security is a significant goal. Basic principles for secure coding
are well known and must be consistently applied throughout Mambo. In addition,
the team will be looking for ways to increase the security of Mambo systems
through features such as code signing and greater database security.
- Backwards compatibility remains a firm goal, although there will be times
when this is sacrificed. It is not an absolute commitment, since design changes
are needed and will certainly affect interfaces. However, the aim will be to
make efforts to sustain existing interfaces at least long enough to give third
party developers adequate notice of deprecated interfaces and sound information
about alternatives and how to use them.
Policies for Development
In order to achieve the goals stated above, and other significant goals, the
following policies are being adopted by the core development team.
- Overriding all other considerations, Mambo's development must be user driven,
and attention will be given to requirements gathering. Arrangements have been
made with the forum moderators to try to capture the numerous ideas and comments
that are not always channelled into the wish list area. The Documentation Team
has agreed to be responsible for analysing ideas and organising them into a
usable form. When considering the user driven character of Mambo, it is useful
to take account of the four constituencies that are most relevant: Those who
build sites using Mambo (the web developers), those who manage sites on Mambo
(the webmasters), those who visit sites using Mambo (the visitors), and those
who develop components, modules and other features for Mambo (the 3PDs).
- It is helpful to adopt a broader concept of 'content'. This will help to
simplify Mambo for its users, both webmasters and site visitors. Currently,
Mambo uses the term 'content' only to refer to published articles. However,
it is better applied to most kinds of material, such as forum pages or contents
of file repositories.
- Well designed and published interfaces are a core policy. Provided they
are soundly designed, published interfaces should be capable of being held constant
over a sizeable period, even though the implementation behind the interfaces
may have changed considerably. Everyone involved in development, both on the
Mambo outer core and on third party products, is entitled to have up to date
documentation that relates to reliable and predictable functionality.
- In the area of interfaces and elsewhere, it is highly desirable that documentation
be delivered simultaneously with code. In the case of documents such as user
manuals (more than one may be required, allowing for the different kinds of
users) it is highly beneficial if the manual is a part of the development and
QA process, and they are thus prerequisites for the completion of developments.
- Maybe it should go without saying, but it is the policy of the development
team to create sound and efficient code. The development team will aim to use
modern techniques to maintain high quality output.
A few simple points will illustrate the current intentions with regard to hosting.
A good many practical problems arise with hosting, and efforts will be made to provide
better documentation on these.
- The base requirement for Mambo will be raised to PHP 4.3 and MySQL 4 at
the next release after 4.5.3.
- A general direction of reducing reliance on the file system will be pursued.
- There will be correspondingly greater use of the database.
Near future development projects
- There will be continued efforts to establish adherence to current web standards
such as XHTML. In addition, a project will be started to deal with questions
- New capabilities for making Mambo 'Search Engine Friendly' will be introduced
in an early project.
- Mambo will be provided with flexible nested folders to any depth, to replace
the current two level system of sections and categories.
Longer term projects
- Database portability is an important goal, but is treated as long term because
it is highly likely to break plugins. The development policy has been provisionally
established as the building of dedicated Mambo interfaces to established database
products. PostgreSQL will be an early implementation because of its high level
of ANSI compliance, which will test the flexibility of database use by Mambo
and third party programs.
- Multi-site administration is in great demand from some quarters, and is
clearly needed by people running large numbers of sites. It has to be a longer
term project because of its complexity and security vulnerabilities.
- In the long term, the development team expects to see XML become much more
central to CMS content. It already has clear advantages for multi-purpose material.
However, it is not a short term goal because of the lack of sufficient adequate
tools, such as XML editors.