A CMS rant

I’ve been working in the CMS industry for the past 6 years or so. Actually I should say 10 years or so, since I started making websites and providing tools for that around 1995. I was never totally sold on the whole CMS messup, but today, after being exposed to the usual CMS software selection nightmare, I’m really starting to think that the whole concept of CMS as a separate product is broken.

When I wrote back in 2000 (here) my first CMS from scratch, as a product to be used internally and possibly sold, the architectural/technical path was pretty much carved in stone: devise a database schema, build tons of code to hook to it, struggle finding a decent editing framework, build a presentation engine – maybe providing some fancy templating system, and ship. Monolithic stuff, conceptually proprietary, uneasy to extend and maintain. Hitting the real world of corporations with stuff to integrate was a sore PITA, and impossible most of the times. Software evaluation was a painful compromise-based process, where customers had to adapt their processes to the tool, and not quite the opposite, as it should be.

Five years later, the situation is incredibly different. We have repositories (and this is getting even better), we have frameworks, we have a plethora of editing solutions, and we have middleware. Does it still make sense to build a full-fledged Content Management solution, or should we just stop here, step back and understand that everything we need is right in front of our eyes in terms of reusable components?

As an example, we do have a Content Management solution. It comprises an editor backend, with WYSIWYG editing, workflow, versioning, searching and all the neat stuff you’d expect from a (admittely, basic, and by design) CMS. It’s fully i18n’d, has no Unicode issues, can be integrated with custom metadata and content types with litle to no effort, supports scheduled publishing, strictly (physically!) separates content from presentation, providing a user customizable you-don’t-need-to-know-XSLT templating system. All that in less than 16kloc, including comments, whitespace, images, xsl, css, javascripts and all the fuss, not to mention eleven java classes providing some very specific hooks into Slide or Cocoon, the frameworks we’re using for the whole thing. Impressive.

Mind you, this is not the “deploy a war and start working” kind of thing but it’s not vaporware either: it needs customisation and integration, but we’re well ahead the 80/20 paradigm, with 20% being in our experience those features you’d have to reimplement anyway for any specific customer (been there – a number of times – done that). It’s however amazing how far you can go today with just some small gluecode.

Of course, we’re not geniuses nor rocket scientist: we just happen to stand on the shoulders of giants (and be proud of being a small part of such giants), with Cocoon and Slide needing little more than just some configuration to hit the road. This is exactly what I envision as the power of Open Source in terms of being lock-in free: anyone knowledgeable about Cocoon, WebDAV and Slide can kick in and start working/extending/modifying our framework, there is nothing intellectually proprietary, it’s all out there.

With such powerful frameworks, then, how can we possibly need full-fledged CMSes in a tech-savy world? Isn’t it better to work on frameworks instead, and customise them to specific customer needs?