Wordpress vs. Drupal
I have quite a bit of experience using web-based Content Management Systems. I have used and developed extensively for Mambo, Drupal, and most recently Wordpress. I have tried out a handful of others, but I cannot say I have an in-depth view of them. As far as popularity goes Mambo/Joomla, Drupal and Wordpress probably account for a significant number of CMS/blogging platforms on the net (at present). So, take this from my user-developer experience, and usually from the perspective of something I call developer-usability. Developer usability is an important factor in choosing a tool to manage your content online, and hopefully developer usability and user usability are high goals on the platform's agenda, In fact, usability is a not-for-negotiation goal/feature.
So, on with the flames. My experience with mambo/joomla is based on mambo when it split into Joomla and Mambo projects. For me that was a difficult time to continue working with a platform I had already grown to hate. Did I choose to follow the Mambo project, or break into the potentially more forward thinking Joomla? I chose not to choose, and dropped it like the wet fish out of water that it was. Why such dislike? You will notice a distinction between the websites for Drupal, Wordpress and Mambo, Mambo is hosted on a .com website, while wordpress and drupal are hosted on .org. This may seem like a random thing, but to me it tells me what philosophy the project has been run with, it tells me that drupal and wordpress are more community driven and oriented, and mambo is more of a commercial venture. Don't get me wrong, I like money like the rest of them, but the distinction feels like, and probably does, draw a line between users of the software and The Developers. To me that difference means there is a monumental difference in the quality of code, availability of documentation, etc. To be honest Mambo seems to have come a long way from it's table layouts and downright hideous module structure, but I think it is leaps behind drupal in many ways. Mambo was great for the news site that used the features mambo provided out the box, wonderfully simple, powerful even. Step into the code and feel your head rotting as you try figure out how not to spider crawl your code across the application in order for it to do something different. Yuck Yuck Yuck.
So I moved on to the sweet surrender of Drupal, and found something of a framework bearing down on the holy grails of content management. It was a small learning curve (somewhat smaller for me because of my programming background) to learn the concepts and language of drupal content management (and these concepts borrow heavily from polymorphism, and OOP). If mambo could be driven by a monkey (and it seems most of it's users are monkeys (oooh, snap!)) then drupal required a sentient, calculating person who had some time to spare to learn a new skill (and as developers and participants in the electronic world the skill of learning skills is invaluable). Drupal was sweet heaven to me, I enjoyed developing on it, and a lot of the time I never needed to dive into the code, that is developer user-friendliness at it's peak, it means I rarely needed to put on my php hat and hack the code, because the code was skillfully built to never need hacking. When I did put on my php hat I found the underlying code wonderful, logical, and clean. User contributed modules followed this trend more often than not, because the development base made it difficult for them to hock together a module (as in hock a loogie) without first reading the documentation, and they were forced to participate in peer review because drupal.org provided all the functionality and resources you could need to effectively host your drupal module, on the drupal site. Where mambo had forced me to often search high and low for modules from websites like freemambotemplatesforyourwebsite.com, drupal had it all in one place, it forced releasers to be explicit in their versioning, and provided forums, issue tracking, patches, etc. in one place, on the drupal site. I became a drupal neophyte, and never looked back (until I met Python, which pushed anything written in php to second best automatically). (as an aside, I accidentally closed this tab, but the wonderful autosave module created a revision (not a save, a _revision_) right where I was)
So, I had them content management systems in my belt, and I was plodding away with Drupal. I had seen other CMSs and turned them down in favour of my friend Drupal, nothing could dissuade me. Then I inherited some wordpress sites to take care of. This was my first real re-affirming drupal experience. I was again lost in the mire of a poorly designed system, full with template hacks, modules that stick to your core (as opposed to integrating), needing to make core changes, database changes, and searching using Google of all things to figure out how to get it to play nice (When it comes to Drupal development I usually never have to leave drupal.org to figure out what is needed). Wordpress modules strike me as a lot like the ones I encountered in mambo, part of the wild west, with no attempt to apply sensible development strategies. It comes as no surprise to me that moving to PHP5 is a huge mission for Wordpress, since it used the idiosyncrasies of php to get the job done (where Drupal uses sensible coding techniques to get php to get the job done). Obviously porting any software to a new platform is involved, but it strikes me that you could implement a Drupal like system in any modern OOP/class oriented language, and come out with just about the same way of doing things.
So to wrap up, use Drupal because it makes the tea and coffee while you wait. It is worth the learning curve, and it is on a path to go very far. The code structure is sensible, the community is centralised and sensible, the new default templates are very pretty, and you will not spend your days wondering how to get things done. Drupal for President!
(as a disclaimer, no CMS is perfect, and basic blogging tools like Wordpress certainly have a niche to fill, but I urge you to consider Drupal if you are building a site that is more than a blog, and has potential to grow in the future, and you need a quick turn around time on a job. If you have the luxury of building something truly different from scratch I urge you to learn Python and use a web development framework like Django, Turbogears, Twisted (for asynchronous applications) or even Zope if you really really need OOP from front to back)