Nearly all websites these days use some sort of Content Management System (CMS). A CMS is a tool (usually web-based) that helps facilitate the process of creating, posting, organizing, and managing the content of a site.
Types of content you may find managed in a CMS include news stories, blog posts, photos, videos, events, and more—or, in many cases, some combination of several different types. While it’s important to understand that content management is a people process, not a technological one, there are many CMS tools available that can help. Which one is right for your website?
The first question you’ll need to answer is simple: do you need a CMS? The answer is probably “yes.” Unless you have only a few pages on your site, a CMS is almost certainly going to help you be more efficient and productive. Besides providing an administrative area where you can post, search, and organize your content, most CMSes will handle “templating,” or flowing your content into an HTML template (or set of templates) you define. This ultimately saves you a lot of time, as you only need to craft these templates once, rather than writing the same HTML structure over and over for every page.
The harder question is: what CMS is right for you? If you squint hard enough, you can begin to see three unique types of CMS products that are commonly used amongst leading-edge web designers and developers:
1. Lightweight, low-cost tools, generally designed for blogging
2. Niche products designed to manage a specific type of content or serve a particular industry
3. Enterprise-level content management systems
A fourth option that is getting more and more popular is to use a web application framework (such as Django, CakePHP, or Rails) to build a custom CMS tailored specifically to your needs. We’ll look at each of these options in detail in a moment.
Considering your content types
The first thing you’ll want to do when choosing a CMS is figure out what types of content you’ll be managing. Do you need blogs on your site? Do you want to showcase photos? If so, should those photos be grouped into galleries? Do you post events? And so forth. For example, if I’m running a newspaper site, some of the types of content I will be managing include:
- Stories
- Photos
- Classified ads
- Birth listings
- Obituaries
- Sports box scores
Structured vs. abstract
You get the idea. Now that you’ve got a basic list of the types of content you’ll be dealing with, consider this: how important is it for this content to be structured? What do I mean by structure? Let’s consider those birth listing for my newspaper site. A birth event has several attributes. Among them: child’s name, parent’s names, date, time, hospital, child’s gender, etc. If our CMS allows for precisely structured data, each of the attributes will be separate fields to fill in, saved as separate rows in our database. This allows each attribute to be stored, searched, and so forth. A less-structured system may simply have a title field and a body field, where you can enter a blurb like, “Janie Smith was born at 8:10am yesterday to parents Tom and Jennifer Smith.” If it’s important to be able to find, say, all girls that were born before 8am at Memorial Hospital, then structured content is a must for your website. If, on the other hand, you just want to show a list of birth events you may be able get away with more abstract, less-structured content.
Additionally, structured content systems will often provide the ability to create relationships between disparate types of content—for example, a photo or sports box score associated with a story. These sorts of relations can be very useful, and are usually not available in less-structured, more abstract systems.
In my mind, this continuum between structured and abstract is a very important consideration when choosing a CMS that many designers, developers, and content producers tend to ignore. Structured content will always lend the most flexibility, reusability, re-mixability, and usefulness to your content. Abstract content may be simpler to maintain and may allow you to go with a less expensive content management platform.
Lightweight blogging platforms
In recent years, lightweight, low-cost (or free) blogging tools, such as WordPress, MovableType, and TextPattern have been championed by many web designers as CMS tools that can be useful for much more than blogs. The reason this holds true is because these tools tend to have a very abstract sense of structure. Designers and developers have been able to sort of “hack” these tools into being what they want them to be, by taking advantage of their less-structured nature.
These tools tend to be absolutely terrific at what they were originally designed for: blogging. When used in other ways, they can start to show their inadequacies. I know of a situation in which TextPattern was used to create a software repository application. Although it works, it’s nowhere near as robust as a tool designed for software repositories might have been. There’s no support for version control, no advanced search tools, and no ability to track what I’ve downloaded and what I haven’t. For these features, we’d need a more structured system targeted at the market we’re trying to capture.
These lightweight, low cost blogging tools are usually quite easy to set up and use. They work great when they’re used within their means. If you find that your site is going to be managing content other than blogs, though—be wary. You may be able to make it work, but you may also be more well-served by a niche or custom solution.
Niche or industry-specific products
Another set of content management tools are those which handle a specific niche or industry’s needs very well. If you can find one of these that suits your site, they’re often very effective and useful. They provide the benefits of a custom solution without the cost of building your own. CMS products in this category can be found for many industries, including Health Care, Education, Journalism, Law, Retail, and more. They tend to provide a much more structured-content approach than lightweight blogging tools and may be more aware of the roles of people in the organizations of their target market(s). This knowledge results in more streamlined, efficient products when used by the industries they’re designed for.
If you can find a good CMS product aimed at your industry, they’re usually a great choice. However, it’s not advisable to choose a CMS product aimed at a particular industry that your company doesn’t quite fit into. Usually, these tools work great if you use them as intended, and not-so-great if you start trying to go out of the box.
Enterprise content management
Enterprise-level content management tends to go above and beyond the duties of simpler systems, offering tools like content revision control, security, preservation and destruction, and access rights management. While simpler systems may offer some of these features, Enterprise Content Management systems (ECMs) tend to be far more robust. At the same time, these systems are very expensive, much more complicated to manage, and are often seen as overkill for many sites and organizations.
ECM systems often focus on unstructured content, but may serve structured content needs, as well.
Custom solutions using web application frameworks
As rapid web application frameworks like Django, CakePHP, and Rails become more and more popular with web developers, an increasingly relevant solution to content management is to “roll your own.” Building your own content management system (or having one built for you) is usually cheaper than an ECM, but more costly than lightweight or some niche products. The advantages to the custom solution are much the same as the advantages to having a suit tailored compared to buying one off the rack. With a custom CMS, you’ll have a product that does exactly what you want, suits your content perfectly, and is yours to update and change as needed. These solutions can be as abstract or structured as needed, and can generally be built pretty quickly by efficient developers.
The only real disadvantage to custom solutions is maintenance cost. While you probably won’t blow a ridiculous amount on having the CMS built, you may find that you need to hire a developer or keep a development agency at arms length for support, updates, bug fixes, and the like.
The in-betweens
As you might expect, there are products that blur the lines between these categories. Expression Engine, for example, looks and feels a bit like a lightweight blogging tool, but allows for a great deal of customizability, allowing you to almost craft a custom solution. Drupal also straddles the line between custom and canned. There are also out-of-the-box products built atop web application frameworks (such as SimpleLog, built on Rails, or Ellington, built on Django) that can provide a sort of best-of-both worlds by allowing you to get up and running quickly like a more lightweight system, but have more control and customizability like a custom solution.
Conclusion
Chances are, you need a CMS. Choosing a tool for your site is a decision that shouldn’t be made in haste. Putting the time in to identify the different types of content you’ll be dealing with will help you in choosing the product that’s right for your site and organization. You’ll also want to figure out where you need to sit in the continuum between structured and abstract and the continuum between pre-packged and custom solutions. Of course, your web design/development agency should be more than happy to guide you in this process.

