The Most Important Feature Of A Content Management System
Sunday, 21st August 2011
Since I wrote a content management system back in 2007 people have asked for loads of features. They wanted a blog so I wrote one of those. They wanted events, so I did that. They wanted an online store so I made one of those (and that had tons of subtle feature variations like product XML feeds, discounts, postage and payment vendors). I also created snap-ins for forms, galleries, page nesting and many, many more.
But what is the most important and fundamental feature of the CMS I wrote? Funnily enough, it is none of the above. The must-have feature is garbage collection. You need to keep all the stuff that gets deleted and put it somewhere you can get it back, because people delete stuff. Sometimes they mean to delete it and sometimes they don't - but you need to have loads of ways of recovering it.
I implemented a version-browser pretty early on, which let you view old versions of pages (including ones that had been deleted) - but there are flavours of recovery and I have also added a proper recycling bin, which is a faster way of recovering stuff. In a way, these are two different things that both have the same end goal - getting back the content that has been thrown away by accident. So why have two? Because you can't be too careful.
The version browser saves versions as people make changes. If they type over an important paragraph and hit save, the page hasn't been deleted, but they have lost their content.
The recycle bin saves pages as they get deleted. It is much easier to perform a one-click recovery on an entire file than it is to recover a bit of a previous file, which may need to be merged into a newer version of the same file - so it's a quick way of getting back something you totally deleted.
Features like site maps, snippets, themes, automatic upgrades, uploads and a suite of reports mean nothing, because when a disaster strikes, people want their content back and they don't care who's fault it is.