Content, Content, who’s got the content?
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.
What I dislike most in CMSes is templating system.
Altough there was a claim that Drupal can use different techniques, I
think I’ll go along with modifying WP to implement “true” templating as I see it.
The problem with templating systems is the problem facing all user interface designers: How do you make it easy for someone with little knowledge yet powerful enough for someone who really knows what they’re doing?
Too many templating systems take the approach of doing everything for you, which is fine for the beginner but frustrating for someone who really knows what they want to do.
For example, the first product along these lines I tried out was Radio Userland. It was a clean system, easy to use, but I wanted to move away from table-based design, and it wouldn’t let me. It insisted on doing things its own way, despite what I wanted. So I dropped it as a failed experiment.
I tried a lot of other packages along the way, and they had similar flaws. I probably haven’t explored drupal as deeply as I could, so I don’t want to comment too heavily on it, but it seemed like it was way too complicated for me to set up the way I wanted (just an impression, and I freely admit it may be a mistaken one). I was pointed to drupal by a friend I trust who said it was a more secure CMS than the nuke family, which I had already found wanting.
WordPress has its limitations, but it was extremely easy to set up and use, so I settled on it for this blog, just to get it up and runnig quickly. It seems a good light duty CMS. I tried setting up a design similar to my chess history site The Chessmill and it was a pretty close match, but there were bits and pieces of it that wouldn’t fit well in the WP scheme of things.
All I want is a way to get the content, without *any* sort of design-based wrappers back out of the CMS. Yes, I suppose I could just use Server Side Includes to do this (I’ve done it that way before) but that still requires me to keep a set of page templates around and has a larger manual component, in that I would have to manually edit the navigation include files to reflect the new pages, etc., and it makes it harder for a client to take over maintenance of the resulting site, meaning I have to do more drone work like coding new pages and less creative work. Not an attractive prospect.
Page structure, design, and site architecture are my responsibility; I hate it when a tool gets in my way and won’t let me do what I want the way I want it.
One interesting bit, which I’ll visit in a future entry: This comment/rant opened up a dialogue with one of the Mambo developers which may bear some interesting fruit.
I am one of the many people looking around for the ‘perfect’ CMS, and until now I have settled on Movable Type and Mambo. I started using Mambo a few weeks ago, and ran into exactly the same problems as you. I feel out of control and have simple design issues that cannot be done. I hope as more and more people write about their CMS wishes, one day we’ll have the flexible system we dream of. I too have good hopes on future versions of Mambo.
“How do you make it easy for someone with little knowledge yet powerful enough for someone who really knows what theyâ€™re doing?”
That’s precisely the point. I was testing TextPattern (quite easy install and use). I found the templating system extremely easy to use, on one hand, but also overly reductionistic when it comes to more personalized design (I’m still exploring it, correct me if I’m wrong). For instance when you want to print an entire link list you would use something like “linkList” as a template tag. I don’t se any methos here to include wrapper divs, tr’s or whatever element I want in my link list. I understand, however, that such simplicity comes in very handy when in a hurry or you’re not into web design. Maybe the only practical solution is to have simple and advanced templating options in a CMS?
I think people need to get something here these items are built to fit their customer base….clueless users. If you want something to do all the things you want…i suggest you start building your own.
Being an asp/.net developer i create my own from inspiration to do what exactly i tell it to do keep the content miles apart from the layout.
If you’re all not lazy developers (don’t take it the wrong way) why not build your own, if you’re truly developers get inspired..but then you’re all designers.
Anyway my point here is somebody/people built these tools for their own usage and offered them free to the web..and then you start complaining it’s not good, it does this, and does that well i guess we’ve heard it all before. Remember when MT introduced their new pricing plan people started defecting, whining, and wailing. Majority went to wordpress
If you want open source, when you build sites for your clients don’t charge them because the tools you’re using are free…don’t argue.
I have nothing against open source, just the ungrateful people that complain when they use it.
You’ve seen the code get inspired and build your own exactly to your taste.
Well it’s alomost the weekend have a drink on me.
Ismael: “aybe the only practical solution is to have simple and advanced templating options in a CMS?”
Some do precisely that.
webber: “If you want open source, when you build sites for your clients donâ€™t charge them because the tools youâ€™re using are free — donâ€™t argue.”
I don’t necessarily want open source. I’ll use whatever works best for what I’m doing. And I don’t charge my clients for free tools; I only charge for the time it takes me to *use* the tools. That’s the rub — the limitations built into the tools themselves make it take longer than it should. And why shouldn’t I tell the toolmaker that this tool he’s given me has flaws? Maybe he wasn’t aware of the flaws. Most of the developers seem to come from a world where all websites have three columns; designers come from a world that asks “Why *should* a website have columns?”
“I have nothing against open source, just the ungrateful people that complain when they use it.”
The flippant side of me wanted to simply answer “You should learn how to read before you post comments” and leave it at that. But I realize you were probably steered to this one particular post and have read absolutely nothing else I’ve had to say on the subject, so I’ll point out that in other posts, such as my follow-on post to the above, and in the comment thread to Jeff Veen’s post that started this, I’ve said that we’re not denigrating the effort that brought us this far, we’re just pointing out there’s a longer distance yet to travel.
It’s an easy excuse to say these tools were built for someone else’s use and then offered for free, but it’s not accurate. These systems are being offered as products for people other than the original developers to use to create websites. If you spoke with the core dev teams on most of these projects they would, in fact, tell you their system is being offered to the world with the intention that people other than developers use it, and that they are spending their time working hard on the projects to make that possible.
You see it as complaining. Fine, you have a right to your opinion. I see it as feedback from their customer base telling them where they need to put extra work into it. As an assist in determining direction for future work priority.
As for the more personal remarks, I’ve no intention of getting involved in a public “mine is bigger than yours” dispute. I’ll only point out that the first piece of software I made freely available to the public was back in 1981, I’ve already contributed an updated mambot to the Mambo developers (one that I needed in order to achieve a design effect on a site I’m building) and offered some modifications to another module that drastically improved its design flexibility at the cost of minor breakage to exisiting design templates (a set of link images ends up left-justified instead of centered is all the breakage I’ve noted so far). And I’m in the process of writing two other modules, probably too specialized to be useful to the general public but useful to me. So while I failed to “get inspired” by the Mambo code (my inspiration came from the designs I was trying to create that the tool wouldn’t allow me to create; if anything the tools currently hinder inspiration, not promote it) I have and will continue to create what I need. A development staff would do it faster, though, if they only knew what I needed and agreed. And they can’t know that unless I open my yap and tell them.
And that’s what this is all about. Yes, I could roll my own. And it would have its share of bugs and would take me a while. (Especially in PHP. One of the reasons I passed the Mambo bits I twiddled on to the development staff rather than finding a place to toss them out into the world at large, is that I was using them to teach myself PHP. I’ve never coded in that particular language before, and since I try to learn one new language every year, I just made the coming year’s project PHP.) I’d rather use code that more eyes than mine have looked for problems in.
OSCMS developers are completely free to say to both Jeff and I that we’re not part of their product’s intended audience. So far most, I think even all, of the project developers (as opposed to those simply fans of one or another of the products) heard from have, in fact, said the opposite.
I agree “That product sucks!” isn’t helpful criticism, but it’s not what either of us have said. “That product sucks because…” *is* helpful, because it gives a reason why, and a target for the project team to shoot for. In either case it doesn’t represent a demand that anyone immediately cease what they’re doing and Obey Me. It just means that if they want me to use their product, here’s what would make it easier for me to do so. If they don’t want me to use it, they can ignore me. And I’ll most likely find another product, staffed by a team more inclined to listen. Because if *they* don’t care, why should I stay?