CMS or Web Application Framework?

What’s the difference between a successful CMS and a Web Application Framework? Not a big one, I think, for the reasons I’m going to explain in this post.

Let’s start with the definitions. A content management system (CMS) is a web application used to manage and deliver the content of a web site. A web application framework, on the other hand, is a reusable set of code libraries and tools designed to support the development of web applications.

So one might think that a CMS could, or could not, be developed using a framework, and that’s perfectly true, but it’s only part of the whole story.

Things start to get more interesting when we look at a cornerstone feature of successful content management systems, that is their ease of customization and extension. Very often designers and developers need to tailor their CMS, so they tend to prefer those exposing a clear structure and a documented API, in much the same way as an application framework.

The resulting system could well be a content management framework that, out of the box, behaves like a blog platform or a basic CMS but, under the hood, retains the full capabilities of a framework ready to be used.

Real life examples abound. Many systems already advertise themselves as being a content management framework, rather than simply a CMS, from Drupal to PostNuke to eZ publish to SilverStripe to Joomla! to MODx. Even blog platforms, like b2evolution, offer an embedded framework for their users to build upon.

The next logical step is a CMS built using an independently available application framework; both systems, the CMS and the framework, would greatly benefit from the sinergy and the added visibility. Today Plone is probably the only CMS built upon an independent framework (Zope CMF), but that is changing.

A few months ago the Mambo team announced their decision to build Mambo 5.0 using the CakePHP framework. Lately Typo3 announced they are developing an independent framework, Flow3, to build their next 5.0 release. And EllisLab has just announced that ExpressionEngine 2.0 will be based on CodeIgniter, their application framework already available as an independent product.

In my opinion, this trend is going to accelerate, and the most successful Content Management Systems will be strongly tied to a successful Web Application Framework, in a mutually beneficial relationship, and to the best advantage of designers, developers, and final users.