All in the <head>

– Ponderings & code by Drew McLellan –

– Live from The Internets since 2003 –

About

Content Management Nightmares

13 May 2008

I’ve come into contact with a lot of different content management systems over the years, from the off-the-shelf to the handmade by pixies varieties. Apart from the almost universal truth that everyone hates their content management system, I’ve found them all to be remarkably different. From the basic to the complex to the complex-but-should-have-been-basic they’re all out there and most of them are dangerous.

Whilst working in a design agency seven or eight years ago where I was building mainly ASP/VBScript projects, we were approached by a client to perform a redesign of their existing site. The site had originally been built by one of the very large design agencies who, as was quite common at the time, had offices all over the world. Part of the redesign necessitated some changes to their custom-built ASP content management system, so we set about requesting the source code from the original design agency.

Whilst our client was based at an office in London, their headquarters were in Norway, and it was the Norwegian division that had originally commissioned the site, which itself was all in English. (With me so far? Good.)

When I got hold of the source code, I was horrified. By that point I had been coding for few years, but on the whole wasn’t massively experienced in developing complex applications. With hindsight, I expect what I was looking at was an attempt to implement an architectural pattern like MVC or similar, but what I was faced with was an absolute rats nest of code. I say an attempt to implement because if you’ve ever worked with ASP and VBScript you’ll be familiar with its lack of basic features such as dynamic includes, optional function parameters and hash tables that make building a well structured application something of a challenge.

As an aside – because I still find this amusing to this day – ASP processed file includes before interpreting any of the script. On a first pass, ASP would recursively process any includes in the script, grabbing their contents and squirting it into the parse structure at the desired point. The entire thing would then be fully parsed and finally the VBScript interpreted. This meant that not only could you not decide in your script whether or not to include a file, but that those file names had to be static. There was no way to dynamically construct the file path based on runtime input. It was a joke, but like the worst joke you’ve ever heard, told by someone with the comic timing of a tax accountant. But I digress.

So there was I with my rats nest of ASP in something of an attempt at some architectural pattern or other, trying to figure out how best to make the changes I needed to make in order to have the CMS work with the new site design. Whilst not a massively pleasant job, that sort of task is usually reasonably bearable provided that the variables and functions are logically named and that the code is well commented.

Well, I could see that the code was heavily commented, but whether any of it was logical I couldn’t possibly tell you because every comment, variable and function name was in Norwegian.

That was my nightmare with a content management system. What’s been yours?

- Drew McLellan

