Why I Rejected WordPress (in 2007)

Yesterday Matt Mullenweg – co-founder of WordPress – did an IAMA on Reddit. You should read through the whole thing, he took the time to answer almost everybody’s questions. One of his answers really stood out to me, but before I get to that, some context.

Back in 2007, I was working on the two-man development team of a rapidly growing hip hop news site. In a good month, we’d see nearly 3 million unique visitors and 15 millions of page views. Editorial, design and traffic demands found the site quickly outgrowing it’s CMS. We needed to replace it. We evaluated some of the PHP frameworks and took a serious look at WordPress. Even at that time, in early version 2, WordPress looked promising. After some serious poking around, we felt that all existing frameworks and systems were too bloated, we worried they wouldn’t scale to meet out traffic demands. We ended up building a kick ass custom CMS.

Because of this history, I found Matt’s answer to one question particularly interesting. Reddit user andrewry asked, “if you could break backwards compatibility (which really isn’t a option for WP), what would you really like to completely redo or add to WordPress?” His answer resonated with me:

If backwards compatibility wasn’t a concern I would rename all the inconsistent column names and variables to match our style guide, drop TinyMCE, simplify the user roles and capabilities system, replace widgets with page blocks, redo the admin menu system, denormalize the DB, flatten dependencies and deep hierarchy in function execution, and completely reorganize the code so the bare minimum of files are included with any given request.

This is basically the list of reasons we rejected WordPress as a CMS back in 2007.  It’s re-assuring to hear that Mullenweg acknowledges these issues. As an outsider it’s easy to assume that Auttomatic is either totally ignoring them, or worse, don’t see a problem.

Here’s the thing though.

Even though we managed to built a CMS that included a minimal number for files, didn’t have crazy function dependancies, had a sane database, etc, it didn’t magically scale to handle 800 page views per minute. At the end of the day, we cached. All page output was written to a flat file.

Turns out, this is the how you scale WordPress. Just cache it.