Demands of the Ideal: The Perfect CMS

There are a lot of content-management systems out there, but none that I have found has been able to do all that I want it to do. (Note: I wrote this article a year ago, but did not publish it, thinking it incomplete. Well, the need is still real, so I am publishing it!)

Driving principles:
  1. It’s my site. I want total control.
  2. It should be easy to use.
Smart server-side caching
For all users who are not logged in, just generate the page one time and cache the output. After a set period of time and also after changes to the site, dump the cache.
Powerful yet simple skinning
It’s my site. I want to be able to control every character output to the browser. The ideal CMS would provide concise documentation to let me know how to make a powerful template, how to change the output of forms, etc.
Smart client-side caching
Drupal’s absolute worst offense is setting immediate cache expiration dates for the admin pages. When creating or editing content, if you (like I did) click a link that will explain the input format, it opens in the same window. Hit “back” and all your changes are gone. There should be two layers of protection here: On navigating away from an unsaved form, you should get a JavaScript confirm() dialog box warning you that your changes may be lost. Secondly, there is no reason the page has to expire so soon anyway. Those global quick expiration times just force your server to do more work.

Of course, all pages, unless I say so, should probably just cache on my machine anyway. It reduces stress on my server and speeds up the operation of the Back button.

Hierarchical structure
I should be able to say “The page ‘hacks’ is under the page ‘CSS’” and let the CMS automatically:
  1. Position it appropriately in the menu
  2. Assign it the URL “/css/hacks”
  3. Place it in the RSS feed for the CSS section of my site
  4. Consider it related to other articles under ‘CSS’”
  5. Tag the article with “CSS” and “web design”
  6. Generate breadcrumbs navigation (if so desired)
Drupal makes me do all of that by hand (introducing possible errors like “/ccs/hacks”), and some if it is not even possible.
Page types
It’s only logical that pages should fall into different categories, or “page types.” Some pages should allow users post comments, for example, while error pages should clearly not. (Neither should they have page hit counters.) The site admin should be able add and modify these page types.
Highly configurable input formats
If I want to be able to allow users’ comments to link to Wikipedia articles by using [[Article]] syntax, or even wikipedia[Article] syntax, I should be able to let them, without reading manuals for days to figure out the grisly innards of my CMS.
Semantic, expandable WYSIWYG
You know what? After I allow my cool syntax for linking to Wikipedia, I’ll want users posting comments to know that. It should be easy to add a button to a WYSIWYG text editor to let them link to Wikipedia with my syntax. Furthermore, I hate WYSIWYG editors that only have one Italic or Bold option. Dammit, this is 2006, and I’ll never be able to write for A List Apart if I don’t use <strong>, <em>, <var>, and <cite> where semantically appropriate.
Automatic, default Unicode support
It should also automatically convert Microsoft’s nonstandard, moronic “smart quotes” characters (which often show up ?like this,? as question marks or hollow blocks, on the web) into the appropriate real Unicode/ISO characters.
Fabulous Comment Support
  1. Allows users to reply to other comments
    • But the admin can turn this off
  2. Allows the admin’s comments to be visually distinguished from normal comments
  3. Optionally ties in with third-party comment services or standards
    • Gravatar
    • CoComment
    • Whatever
  4. Spam Control, ideally expandable, but should be strong right from the get-go.
  5. Control which pages can accept comments
    • Per-page
    • By page type (e.g. not on error pages, but on articles)
    • By time (e.g. pages newer than 3 months)
  6. Pingbacks & Trackbacks
I have more, but these are the biggies. If anything nailed all those items, I would switch over. So! Know of one? Have anything to add to this?

(Demands of the Ideal is a reference to The Wild Duck by Henrik Ibsen.)


August 1st, 2006. (Updated: January 09, 2008 at 9:51am.)
Alan Hogan (@alanhogan).  Contact · About