I’ve recently gone down a route that is kinda “roll your own”, although without any real software behind it. The only way I’m able to pull this off is that there are at most two people editing copy on the site - the rest is dynamically generated.
Essentially I get to create templates - html files - that I sandwich around code. We also have a couple of small tools for managing the dynamic parts, and then there are blogs too. So it is disparite and in pieces, but works well. It helps when the only people touching HTML actually know HTML and how to code.
Excellent rundown of all of the available options. I am glad that you specifically pointed out the need for context in certain situations. Not shoehorning data, but building the data layer to your content needs.
There are many different options out there, and each need to be weighed in carefully. What tools are needed? How complex is the CMS? What is the learning curve (if you are deploying in a corporate environment, especially)?
I think too many times people jump at the first sign of a CMS, even if it doesn’t remotely fit their needs.
This is an article I could refer clients who are considering CMS options. Listing of options, pros and cons, and how to move forward. Wonderful.
bq. This is an article I could refer clients who are considering CMS options. Listing of options, pros and cons, and how to move forward. Wonderful.
Thanks, Nate. That’s exactly what I was going for. :)
I recently stumbled across simple CMS. It doesn’t have any special features, but simplicity is just great because I can use it on any website I want.
http://www.instant-update.com/
I tend to always choose and recommend the hybrid solution when it comes to choosing a CMS because: - The enterprise applications (Sitecore, Vignette etc) are often too pricey to implement, and require lifelong dependence on the vendor for support, or steep learning curve for in-house developers (who might leave the organization anyway) - Light-weight solutions that can be implemented in a week, but end up in a dead-end soon after because they are not scalable enough - Roll-Your-Own is infinitely flexible provided you know exactly how to design the applications. I shy away from reinventing the wheel, of missing out an important design element that is obvious to tried and tested systems.
My opinion is biased, but I value the balance of flexibility and ‘structure’ provided by the Drupal framework. The application core is well thought-out and lean, there is vibrant community and commercial support with pre-built, and roll-your-own modules to make it do anything you want.
I’ll put in a vote for Radiant (http://www.radiantcms.org/). Radiant is by far the most straightforward CMS I’ve ever used.
I also wrote a tutorial a while back: http://www.artofmission.com/articles/2006/06/06/radiant-cms/
I think it’s worth mentioning that there is another dynamic to consider when you’re exploring and testing various CMS systems: intuition and speed of learning that CMS.
That is to say- some people pull up Wordpress, take a look at “the loop” and immediately get it. They look at plugins, view the code, and start hacking away. My own experience with Wordpress was not like this. Often times, it felt like I was trying to fit a square peg in a round hole. I tried some other open-source PHP systems and those were okay. Joomla felt bloated. Drupal felt backwards.
Then, through some contract work, I had to start using the Smarty templating engine, which immediately “clicked” with me. After that project, I wondered if there was something out there that would allow me to harness the power of CMS and offer its own type of templating engine that was less blog-oriented and more flexible.
<a href=”http://21degrees.com.au/products/symphony/”>Symphony</a> seemed like a step in the right direction but XSLT was a little hardcore for me (at the time). Then I found out about Expression Engine through <a href=”http://www.digital-web.com/articles/veerle_pieters/”>Verlee</a> and that’s when the magic happened.
If you can get over the initial “WTF!” when you see the back-end of it, you might come to appreciate its power in the way I did. I’m no developer but I do understand templating engines pretty well. Give me a bunch of functions/actions and throw me a templating engine and I’m good to go. That’s how I see Expression Engine. A huge CMS that you can shape into whatever you want and then use their well documented templating engine to bring it all to the front.
There are some freelance/fun projects I have been able to tackle myself (sans a developer) that I would have never even attempted without it. And it’s $100 which is nothing for an industrial strength CMS system that has all kinds of plugins, documentation, and features. Also, unlike WordPress, it feels like the application layer is much more separated from the presentation layer.
Textpattern might click with you. Some swear by Wordpress. Ultimately, Expression Engine just felt more powerful and intuitive for me and that’s what matters.
Great information about Content management system. I have not a chance in exploring other systems and this article has given me information on what to look out for and check in other content management systems.
I’m a developer and I agree that for small things an off-the-shelf CMS is just fine, However, if you want a true integration with your site + ability to maintain the overall project the custom solution is better.
Great article!
Very good text. and valuable informations. Thank you.
They’re all good products. The PHP-based solutions are the easiest to deploy. If you go with something based on Ruby, like Radiant, then your hosting options are limited and can get expensive.
But Radiant can be great for rapid prototyping of simple sites.
I should mention that Frog CMS is the PHP version of Radiant CMS and works just as well if not better.
So where would you personally place Plone in this overview ? Interestingly enough it’s exactly this pluggable application philosophy we like: adding social features, partly user generated, partly editorialized elements, collaborative projects seems to be quite a complex matter in Plone.
Is there ever a marriage between Plone and Django possible ? Or perhaps better said between Zope3 and Django ?
Fantastic article. I’ve been researching web CMS’ for several years and this article was a great combo of advice and insight and experience. So much to choose from— CMS, EMS, CRM, zope/plone, drupal, django, rails, wordpress, Egroupware, Wordpress.
I’ve come across a very interesting Content Management System, Rapids. Its user friendly, easy to deploy, with lots of updated features. It can be viewed at http://www.nagsoft.com/content-management-system.asp