Discussion and considerations
A critical concept for thinking about the architecture for extensions is "pluggability". It can be a rather vague concept, and can be applied in many different ways. But what it is all about is being able to plugin extra functionality in a straightforward way. A simple example of pluggability might be a range of power tools based on a single battery and charger. The power supply is turned into a tool by adding a mechanism to the battery using a standardized connection.
One part of CMS pluggability is certainly the possibility of adding new functionality. There is another big issue that crops up in the world of the web, though. It is constant change. Partly brought about by continual software development, it is also triggered by security scares. However hard developers try to build secure software, hackers regularly find new loopholes. Generally, the only way to deal with these vulnerabilities is to issue a new version of the software. As a result, new versions...