Dump your self-banning CMS

CMS developer's output: unusable dogshitWhen it comes to cluelessness [silliness, idiocy, stupidity … you name it], you can’t beat CMS developers. You really can’t. There’s literally no way to kill search engine traffic that the average content management system (CMS) developer doesn’t implement. Poor publishers, probably you suffer from the top 10 issues on my shitlist. Sigh.

Imagine you’re the proud owner of a Web site that enables logged-in users customizing the look & feel and whatnot. Here’s how your CMS does the trick:

Unusable user interface

The user control panel offers a gazillion of settings that can overwrite each and every CSS property out there. To keep the user-cp pages lean and fast loading, the properties are spread over 550 pages with 10 attributes each, all with very comfortable Previous|Next-Page navigation. Even when the user has choosen a predefined template, the CMS saves each property in the user table. Of course that’s necessary because the site admin could change a template in use.

Amateurish database design

Not only for this purpose each user tuple comes with 512 mandatory attributes. Unfortunately, the underlaying database doesn’t handle tables with more than 512 columns, so the overflow gets stored in an array, using the large text column #512.

Cookie hell

Since every database access is expensive, the login procedure creates a persistent cookie (today + 365 * 30) for each user property. Dynamic and user specific external CSS files as well as style-sheets served in the HEAD section could fail to apply, so all CMS scripts use a routine that converts the user settings into inline style directives like style="color:red; text-align:bolder; text-decoration:none; ...". The developer consults the W3C CSS guidelines to make sure that not a single CSS property is left out.

Excessive query strings

Actually, not all user agents handle cookies properly. Especially cached pages clicked from SERPs load with a rather weird design. The same goes for standard compliant browsers. Seems to depend on the user agent string, so the developer adds a if ($well_behaving_user_agent_string <> $HTTP_USER_AGENT) then [read the user record and add each property as GET variable to the URI’s querystring]) sanity check. Of course the $well_behaving_user_agent_string variable gets populated with a constant containing the developer’s ancient IE user agent, and the GET inputs overwrite the values gathered from cookies.

Even more sanitizing

Some unhappy campers still claim that the CMS ignores some user properties, so the developer adds a routine that reads the user table and populates all variables that previously were filled from GET inputs overwriting cookie inputs. All clients are happy now.

Covering robots

“Cached copy” links from SERPs still produce weird pages. The developer stumbles upon my blog and adds crawler detection. S/he creates a tuple for each known search engine crawler in the user table of her/his local database and codes if ($isSpider) then [select * from user where user.usrName = $spiderName, populating the current script's CSS property variables from the requesting crawler's user settings]. Testing the rendering with a user agent faker gives fine results: bug fixed. To make sure that all user agents get a nice page, the developer sets the output default to “printer”, which produces a printable page ignoring all user settings that assign style="display:none;" to superfluous HTML elements.


Users are happy, they don’t spot the code bloat. But search engine crawlers do. They sneakily request a few pages as a crawler, and as a browser. Comparing the results they find the “poor” pages delivered to the feigned browser way too different from the “rich” pages serving as crawler fodder. The domain gets banned for poor-man’s-cloaking (as if cloaking in general could be a bad thing, but that’s a completely different story). The publisher spots decreasing search engine traffic and wonders why. No help avail from the CMS vendor. Must be unintentionally deceptive SEO copywritig or so. Crap. That’s self-banning by software design.

Ok, before you read on: get a calming tune.

How can I detect a shitty CMS?

Well, you can’t, at least not as a non-geeky publisher. Not really. Of course you can check the “cached copy” links from your SERPs all night long. If they show way too different results compared to your browser’s rendering you’re at risk. You can look at your browser’s address bar to check your URIs for query strings with overlength, and if you can’t find the end of the URI perhaps you’re toast, search engine wise. You can download tools to check a page’s cookies, then if there are more than 50 you’re potentially search-engine-dead. Probably you can’t do a code review yourself coz you can’t read source code natively, and your CMS vendor has delivered spaghetti code. Also, as a publisher, you can’t tell whether your crappy rankings depend on shitty code or on your skills as as a copywriter. When you ask your CMS vendor, usually the search engine algo is faulty (especially Google, Yahoo, Microsoft and Ask) but some exotic search engine from Togo or so sets the standards for state of the art search engine technology.

