Working in the online news media industry, I got into a lot of conversations about content management. Turns out it’s a tricky problem to solve. There are a lot of factors involved, and they start as simple as trying to define what exactly content management is.
Seems to me when most people think of a content management system for the web, they think of data entry. Web forms that let one enter data, which will eventually be displayed on a web page — right? Right. But really, content management should be about more than that. The process of managing your content ought to include structuring, organizing, searching on, filtering, and easily modifying your content. It ought to include being able to quickly define new types of content. It ought to facilitate establishing meaningful relationships between disparate pieces of content. It ought to make your content more useful simply by virtue of the content being in the system.
But more often than not, it doesn’t. Most of time, you actually make your data (read: content) as dumb as possible by way of entering it into a CMS. Seriously. Let me give you an example.
Suppose you have a recipe. You want to display it on your blog. So you open WordPress or similar, you create a new blog post, and you the recipe in the “body” field. Congratulations, your recipe is now on your blog. Perhaps you do this once a week for a year. Now you’ve got a nice series of blog posts and you’re gaining a bit of a regular audience thanks to your good eats. Your readership starts to ask for some additional features. “Hey you — can I get a list of all your recipes that use peanut butter? I’m not interested in making deserts — can I filter those out? Is this recipe vegan-friendly?” And so on. You’re stuck. There’s no easy way for you to answer these questions.
How’d you end up in this situation? Content management (or lack thereof). You took one type of data (a recipe) and wedged it into the content entry form for another type of data (a blog post). Oh, it’s not your fault — you didn’t have a choice. WordPress (or similar) doesn’t provide a recipe management application. Because it doesn’t, you were unable to add the structure necessary to do interesting things with your recipes. If you had a dedicated content management tool for recipes, you would have filled out form fields with labels like “ingredients,” “cuisine type,” and “course.” Instead, your recipe is one big blob of text in the “body” field of your blog entry object. You’ve denied it any possible meaning it might have had.
This example may be a bit extreme. You may never post recipes on your site. But I’ll bet every single one of you has square-pegged a round hole somewhere along the line. Countless times, probably, you’ve been unable to add structure to data because of the limitations of your CMS. And you know what’s worse? You’ve probably actually taken away structure that was already there.
Have you ever put a photo from Flickr in one of your blog posts? If so, did you do so in a way that maintained the metadata and structure Flickr has so dutifully put into your photos (EXIF data, comments, tags, geocoding, title, descriptions, photographer, etc.)? If not, then you’ve probably taken away my ability to do interesting things with your data. For example, maybe I want to see all blog posts you’ve written that include photos with the tag “shark.” Or maybe I want to see posts that contain pictures taken in London. You get the idea.
By forcing you into putting all your content into one form (the blog entry form), your blog’s CMS has left you no choice but to link up your photo with a simple
img element, thus eliminating any possible meaningful relationship your blog entry and Flickr photo might have been able to enjoy. Instead of being joined at the hip, they barely even know one another.
Anyone who’s ever hacked Moveable Type into working as a photo gallery or portfolio is guilty of this. Don’t be ashamed — I did it, too.
One size does not fit all
The crux of the issue here is that most CMSes — especially simple ones designed to power things like blogs — offer entry forms for only one or two types of content. But your site has tons of different types of content. It’s not just a blog — and even a blog post contains other types of content.
In order for content management to be done well, you really need separate objects (or models, or tables — use your term of choice) in your database. You can’t expect a single object with three fields (like “title,” “body,” and “date”) to handle everything you want to do.
In the news world, many CMSes offer just a few content types (“story” being the obvious big one). People shoehorn things like birth announcements, obituaries, blog entries and more into any place they can fit them, because they aren’t give a choice. But these are actually separate content types that really deserve their own objects and attributes.
So, in my opinion, the single biggest problem with content management is that personal CMS tools don’t facilitate structured data as well as they should. Instead, they give you a few fields and let you figure out how to best fit your content into them.
There’s a good reason they don’t handled structured data so well: it’s hard. The CMS creator can’t always anticipate what kind of content you’re going to have. Allowing you, the user, complete control over the object models is a nightmare, as well. So they err on the side of simplicity, and give you an abstract data entry form with no real meaning.
What’s the solution?
The first, and most obvious solution, is to roll your own CMS. It’s unlikely any off-the-shelf CMS is going to do exactly what you want it to, so why not write your own? With web frameworks like Rails and Django making it easier than ever to create a CMS and constantly iterate changes on it, it’s a very viable option. Still, rolling your own does take time and a certain degree of programming resources everyone may not have.
So, short of that, what to do? If you’re going to look for pre-built CMS, try to find one with a focus similar to yours. If you’re a photo gallery site, find a photo gallery CMS. Don’t hack TextPattern into being a photo gallery. If you’re a forums site, find some good forum software. Don’t tweak WordPress into being something it’s not.
But most of all: when looking for a CMS, look for one that provides you a platform to do whatever you want. Don’t look for one that anticipates what you want and then makes you do it. Your CMS should be a platform upon which you can easily build and manage structured data of any type. You should never have to wedge a photo gallery into a blog entry form — you should be able to simply create a photo gallery object and associate with a particular blog entry. If your CMS can’t do this — or doesn’t at least provide enough of an extensible platform that you could add this kind of functionality with relative ease — then your CMS isn’t really managing your content at all. Instead, it’s getting in the way of you managing it.
Many people are starting to get the idea that structured data, context, and semantics are the key elements of the most interesting, interactive, and fun sites on the web today. However, many of the tools we have for managing content don’t facilitate this sort of site at all. Content management, especially on the personal/blogging level, needs to grow up.
And we purveyors of the personal website need to stop fitting our square pegs into round holes. Content deserves structure. Please don’t do your data wrong by reducing it to nothing more than a blob of text in a blog entry form.