The Perfect CMS

I’m looking for a CMS. For the longest time I’ve used WordPress (nearly ten years now), with occasional dips into others like Drupal and Jekyll. But with a new breed of sites, WordPress is starting to groan. We’ve swapped out various bits as and when we need, but whether we continue down that route…

Here’s what the ideal solution needs to include:

  • Configuration via code – It’s a pain in the arse having to merge data in databases. Let me define types and fields in code so I can carry on using git.
  • Logical template set-up – By this I mean no XML hierarchy (Magento) and no XSLT stylesheets (Symphony).
  • Full revision & preview support – WordPress, for all it gets right, has a gaping hole in that you cannot revision post meta. That’s just a no go.
  • Staged publishing – This is a big one I’ve been facing lately. If a new section is going live you’re probably going to want several pages and bits of content to go out at the same time. Setting a publish date on each is nonsensical with moving deadlines, so some way of batching content into a release group is needed.
  • Authorship flow – I know, it sounds enterprise-y, but it’s what the bigger clients need. The people writing the content aren’t the people publishing the content and this seems to be a distinction lost on many CMSs.
  • Extensibility – This is a vague one, but for good reason. Sometimes assets will be on a CDN. Sometimes forms have to pull data from posts and send several emails to different teams. A framework-esque background is ideal.
  • Caching layers – You’ve got your object caches and your page caches and everything in between. Purges need to be smart, or cache lifetimes need to be short.
  • The standard stuff – Bespoke URL patterns, editor levels, export/import, WYSIWYG (with a good stripper for the crap Word outputs). The usual.

So far there have been a few contenders. Some Java and .Net frameworks seem to have the feature sets required, and Umbraco looks nice. There’s nothing big coming out of Node as it seems to be going in the opposite route. I loved Django when I played with it a few years ago, but the revision systems are all bolted on after-the-fact.

Maybe one day.