Frameworks vs CMS packages

Posted on April 27, 2008


Sitting waiting for a plane, your thoughts often turn to life’s imponderables. Like: what’s the point of CMS products, when half the time it’s faster to do what you want in a framework?

The thought is prompted by one of my colleagues at Shift — Matt — who spent about three weeks toiling in a CMS to produce a client-manageable site that reflected a moderately complex content object model.

In the end, he switched tack and re-implemented those 15 days work in three days using Django. As you do. All of which begs the question: what point are CMS systems?

It’s a fair question. I often use Expression Engine, a simple LAMP solution that meets a number of my key criteria for a good CMS:

  • It allows you to easily create and modify the definition (data schema?) of any number of content objects.
  • It provides a default CRUD interface for content objects.
  • Is maintains version of content objects (kinda).
  • It allows objects to be scheduled for publishing and expiry at some time in the future.
  • It allows objects to be displayed in any number of templates that have no bias towards any particular design pattern.
  • It allows objects to be displayed in any number of views, and doesn’t imply a default view of an object.

As a designer, and someone that believes that form provides context for content, the last point is important to me. Too many CMS products force you into a specific page model. They follow a Henry Ford approach to design: any layout you desire, as long as you desire heirachical left column nav, a centre article column, and a right column for dumping modules.

But reviewing that list, I suddenly realise: that’s basically a framework I’ve defined. RoR, Django, Symphony… you could implement my criteria on any of them.

Of course, to implement a good content management solution on a framework, you need to note the following advice:

“Good CMS systems aren’t about content management; they’re about content publishing.”

Both frameworks and weak CMS solutions seem to get this one consistently wrong. They focus on managing content, rather than managing the publication of that content to people.

That means they often fail in the following kinds of situations:

  • I want to have a piece of content change at a specific time in the future to a different piece of content, without manual intervention.
  • I want to have the entire page template change at a specific time in the future.
  • I want to be able to preview a host of changes to content and/or templates, as if I was viewing them at a future time.While I’m at it, I’d also like to be able to view the site at a time in the past.
  • I want to be able to allow multiple people to work on “versions” of the site, with different changes to different aspects of the content.

All of this goes beyond being able to embargo and expire content objects.

It implies that versions of content objects can be embargoed and expired. Or richer, that they can have statuses that have defined transition states and times.

It also implies that templates should be fully fledged content objects, capable of also having transitions. That wway you can stage changes to the site that go beyond mere content changes.

So I’m interested in other people’s experiences of various CMS systems — and whether they enable the kind of publishing management I’ve outlined here.

Posted in: Uncategorized