Comments

  1. § Cole Henley:

    Scribing a bespoke, bilingual CMS in Welsh and English and dealing with the peculiarities of Welsh; a language that contains accented characters which seemingly do not exist in any other language.

  2. § James Stewart:

    I can’t think of any particularly visceral examples, but lately most of my frustrations have been to do with inheriting sites/CMS’ where: the requirements were never documented, the client is convinced certain aspects of the site once worked “properly” but can’t explain what they mean by that, and the code suggests the site never did anything that remotely resembles what the client seems to be hinting at.

  3. § Peter Quinsey:

    Almost certainly a trend. The most well-commented project I’ve ever inherited—and these were long, detailed, luxurious comments—was written entirely in Spanish.

  4. § Kev Mears:

    I can’t think of terrible dissatisfaction with a CMS. We use textpattern at work and it’s pretty good,but my biggest frustration is the continuous feature requests for trivial little things whilst knowledge about web standards is sorely lacking, and the importance of good copy is underrated.

    There’s no substitute for educated content providers, but they seem to be rare as hen’s teeth.

  5. § Richard Conyard:

    One and three can be made easier by server.execute and scripting.dictionary, but I digress. I once joined a dev team where a certain developer decided to get around the optional parameters problem by passing arrays into functions; of course because the parameters were “optional” so were the comments as to what was being passed in each position of the array.

  6. § Ozbon:

    Absolute worst? Using Interwoven’s Teamsite product on an install that’d been broken by the Interwoven team themselves. (As an aside, I worked with the person who PM’d that team a couple of years later, and she was abysmal)

    The install was for a travel company, with 14 companies under the ‘main name’ – and on occasion three or four languages running for each sub-company.

    All the internationalisation and translation was handled (badly) by XML files and lookups.

    Oh, and the installation team couldn’t get the automatic backup to work, so they sent it to /dev/null instead – and no-one noticed ‘til the server crashed, and they tried to get the backups of 18 months of data…

  7. § Barce:

    I find it interesting the you ask this question the day after this question was asked in this blog:

    http://www.web-strategist.com/blog/2008/05/10/cms-horror-stories-and-your-soon-to-be-legacy-community-platform/

    Anyway, my CMS nightmare was with Atomz’s publish tool. It had serious lag issues, and I want so far as to make a video of me using it to show how slow it is.

    Atomz got bought by Visual Sciences. Are there still issues with publish?

  8. § Drew McLellan:

    @Richard If memory serves, server.execute wasn’t introduced until ASP3 came along with IIS5 (same time as server.transfer, I think) – it helped to some extent but not a great deal. Dictionaries brought their own set of problems, most notably with performance – they were useful for the odd trick here and there, but not to build an infrastructure on.

    @Barce that is interesting, but total coincidence. Just goes to show commonplace the issue is.

  9. § Chris McLeod:

    Here’s one for you – I still have to work mainly with ASP/VBScript. On a system that’s 7 years old, that I wrote it while on summer work experience, during my 2nd year at Uni. My life is pain.

    On the plus side, I’m writing a total rewrite of everything into ASP.NET MVC (which is “da bomb”, btw) in my spare time – it’s costing my free time right now, but it’ll give me lots, lots, lots more free time in the future. Everyday I have to dig through masses of files to fix random errors and wonder “what the hell was I thinking back then?”

  10. § Tim:

    currently struggling with Typo3… This CMS has everything I DON’T NEED in a CMS (and some useful tools too …)

  11. § Elaine:

    Right now trying to get a Drupal install working…decided to go with version 6, because it’s new, has some great new features, etc. But…so many very useful modules just aren’t available! The thing I thought was going to be hardest turns out to be pretty easy, and the thing I thought was going to be a piece of cake is almost impossible. Grrrrr.

    Also, NetObjects Fusion circa 2000. (version 4 or 5?) The scariest WYSIWYG-generated html I have ever seen, even outstripping FrontPage of that era. Plus, if you got something out of whack, needed to reorganize, etc…it was just impossible. You might as well recreate the site from scratch. And it left weird little image files all over the place.

    With the intranet software at work (unnamed to protect the guilty), I’m getting really, really, really tired of saying “I’m sorry, you can’t do that.”

  12. § Ozbon:

    @Elaine : Oh, I’d forgotten the “joy” of NetObjects Fusion. I remember it not letting me alter HTML directly, but doing everything via the design window/interface. It was truly shudder-inducing.

  13. § Rob:

    I did some work for a large corporation about six years ago. They had a field support site that was designed by multiple departments, and had literally thousands of pages all uniquely done. My job, make them all look like one person made them, and basically rebuild the entire architecture of the site. I was there for almost three months completing the work. Pages were built using Word, Front page, notepad, asp, php, and pretty much every type of html editor there was at the time. Nothing was consistent. My final project for them was to implement a database, where they could simply add new content similar to a blog. It was pre-blog days so I had my hands full. That was my first big lesson in site usability, and site consistency. I still get the occasional call from them so it is still working to date.

  14. § Brad Touesnard:

    I thought Zope was a nightmare when I had to babysit the outdated ASPN web site for two years, but I’ve been recently introduced to the horror that is Typo3.

    Typo3 has this wonderfully cryptic language called Typoscript that allows you to do some light and very strange programming through a form field within the CMS. It also has two types of templating systems, one for your pages and a different one for plugins. Though I’ve got my head around most it now, it is a very confusing CMS to be introduced to, full of strange and unfamiliar concepts. I don’t recommend it.

  15. § Tomaz Zaman:

    I had to develop a website for a client that wanted me to use typo3 and i did not have a choice but to learn it. And so i did. And I must say that i don’t regret it a bit. Sure you need quite a long time (about 6 months) to learn it, but once you know your way around it, there is not a thing that can’t be done. Typo3 is especially recommended if you have corporate websites (i developed one for a local university that has 1500+ subpages and 200+ editors with limited access rights), but is also suited for smaller ones. The biggest downsides are long and painful learning and the fact that the cms is very resource hungry.

  16. § Tim Huegdon:

    Two words: Percussion Rhythmyx

    Weaved from the very fabric of FAIL.

  17. § Michael Zajac:

    I once inherited a Filemaker database which managed two large tables and output a set of static HTML pages. The author had built a many-to-many relational-like system without understanding relational concepts, using a baroque set of supplementary tables and scripts. Some of it too quite a bit of untangling.

    My favourite feature was a set of 26 additional records in each table, intended to appear within alphabetically-sorted views: “a”, “b”, “c”, “d”, etc, each ensconced in a big chunk of table-based HTML to format it as a header.

Photographs

CSS Training Course: 18th July

We're running another CSS course aimed at beginners (or those wanting to freshen up!) on 18th July. Places are limited, so book soon to be sure of a place.

Work With Me

edgeofmyseat.com logo

At edgeofmyseat.com we build custom content management systems, ecommerce solutions and develop web apps.

Recent Links

Affiliation

  • Web Standards Project
  • Britpack
  • 24 ways

About Drew McLellan

Photo of Drew McLellan

Drew McLellan has been hacking on the web since around 1996 following an unfortunate incident with a margarine tub. Since then he’s spread himself between both front- and back-end development projects, and now is Director and Senior Web Developer at edgeofmyseat.com in Maidenhead, UK (GEO: 51.5217, -0.7177). Prior to this, Drew was a Web Developer for Yahoo!, and before that primarily worked as a technical lead within design and branding agencies for clients such as Nissan, Goodyear Dunlop, Siemens/Bosch, Caburys, ICI Dulux and Virgin.net. Somewhere along the way, Drew managed to get himself embroiled with Dreamweaver and was made an early Macromedia Evangelist for that product. This lead to book deals, public appearances, fame, glory, and his eventual downfall.

Picking himself up again, Drew is now a strong advocate for best practises, and stood as Group Lead for The Web Standards Project 2006-08. He has had articles published by A List Apart, Adobe, and O’Reilly Media’s XML.com, mostly due to mistaken identity. Drew is a proponent of the lower-case semantic web, and is currently expending energies in the direction of the microformats movement, with particular interests in making parsers an off-the-shelf commodity and developing simple UI conventions. He writes here at all in the head and, with a little help from his friends, at 24 ways.