As a user and developer of WordPress since 1.x something, and a developer and user of Drupal since 4.7, I figured that with the release of Drupal 7, this would be a great time to do a comparison of the two. If you want a really detailed look, please read the very exhaustive, recently released, updated Idealware report on OpenSource CMS, which includes Drupal, WordPress, Joomla and Plone. I did the research for the original report released a couple of years ago, so it's been a while since I've come back to comparing these two platforms. Also, this is primarily going to be from the developers point of view, although I'll talk some about user interface and experience. (A caveat: I have more experience, especially with larger sites, in Drupal than in WordPress, so there are things that I may be missing. Feel free to make comments on what I got wrong.)
WordPress started out with a focus on ease of use for bloggers and content creators, and secondarily providing a platform for developers to build plug-ins and such. WordPress was born as a blogging tool, primarily, and has expanded outside of that realm, to encompass different kinds of content management use cases. Drupal started out primarily as a web content development platform, with a strength in community features. A focus on ease of use didn't come about until Drupal 7. At this point, both Drupal 7 and WordPress are pretty easy for end users to add and edit content, and do pretty simple administrative tasks (moderate comments, etc.) They both have a very nice array of canned themes available to use, and they both have some customizable themes (themes that make it easy to customize without needing to know much HTML or PHP - like Thesis) available. Getting a site up and running in both platforms is pretty easy, although neither are really ready for non-techies to take on. That said, most good webhosts have one-click installs of both CMS platforms. WordPress still has only two content types: Blog Posts and Pages. You can't have different kinds of pages, or different kinds of blog posts, or some other content type (news, events, etc.) that aren't one or the other. That is a deal-breaker for many kinds of sites. There are plug-ins that allow you to create custom content types - I haven't tried these, so I can't comment, but it seems a big deal that this is core for Drupal, and an add-on for WordPress. And it seems that this, and the absence in WordPress of a way to easily control the way that lists of content are presented and viewed are the major platform differentiators. That said, many, many websites need neither of these features. And if you want to get more deeply under the hood, both platforms require some understanding of the respective platforms (how plug-ins work in WP, how modules work in Drupal), and probably a bit of PHP, HTML, or AJAX to add bells and whistles to the theme. Given some big changes in the core of Drupal, such as adding fields to nodes, as well as image handling in core, some things are much easier dealt with in Drupal 7 than previous versions, getting close to the ease of use of WordPress in that regard.
Kinds of sites probably best done in WordPress:
- Community Blogs
- Simple brochureware websites
Kinds of sites best done in Drupal:
- Large community sites where you need different kinds of content generated by users (blogs, wikis, job postings, etc.)
- Complex, document-heavy library sites, or sites that need document management
- Sites where you want complex control over multiple content types - how they are created and viewed
- Magazine/Newspaper like sites where you want to control how lists of content are displayed and ordered
- eCommerce sites
- Sites with deep integrations to CRM platforms and web services
Kinds of sites where it's a tossup:
- Medium or large websites with lots of content, but relatively simple organization
- Community blogs with many authors and identified, authenticated users
Bottom line: They are both such amazing, solid platforms, with rich, deep ecosystems of plug-in/module developers, implementors, designers, etc. that it's hard to go wrong picking either platform, as long as you are clear on the feature set needed. They have rock-solid core development teams, security updates, and over all good code, which you could hardly say about either platform 4 years ago. Also, I have to say, as much as I have respect for other Open Source CMS platforms, IMHO, 98% of websites can be served by either of these platforms. That's what's true right at this moment. 3 or so years down the pike, I'm going to be looking at platforms based on Ruby on Rails - as Rails gets more mainstream, and solid CMS platforms start to mature, that will be the space to watch for. But that's another blog entry, isn't it?