Gather ’round friends, and I’ll tell you a story that is pure fabrication on my part, and also probably how it happened: Once upon a time, around 1995 (as far as I can figure out from searching around the web), some poor guy who worked as the “webmaster” for some large company was putting nearly every written piece of marketing content they had online. He was doing this because someone in management figured it couldn’t hurt, and he didn’t have that much else to do.
As he wrote endless lines of HTML code by hand, he thought, “There has got to be an easier way to do this.”
He began to imagine a system that could, perhaps, manage content more efficiently, and take some of the pain out of his job. Since he knew some basic scripting, he started to lay the groundwork for what would become the first Content Management System.
That’s how a lot of humanity’s problems get solved: people get bored, and sick of their work. In response to this stimulus, or lack thereof, we now have more CMSs than I personally care to count. They’re everywhere, and they can do just about anything. Now, the problem with this kind of endless choice is that, well, people don’t know where to start. How do you pick a CMS anyway?
That’s what this article is about. I’ve tried to make it as easy as possible to understand what a CMS does, and what kind of CMS you’ll need for different kinds of websites.
What is a CMS, exactly?
Think about a website. Any website. What’s on it? Stuff like words, pictures, videos, maps, contact forms, quizzes, polls, and more. All of that stuff (which we call “content”) needs to be organized.
It needs to be made available, and easy-to-find for the people who actually run the website, and for the users who browse it. It also needs to be easy to add more content, delete the stuff you don’t want anymore, move it around, or rename it.
Most CMSs allow only a select few to manage content. Community CMS like forums and social media sites allow every user to manage their own content, and then make that content available to everyone else.
Yes, you could do all of this manually. For many smaller websites, this is exactly what people do: they mess about with files and folders, and edit their pages in a plain text editor (like Notepad, but they usually use something more complex). If you only have, say, five pages, and you know what you’re doing—or can pay someone who does—then you’re set.
You probably don’t need a CMS.
But if you can’t afford to hire a professional, don’t have the time to do it yourself, and/or need a site that is larger and more complex, a CMS is worth it. It simply isn’t practical to build a website that big without something to automate at least a part of the process.
If you need to have more than one person contributing to a website, you absolutely need a CMS. Giving people access to the raw files would be a recipe for catastrophic user errors. Better to give them a system that allows them to add content without accidentally destroying anything important.
Who is this for?
This article is for web design clients, business owners, and other people whose eyes glaze over when you start throwing acronyms around. Designers and developers can look these things up for themselves, and will usually know what the buzzwords mean.
But if you’ve ever gone CMS shopping and thought, “Well that all would sound very nice if I knew what the heck they were talking about…”, then this article is for you.
I suggest having a read, narrowing down your list of options, and bringing it to your designer and/or developer to figure out which is the best option for you. If you’re in a large enough company that you have a whole design and development team, you should probably let them narrow down your list of options.
Types of content management systems
Now, the thing about building websites is that nearly everybody has different needs. Sure, you could try to build a CMS that can meet every single one of these needs. Plenty of people have tried.
…choose a CMS that meets your specific needs as closely as possible
These platforms tend to be massive, slow, riddled with security issues, complex to use from both the front and back ends, and a general pain in the rear. Also weirdly popular. And actually, no, I’m not talking about WordPress.
So the generally smarter solution is to choose a CMS that meets your specific needs as closely as possible. We’ll be talking about that more, later. First, we should talk about the kinds of content management systems that you’ll find out there.
I’ve come up with a list of the most common categories of CMS. Not only are there more CMS than I can actually list, there are more kinds than I can list. This is because there are custom CMSs out there made for every conceivable need that someone might have.
For the sake of your time, and mine, I’ve stuck with the most common categories.
Managed vs Hosted
Before we move on to categories like “blogging software”, or “e-commerce”, you need to choose where you want your CMS to be hosted. Some CMSs are provided as a service, and everything technical is handled by a third-party company.
They have several advantages, including active support, constant development, and you never have to worry about updating the software yourself. Security is handled for you, too. There’s a lot to like.
Their disadvantages include a lack of control over certain things. You may not be able to make your site look or work exactly how you want it to. You don’t necessarily own your own data. If the company developing the platform decides to ditch a feature you like, you’re on your own. If they have to shut down operations for any reason, you’re on your own.
That said, many of these services have thousands, sometimes millions of happy customers. You could be one of them.
On the other side of the coin, we have “hosted platforms”. This kind of software can go on your own server, or a third-party server that you rent from someone else. Examples include the hosted version of WordPress, Magento, and Concrete5.
The primary advantage of these options is control. You can make everything work exactly how you want. You can often even extend the functionality yourself by building your own themes and plugins. If it’s an open source CMS, or you’ve bought the right kind of commercial license, you can even alter the basic functionality of the software itself, though this is usually inadvisable.
Updates can tend to undo all of your hard work.
The other advantage is the price. Managed platforms usually cost a monthly fee. Hosted platforms usually have a one-time cost, or no cost at all.
The disadvantage is that you’re on your own right from the start. You, or someone who works for you, have to install the software, keep it updated, and look after every technical detail, including security. You may find yourself paying for some sort of commercial support in any case.
However, for those people and organizations that want to retain full control over their experience with the software, their site’s functionality and aesthetics, their data, and the underlying technology, there’s nothing better than a hosted CMS.
Databases vs flat files
It’s worth noting that hosted CMSs also get divided into two types. In this case, they’re divided by the way they store the site’s settings, content and other information. This section is going to get more technical than business-oriented, but understanding this information will help you to make more informed decisions about the CMS you choose.
The most commonly-used CMSs, for the moment, all run on databases, which are managed by database servers. In this context, the database server is just a separate program that is designed to efficiently organize information, not necessarily a separate computer. Though… it can be on a separate computer, because, you know, nothing’s ever simple.
Basically, database servers are made to organize a bunch of information inside of a single file, and retrieve specifically requested information at a moment’s notice. They’re fast, efficient, and logical.
Once upon a time, this was the preferred method of organizing all information on a site because it’s a bit easier on the actual hardware. However, with advancements like caching and content delivery networks (CDN), this is no longer the case.
The alternative to using a database is to keep all of your information in “flat files”. The difference here is that all of the site’s content—pages, blog posts, etc.—is kept in a hierarchically organized set of text files. The content is stored and retrieved directly by the CMS, without an intervening database server.
Grav is one of the more popular new flat-file CMSs.
This approach is becoming more and more popular with content management systems for small-to-medium-sized sites, and static site generators (more on those later). These systems are sometimes easier to install, but the main advantage is that they can be used on more types of servers and web hosts.
Also, using flat files instead of a database server can sometimes reduce the cost of hosting. This is especially true if you’re using platform-as-a-service (PLAAS) hosting like Amazon Web Services, Microsoft Azure, or Heroku.
A framework CMS is designed to handle just about any task you care to throw at it, so long as you have some programming skills, or a developer on the team. What it does is provide a basic, well… framework… for you to build your own CMS, usually with the help of modules or plugins made by the developers and the community.
The most well-known example is Drupal.
This is the kind of CMS you choose if you have specific, custom needs, but don’t want to build everything (especially the admin UI) from scratch. It is not the kind of CMS you pick if you want to get up and running fast. Framework CMS are often chosen by large organizations that need as much flexibility as they can get, and that have big budgets, or in-house design and development teams.
One of the more popular kinds of CMS, blogging systems are everywhere. Nearly every developer who wants to try their hand at building a CMS builds a blog engine at some point. Most of these don’t take off, but once in a while, you get a big hit.
There are blog engines for every programming language and hosting platform. There are blog engines designed for every possible form of blogging you could imagine. There are quite possibly thousands of hosted blog engines, and easily hundreds of managed blog platforms.
Some blog CMS, like the aforementioned WordPress and the newer Ghost, have both hosted and managed versions.
The big three kinds of blogs are text-based blogs, photo blogs, and video blogs. I won’t go into too much detail on this as the names are fairly self-explanatory. Most blogs are text-based, which can obviously have embedded images and video as well. The difference is mostly about the focus of the blog. In other words, if photos are the majority of your content and the primary attraction for your users, it’s a photo blog.
An example of a Ghost blog.
Some CMSs aren’t just about publishing your own content for your audience to see. There are many that are designed to encourage more user interaction, with a strong focus on building a community of regulars. These come in three main varieties:
If you spent any time just browsing the Internet in the pre-Facebook era, chances are that you’ve run into one of these. For everyone who was doing real-life stuff at the time, or is just very young, forums came before Facebook pages, and are infinitely better, if you can get people to stick around.
Basically, it’s a CMS that allows any member to start a discussion with other people. These discussions are usually sorted by topic or categories set up by the site’s administrator and/or moderators. It’s slower than a Slack channel, but the entire conversation is there for everyone to see, and it gives people more time to formulate replies.
Due to their past popularity, there are many, many software options for people who want a forum (heck, there are forum plugins for WordPress), but only a few big ones. Invision Power Board has been the leading commercial solution for years, and phpBB is the biggest open source alternative.
These are a bit like forums, only instead of people starting discussions with their own words, they submit news stories. Users can then leave comments on the news board itself.
Once upon a time, Digg was the big news board in town, especially for the tech crowd. In time, that mantle passed on to Reddit. If you’ve never been to a news board, you should check out Reddit to see how it works. Or if you want something more design-focused, check out our very own Web Designer News.
Most of these sites seem to have custom CMS. The most well-known consumer option is Telescope, which is free and open source.
That’s right, you can make your very own Facebook clone with any one of a variety of managed services or hosted CMS. Or, you could build a dating site like OkCupid. Mind you, managing a social network of any kind is hard work, and you’ll likely never get as big as the big names.
Most people who build their own social networks these days have a very specific theme or central cause in mind, much like those who build their own forums and news boards. So, all of these are great options if you have a niche. Or, you know, just start with a Facebook page.
Like news boards, most social networks are custom-built. The best free/open source option I’ve found so far is Dolphin Pro. If you don’t mind paying someone to take care of the technical stuff, you can build a social network on the Ning’s managed platform.
E-commerce systems are usually massive and complex by design. I mean, sure, the idea is simple: they let you sell things online. The reality is naturally a lot more complicated, as you might expect when running a business.
The big-name e-commerce CMSs don’t just show your products on the front end of a site, and put a “buy” button on the screen. They help you handle inventory, shipping, currency conversion, payment processing, taxes, customer service, and anything else you can imagine. They’re built to handle business, which can easily be as complicated online as it can be in person.
This Magento demo is courtesy of IDW.
General CMSs have a little bit in common with bare-bones CMS in that they’re made to handle a variety of needs (usually business needs), and are quite customizable. They are also usually extended or altered with plugins and modules.
The difference is in the user-friendliness. General CMS are made to be handled by non-programmers. Sure, coding expertise is helpful, but even a basic knowledge of HTML and CSS will take you a long way. Even that’s not entirely necessary though, as they’re usually designed to be fairly newbie-friendly.
Plugins often include simple things like basic blog modules, image galleries, add-on commenting systems, and that sort of thing.
There aren’t many big names in this category, because these CMS are, in a way, the spiritual children of the old, massive Portal CMS (see below). This category began as a sort of movement to make content management simpler.
Portal CMS hail from a time when every website wanted to be the next Yahoo(!), or AOL. This was back in the day when, rather than trying to get everyone signed up to the newsletter, every webmaster with ambition wanted their site to be your home page.
These sites were usually designed to show loads of information at once, anything you might possibly want from around the web. Thus, they were called “portals”. Most were custom-built, but of course people wanted ways to build their own.
One of the early options for this was Mambo, an open source CMS that died off a few years back. Now, many businesses swear by its successor, a fork of Mambo named Joomla.
Nowadays, portal CMS have been pared down a bit, as have most websites in general. They’re used to power websites for large companies who need their CMS to do literally everything. Joomla, for example, has modules for just about everything you can think of.
Naturally, this results in incredible complexity, and portal CMS often have quite the learning curve for administrators, designers, and developers alike. I personally have an aversion to that sort of complexity, but there are cases where it is necessary, and even invaluable.
If you are going to use a portal CMS, a developer is not absolutely required, but you should hire one anyway. Better yet, get one that specializes in the CMS you’ve chosen.
Site builders have a lot in common with general CMS, in that they are designed to simplify the whole process of dealing with content for the site’s administrator more than anyone else. The difference is that they are also designed to make designing your own websites easy for anyone.
Think of these as more modern, and usually much less frustrating, versions of Dreamweaver and Frontpage. If that sent a shiver down your spine, don’t worry. Site builders have gotten a lot better.
They largely adhere to best practices and web standards. Even if they’re usually not as customizable as a site built from scratch, they usually offer more than enough options for the average website owner.
Of course, that depends on the site builder. They range from the dead-simple, template-dependent Wix, to the far more complex and customizable SquareSpace, to tools like WebFlow, which are all about designing your site from scratch, albeit with point-and-click tools.
Static site generators
Static site generators are not for the faint of heart, and almost always require some form of programming knowledge to implement. They usually don’t come with a user-friendly admin interface. Typically, content is created and stored in text files, often formatted in Markdown, and compiled into a static site for the server.
The upside to this is that static sites can be hosted on just about any kind of server. You don’t need server-side technologies like PHP, Ruby, or NodeJS to run them. They put less strain on the server itself, and often load quicker.
On the admin side, you get a lot of the data management features of a regular CMS. The data you store can be called up and displayed in a variety of ways, you can use templates, and so on. This allows you to manage blogs, or large and complex sites with a minimum of hassle, compared to hand-coding everything yourself.
The obvious downside is that whoever manages the content and updates the site will need to be comfortable putting all the content together in text files. They may also need programming knowledge.
There are dozens of semi-popular static site generators out there right now. The most well-known, at the moment, is the Ruby-based Jeklyll.
That’s right, you can get your very own wikis up and running, and for free. Most of the best wiki software is available under one open-source license or another, including Mediawiki, the software that runs Wikipedia.
Naturally, these are large, often very complex CMS, with advanced systems for determining who is allowed to edit and change what. Their use case is rather limited by definition: a wiki is a massive, encyclopedia-style collection of information, usually used for reference.
That said, you can make a wiki on any subject, and large organizations often use them to display support-related information for their products.
These are designed, well, for enterprises. They’re huge, they’re complex, they’re meant to handle massive amounts of information. I’ll be honest, having never worked in an enterprise-level company, I’m not entirely sure how they all work.
The general idea, as I understand it, is that they rarely have much to do with customer-facing websites. Enterprise Content Management (or ECM) handles all of the documents relating to the processes that a company uses to get things done. They serve primarily as a resource and reference point for employees.
They are also being used to store documents, both those regarding the company, and the customers. For example, if you handle a lot of contracts, you might store digital copies of them in an ECM, sorted by customer, for easy access. ECM, then, acts a lot like a digital file room.
Those times when they are used for customer-facing sites, those sites tend to be massive, as enterprise CMSs are designed for handling that amount of information. Think of University sites, government portals, and other sites like them.
Last, though certainly not least, we have the custom-built CMS. These come in every shape and size, and are designed for every conceivable purpose.
The pros are fairly obvious. You get exactly what you want, and only that. This usually results in a smaller, faster CMS that just does what you need it to. However, if you have the need, and the budget, you can always have your favorite developer build more functionality on top.
The downside is that your support options will be severely limited. If the original developer is no longer available, a new developer might have trouble making sense of the old code.
Also, when server technologies get updated, a custom CMS will sometimes need to be adapted to them. CMS developed by a dedicated third-party will be updated automatically. If you have a custom CMS, you’ll need to hire a developer to do it.
Custom CMSs are often best suited to companies that have their own in-house development team to work on updates, upgrades, and security fixes.
Update: You can now read part 2 of this series.