owen

There are a ton of these things popping up these days, these small-footprint flat-file "CMS" tools, and I'm here to tell you that they are not content management systems.

Yes, they manage content. I suppose. I mean, you could say they manage content by allowing you to organize your own content in some pre-determined file structure, if that's what you mean.  If you consider that "content management".

If you couldn't tell, it sticks in my craw that these guys come along and write a 200-line "CMS" tool, slap a pretty one-page site design on it, then announce it as a new product. Mostly, they seem to be produced by designers that want to show off their "see? I can write code, too" cred (um, usually not), or as a side project by some developer that just wanted to hack something quick together and never intended this tool to be anything more than something used at home for himself.

Why aren't these tools real CMSes? Well, any fool can argue the semantics, that a CMS is a system that lets you manage content, and that any tool that manages content in some way is a CMS. Sadly, it's just the fools doing that. Even worse, often the people writing these little tools are under this same misconception.

There are a few primary characteristics of a real CMS, the most important one is authentication/authorization. It should somehow be possible to grant and deny create/read/update/delete access to users. This is not just for writing content but also for reading content. The CMS manages who can read and write the content that is being managed. This is the management part of the CMS, which is (for whatever reason) being completely overlooked to put the overemphasis on the content component. Without authentication/authorization, your system is merely a content publishing system, not a content management system.

An example of a good familiar CMS is Drupal. It has the ability to assign grant permissions to users on a granular per-content-unit basis. Habari has similar capabilities. Even WordPress has a rudimentary password-based system for restricting access to posts built into the core offering. Most static-site tools would implement write permission based on... what? Write permission to a git repo? Or execute permission on a server process? That permission is not really part of the tool, is it? That's not management.

There are a few other things that bother me when people get all gushy about some new static site building tool. One is localization. Granted, these tools are likely only ever going to be used by one person, so why would you really need to translate the tool into a language that is not the same as the coder's native tongue? Why would you bother to provide authors tools to translate internal and theme elements to their own language? Oh, I suppose I answered my own question there.

A good CMS has on-site search capabilities. This goes hand-in-hand with faceted data, which is something that, apart from the simplest blogs, I've implemented on practically every site I've constructed.

Sometimes you need to say "the category of this content is X" so that when you want to look for all of X, the related content is returned. Providing metadata for your content is something that a good CMS does naturally. Constructing extra metadata fields only for specific types of content is a common task for which a CMS is required. It may be possible to add faceted metadata to static content, but the ability to relate content elements to each other implies a tool - this is not something that would be easy without such a tool.

Some of these static site creation tools are basically the same thing as a SASS processor. It watches a directory for changes, and when something does, instead of converting SASS to flat CSS, it converts markdown (aye de mi!) into flat HTML. I wouldn't call a SASS processor a CMS, either, so why would I give these tools that much credit?

I guess my concerns are fairly petty, and potentially entirely semantic, but nothing irks me more than spending several years inventing and improving a true CMS to have someone come along and announce, "I just re-invented the CMS, so you can throw out your old, clumsy one." Not only does it have no features, but it forgot some of the truly basic ones.

I don't begrudge anyone who would switch his own simple mostly-static-already blog to one of these static site tools. They can be useful for exactly that job, and throw off the chains of maintaining some database and the hosting thereof. But please don't be under any delusion that these tools are CMSes, and if you write one, be sure you don't over-imply its non-existent CMS characteristics. I simply can't wait until my next client tries to get me to build a content-heavy site in "this new CMS" he's heard about.