What I want from a CMS: Part 2 - Extensibility

My last blog was the first in a series of blogs that I intend to write which focus on the varying aspects of the "perfect" content management system.

Last time I talked about Structure Change Management and the impact it has on your website. This time I talk about something almost as boring.. extensibility!

What?

Extensibility basically means the ability for a specific CMS to be extended by a developer to accommodate additional functionality as required by a particular project.

This means that if you want some kind of specific reporting features, or you need to be able to trigger a push of data into an external web service, you can add a custom section to the CMS in question and have full control over what is displayed.

Extensibility also includes the ability to change the way the CMS handles data on a per-page basis and other aspects of its operation like the way it stores data or the way it handles images

Why is extensibility important?

No two projects are ever the same. They just aren't. Which means that when you need to handle the specific requirements of whatever project you are working on, you need to do so quickly and efficiently.

Sometimes this could mean that you need to add a new section to the CMS to handle a specific type of front-end user, sometimes you may need to have special image types for mobile users, sometimes you might have to save all data to an XML file or a web service instead of a traditional database, and an extensible CMS will allow those things to happen

What are the key qualities of good extensibility?

Flexible core systems: This means that the core mechanisms need to be extensible. Data layers need to be abstracted, media needs to be generic and the UI needs to be modular. Extend, extend, extend!

Consistent: When extensions to the core CMS are added, they need to allow for a completely consistent experience as far as the user is concerned. This can be handled by giving the developer the tools to create this consistent experience with as little effort as possible

What's next

My next blog in a series will be on CMS front-end interference and why it's generally a bad idea!