Obviously, as a once-upon-a-time core developer for the project, and as someone who continues to work in that community, I am pretty familiar with WordPress. There’s hardly a day that goes by that I’m not hip-deep in WordPress code and news. I’ve watched its evolution over these past 7+ years as it has moved from a simple blogging system towards becoming a more full-featured CMS.
Before WordPress was born, I was searching for a platform to build my own site on. I was waffling over whether to write my own from scratch or to use an already existing program. One of the projects I looked at early on was Drupal (in fact, my drupal.org user account is 2 years older than my wordpress.org account). It was kind of interesting, from a philosophical/architectural point of view, but it wasn’t easy to set up and use. I tinkered with it briefly, shrugged, and moved on to inspect the next tool for consideration.
In recent years, my wife, Susan, began using Drupal at her job, which brought me a couple of opportunities to look at it when she had questions that she thought I could help her with. When I watched her configuring her Drupal sites, I could see that while it had some nice architectural features, it still had a steep learning curve. So when the D7UX initiative came around, with the goal of making Drupal 7 easier to use through a new-and-improved interface, it piqued my interest. Also, Susan has been involved with the organization of DrupalCamp Atlanta for its first two years (as the voice of the @DrupalCamp_ATL account, AKA “Drupal Peachy Head”). So I’ve gone with her to those two DrupalCamp events, and had the opportunity to learn more about that CMS.
I’ll admit that I’m still not terribly familiar with actually using Drupal, though I did finally install D7-alpha-6 on my laptop recently. But I have had the opportunity to observe its community some — online, in person, and through podcasts — and I’ve learned a little bit about how they manage the release of a new version. And so I have a pretty good perspective on comparing some traits the WordPress and Drupal communities. I’ve said it before, and I’ll say it again: there is a lot we can learn from each other, and I think that it is a win-win for the community in doing so.
First of all, what can Drupal learn from WordPress? Well the main thing is one that they are already working on: they should improve their user interface. It’s no secret that probably one of the biggest factors of the success and popularity of WordPress is that it is so darned easy to use. It starts with “the famous 5-minute install”. You don’t have to be any kind of technical wizard to set up WordPress. Pretty much all you need to get started is the database information that will be provided by your hosting company in most cases. And then once you’re past the install phase, the rest of the software is pretty intuitive. The ability to upgrade plugins, themes, and even the core system itself at the click of a button is icing on the cake.
This slideshow presentation from Jen Lampton makes most of the salient points:
And what can WordPress learn from Drupal? They have a really solid core architecture with amazing introspection capabilities. The Features module for Drupal makes it easy to export modules — along with their dependencies, configuration, and data — from one installation to another. WordPress will be hard-pressed (no pun intended) to emulate something like that for many versions to come. Drupal has automated runs of unit tests whenever someone contributes a patch for core or a module, giving developers almost instant feedback of problems and regressions. It is common for Drupal developers to build modules which do nothing more than provide infrastructure and APIs for other modules to leverage. Having a dependencies system in place makes this possible.
Drupal developers will sometimes scoff at WordPress and deride it as “just a blogging platform”. WordPress developers might point out how hard it is to do certain tasks in Drupal which just work “right out of the box” in WordPress. But some of those same Drupal developers look at how easy WordPress is, or how popular it is, and feel a little jealous. A few WordPress devs recognize our lack of database independence, dependency checking, or flexible URL routing, and wish we could push these things into core now.
Drupal devs note that WordPress has been beefing up its custom taxonomy and content type support, and say that WordPress is just copying Drupal. WordPress devs point out how often Drupal gets compared to WordPress when discussions of good UI come up, or tout how even Mark Boulton Design put their D7UX blog in WordPress to start with, because it was easier to use than Drupal at the time.
But I think these changes are a pretty natural evolution for both systems. If you could imagine “The Perfect CMS”, what would it be like? It would be easy to use, and it would be full of powerful features, right? It would be lovely to look at, and it would have a strong underlying architecture and API.
I think WordPress and Drupal are both heading in that direction — they just had different starting points. WordPress started with good usability, but a limited architecture and feature set. Drupal started with a strong architecture, but a very developer-centric user experience. But WordPress has been steadily improving its architecture. And Drupal has been working on its UI. They had different origins, and they have taken different paths, but they are both evolving towards CMS Nirvana. And we users get to ride along.
If you could bring a feature from one system to the other, what would it be?