A while ago Jeff Veen posted a rant about open sourced Content Management Systems. It took a while to get around to finding it (OK, so I was a little busy over the past weeks, sue me) but it resonated enough with my own experiences from playing around with several that I felt compelled to add another voice to the chorus.
As usual, Jeff, you’re spot on. (Sorry it took so long to get here.) I’ve looked at drupal, but never tried to install it. Tried and failed to install Xaraya (this despite over three decades of experience in programming; I’m sure I eventually could have made it work, but since there were more CMS options available to try than I had time available to poke around in the code, I moved on). I have installed and used Mambo, PostNuke, Xoops, WordPress and a couple others.
I currently use Mambo and WordPress regularly (this blog is WordPress, for example) depending upon the site, though I have to admit the best design samples I’ve seen for a CMS were out of Xaraya. Most of the designs are so depressingly similar it’s hard to see they came from different systems.
To add a bit to Jeff’s context, Mambo installs easily, divorces admin from user login, and doesn’t insist on login boxes if you don’t want to offer them. It also supports multiple page templates. Downside: it’s a dickens of a learning curve and the docs are below par.
I think it was a drupal developer in the comments on Jeff’s blog who claimed you needed to pre-wrap things in lots of divs to give designers the opportunity for drop shadows, rounded corners, etc. That’s incorrect, but it highlights a problem with most CMS’s.
As a site designer, I come from the hand-coding tradition (I still use BBEdit more than any other tool in the box). I develop “templates” (for lack of a better term) for the types of pages in the site I’m working on, and when I’m coding a new page, I start from one of those templates and add content to it. Virtually no CMS behaves this way. Instead they insist on not only retrieving the content, but when they do they’ve already attached all the surrounding code they think I need to it as well, without having the first clue about what precisely I’m wanting to do with the content.
I’ll lapse into Mambo jargon here, but I’ll define as I go, to more fully illustrate the point. Every module (simply put, a module is a logical section of a webpage, such as a menu, a login box, a news item, etc.) is associated with a position code, which the designer uses when building the page template, telling the system to put modules with this position code here, those with that position code there, etc.
Now if that actually described what Mambo was doing it would be quite acceptable. But, alas, Mambo (and every other CMS I’ve tried) is doing more, and that’s what causes designers to tear out huge chunks of hair.
Specific example: there’s a position code in Mambo called “inset.” I tried to use this to position a small box, floated right and bordered like a sidebar, on a page, letting the page’s “normal” content flow around it. Alas, the main content came pre-wrapped in a table by Mambo (note please the same problem derives from it being pre-wrapped in a div, so table-based design is not the issue here) which meant that it didn’t wrap around the sidebar like it should, but instead left this big void below the sidebar.
If a piece of content needs to be wrapped in a table/div or three to achieve an effect I want it to have, for pete’s sake let me do the wrapping. I know how many divs I need and why I need them, so just get the bleeping bleep out of my way and let me do my job. I’ll only need to do it once in each template. How many divs I use, and why, is dependent upon the template, not upon the content, so don’t marry the design structure to the content!
What about the casual user who may not know that you need an extra div to achieve some effect? First, every CMS ships with a few templates which can be used as is, modified, or learned from by this class of user. Second, if they truly don’t know why the extra div is needed, just what makes you think they’ll know which of the divs you’ve provided is the correct one to style? Move the code required by the design out of the content and into the supplied templates. That’s not too much to ask, is it? To put the design into the templates and keep the content items limited to content?
I mean, the job of the CMS is to manage content. Content isn’t divs and design tables, it’s words and pictures. (I can hear the standard programmer comeback, “everything’s content” right now. If you truly believe that’s a useful statement when made about web design, then you should stick to programming and stay away from web design.)
Another bad example from Mambo is the calendar. Rather than use the same CSS file as the rest of the site, or even allowing me to specifiy which one I want it to use, it has its own, hard-coded CSS file reference. Which means either I have to rewrite the included CSS file (which would then be subject to being overwritten if I ever update or reinstall the calendar module) or I have to override the included styles, which is made harder than it should be because the Calendar insists on loading its style sheet after the template’s stylesheet, hence I have to work “uphill” (against the cascade).
Please note that while I’ve been picking on Mambo here, I don’t mean to say it’s worse than the others. In fact, I think it’s one of the better systems. The point I’m making is not that it’s bad, but rather that it shouldn’t be reckoned to be any sort of great achievement to be one of the best of that lot.