Last but not least, as a non-search-geek challenged by Web development techniques you won’t recognize most of the laughable –but very common– mistakes outlined above. Actually, most savvy developers will not be able to create a complete shitlist from my scenario. Also, there a tons of other common CMS issues that do resolve in different crawlability issues - each as bad as this one, or even worse.

Now what can you do? Well, my best advice is: don’t click on Google ads titled “CMS”, and don’t look at prices. The cheapest CMS will cost you the most at the end of the day. And if your budget exceeds a grand or two, then please hire an experienced search engine optimizer (SEO) or search savvy Web developer before you implement a CMS.

Share/bookmark this: del.icio.usGooglema.gnoliaMixxNetscaperedditSphinnSquidooStumbleUponYahoo MyWeb
Subscribe to      Entries Entries      Comments Comments      All Comments All Comments

26 Comments to "Dump your self-banning CMS"

  1. g1smd on 11 May, 2009  #link

    Don’t get me started!!!!

    If also you add-in potentially several dozen different ways to screw up on the Duplicate Content front, as well as some other IA issues, you’re well on the way to describing most all of the products (from free to bloody expensive) out there on the market today (some of which are uber popular, but still fatally flawed).

  2. Yura on 11 May, 2009  #link

    It works, when you are the developer and can code your own CMS for your clients to use.

    However, if you are a non-developer, you can only buy a custom CMS (expensive) or use a popular, reliable CMS, such as Drupal.

    If anything, it’d be acceptable in the open source community, such as Drupal.org, to voice your concerns and they’d be listened to. Sometimes, communication with CMS developers is better, than making your life harder, by not using any CMS.

  3. Mike van Hoenselaar on 11 May, 2009  #link

    Great read. Love to see your opinion on shitty CMS.

    I miss some positive alternatives. A way YOU would implement and set up your database to prevent all of these great points.

    And off course, what is THE CMS that doesn’t do all of the points above ;-)?

  4. seobro on 12 May, 2009  #link

    I actually worked for a corporation (over 200 employees) that made content management software. My boss was a high school dropout that used to be a stock broker on Wall Street. He would yell at us.The code we wrote was more buggy than a coon dog in a corn field. It was so bad that we had shouting matches, so I was taken off code team, and put on SEO team.Well, guess what, our XHTML generator was kryptonite for SEO. It was so bad that Google could not find TITLE, let alone the body copy. It used a lot of frames and FLASH! What a disaster, but guess who bought this turkey? - gov agencies, the same people who pay $500 for a hammer.You can take my word for it. The code on any major open source CMS is better than what I wrote.

  5. Sebastian on 12 May, 2009  #link

    G1smd, in fact, there’s no such thing as a search engine friendly CMS. Perhaps except heavily customized apps as well as a few individual projects. Because all these issues are well known since CMSs exist on the Interweb, that’s somewhat pathetic.

  6. Sebastian on 12 May, 2009  #link

    Yura, I agree that the average open source CMSs is way better than any commercial app. OTOH there’s still no open source CMS I’m aware of without crawlability issues at least, not to speak about optimization components.

  7. Sebastian on 12 May, 2009  #link

    Mike, the problem is the lack of some positive alternatives. Wait, there’s one: roll your own. W/o kidding, I’d not even consider my very own scripts 100% search engine friendly, because none of them is really generic, and not meant to be. I’ve developed lots of sites, and of course I reuse my stuff, but each and every site is different. So there are many good solutions for the same –respectively similar– challenges. They all work fine in their context. Describing them in detail would lead to pamphlets that address just a handful of folks each. As long as I’m not hired to write the book on CMS development, or to develop a robust CMS as a standard app, I guess I’ve to stick with rants like this one. Sorry. As for the crappy approaches outlined above, I hope you’ll find better solutions in my previous pamphlets. Ok, not for every issue. For example I’ve no pamphlet on normalization, IIRC, but you could give this database design guide a try.

  8. Sebastian on 12 May, 2009  #link

    Wondering which developers will copy and paste the faulty CSS syntax ‘text-align:bolder;’ or the color codes I’ve made up for this paragraph’s inline style directive.

  9. […] features a mighty fine piece of precise geeky analysis addressing a long-held pet peeve of ours: “Dump your self-banning CMS” (Note: Features some strong language, in case you mind that kind of […]

  10. Spyros Papaspyropoulos on 12 May, 2009  #link

    Nice article. This is the reason why we create our own SEO optimized CMS. Its main goal is to serve XHTML SEO code to our client. At the same time, it can support custom designs with no restrictions what so ever. We never used or will use a CMS not made by our team at [editor’s note: you must earn a link from this site, promotional links implode].

  11. Brett on 12 May, 2009  #link

    This is so funny that you write this. I was just at lunch meeting today talking with someone about how crappy the cms systems out there are compared to Joomla. Not that joomla is perfect, but pretty close :)I just had a client have a whole cms built for them, they paid 10k for it. The whole system sucks. My puppy could have built a better system. The worst part about it is that most of these companies who are creating them claim to be doing SEO as well as web development. I don’t get it. I cant tell you how many of my customers have been duped for crappy CMS’s. [Akismet thinks this comment is spammy]

  12. Yura on 12 May, 2009  #link

    Sebastian, unfortunately, CMSs cover 80% of the things, but if you want them to be completely SEO friendly, you’ll have to get the other 20% with a few modules, robots.txt and create good site structure yourself, as is the case with Drupal.

    Personally, I believe it’s easier to fix security and SEO friendliness issues in an existing open source CMS, rather than code your own. Are there any reasons you find this untrue?

    However, if you can code and intend to use your own CMS for many projects, like you mentioned, then I guess it’s worth it.

    To each his own, I guess.

    I believe your post could be more objective, if you mentioned a few CMSs or examples from your work experience that really left much to be desired. Lumping all the better CMSs, even if not perfect ones, seems like a stretch to me.

    I guess I’m too much of a Drupal fan to agree that using Drupal at all is a bad idea. Using Drupal without improving it to be completely SEO friendly, more scalable with caching modules and secure is a bad idea, though.

  13. Sam on 13 May, 2009  #link

    Great article, Wordpress is our favourite CMS at the moment, its quick to deploy, really user friendly and has more free plugins than you know what to do with. [Akismet thinks this comment is spammy]

  14. Sebastian on 13 May, 2009  #link

    Yura, I don’t want to out any CMS, because the crappy coding examples above belong to more than one application. When I’d discuss particular CMSs in the context of this rant, that would lead to endless “my|this product is great and you didn’t do your research” discussions of details.

    As for “a CMS one can work with”:

    I’ve never done a site with Drupal myself, but I’ve come across some nicely implemented Drupal projects over the years. I didn’t say, at least I didn’t mean, that one should avoid Drupal under all circumstances by the way. Budgets are limited, so when a developer is familar with a CMS and can fix the most important SEO issues at least, using it is a pragmatic decision.

    Also, WordPress is quite usable. I use it myself every once in a while, although I hate their coding guidelines. I mean, when you hack a template, the mix of HTML and PHP is a PITA — IMHO worse than Cobol61 spaghetti code. Also, WordPress doesn’t scale, despite the pages it’s clearly focused on timely publishing, and so on.

    I’m not that sort of there’s-only-black-and-white-extremist stating “roll your own or leave the Web alone”. And I’m not the kind of consultant who meets a new client with a CMS in mind before I’ve gathered everything necessary to substantiate a recommendation. Also, there’s always the possibility to stick with some CMS components like the publisher/author-UI and such, replacing just the outputter. The technical implementation depends on the client’s needs and wallet, it must not drive the project.

  15. Bob on 13 May, 2009  #link

    A great CMS for the small business, home based business is Site Build It. It’s not flashy, although there are designers out there that can create custom templates. It’s a very easy to use product with good SEO. It’s geared toward the do-it-yourselfer. [Akismet thinks this comment is spammy]

  16. Ed Borasky on 13 May, 2009  #link

    OK … I have three Drupal sites. I am *not* willing to learn *yet another* web site building tool. So is there an *easy-to-read* howto on SEO using Drupal? If so, where?

  17. Yura on 13 May, 2009  #link

    I had the same thoughts, Sebastian. The thing is, the post did sound like “run away from CMS, while you can”, to me at least :)

  18. Sebastian on 13 May, 2009  #link

    Yura, the message is supposed to sound like Do a SEO review of your CMS asap before you burn [more] money.

  19. Brian Turner on 13 May, 2009  #link

    Wordpress has been pretty good since 2.0 - the duplicate content and basic on-page issues are relatively easy to address without a plugin.

    Sppeaking of which, though, I just took a quick look to see what CMS you’re using, and found the strangest line:


    Surely you’re not running such an old install? :)

  20. Sebastian on 14 May, 2009  #link

    Brian, since I’ve massively hacked this piece I thought it deserves a somewhat unique signature. ;)

  21. […] I don’t think too much about lightweight CMS systems. To be up front’ I try to duck heavyweight CMS tools as well. You may not have that luxury. If you are one of the lucky CMSters, you must read “Dump Your Self-Banning CMS” here. […]

  22. brian fidler on 19 May, 2009  #link

    Actually Wordpress does a pretty nice job though I find it difficult to customize for clients. For myself it works fine.

    For my clients I like using ExpressionEngine (http://www.expressionengine.com) because it allows me to create a custom form for each specific type of data that is necessary, which is very difficult and unintuitive to accomplish in Wordpress. It handles cookies well, allows caching of all types of content to reduce database load, and has great support for clients that need membership or user areas. I’ll probably be migrating my own sites to it as well just to keep my learning curve to a minimum.

    Another CMS that is similar to ExpressionEngine is MODX at http://www.modxcms.com. It also provides flexibility to create custom interfaces for different types of content input. And MODX is free whereas ExpressionEngine costs approximately $250 per installation (actually more if you use some of the popular 3rd party modules) I have chosen ExpressionEngine over MODX though because the community involvement is really excellent.

  23. Sebastian on 26 May, 2009  #link
  24. John Biundo on 3 June, 2009  #link

    @Sebastian: I’ll say thanks for the plug of Eric’s article on his behalf. I’m Eric’s partner at Stone Temple.

    @Ed Borasky: We put up a post on Drupal SEO Considerations a while back. I think most of it is still pretty relevant.

  25. John Hannawin on 10 June, 2009  #link

    A good article. As a CMS developer I have seen both sides of the coin; ease of use for the content manager vs successful site within the SEs. Often, within clients, these two roles are separate and so it depends who’s specifying the CMS as to which gets the most attention.

    The fundamental flaw I see is where the underlying architecture of the CMS restricts the use of standards or good practice in the resulting website. Even with the open source products mentioned, you often get the feeling that the purpose of the system is to manage updates, rather than produce and maintain a successful site.

    We had a potential customer who insisted that they wanted drag and drop positioning of images within their CMS editor. The system they chose effectively put every image and most other constructs inside named positional DIVs (rather than CSS based alignment styles on the IMG element). The resulting page code and stylesheet was truly terrible, but they got their drag and drop.

    With i-ntarsiaTM we’ve tried hard to give web designers a platform where they can let their creativity run wild, but also produce a successful, standards compliant site. We’ve not got it perfect yet, but some of the ideas here will be useful in moving that way.

  26. Gokkasten on 22 July, 2009  #link

    Yeah Well I’ve tested many, many, many CMS and the only CMS I trust is Wordpress. The biggest pain in the ass was WebGui. I’m so glad that I don’t use that anymore. I hope the guys at wordpress will make a sidestep and develop a some kind of CMS software like ExpressionEngine.

Leave a reply

[If you don't do the math, or the answer is wrong, you'd better have saved your comment before hitting submit. Here is why.]

Be nice and feel free to link out when a link adds value to your comment. More in my comment policy.