Just goes to show you that many startups are really focused on the wrong things. Users don't care about your development practices, the quality of your codebase, or pretty much anything that happens under the hood. They just want something that works, is easy to understand and use, and does what they need it to. Wordpress fits all those, hence the huge community of loyal fans.
I'd argue that it's more a lack of options/timing. MovableType was once big and then they offended the community which saw an exodus, mostly to WordPress. WordPress was really they only equivalent back then. Even today, there aren't a lot of options. Typo (on Rails) wasn't well maintained for a while and many cheap hosts still don't play that well with Ruby/Rails. There are a few Python blogs (and more than a few use Django), but again many hosts don't support Python well.
WordPress really has that thousands of monkeys banging on a keyboard thing going for it. There are just so many users who have created little plugins. Most of WordPress might be crap, but no one wants to spend time on something of such low-value (code-wise) as a blog and WordPress meets most needs. It's slow, it has poor security, its interface leaves a lot to be desired (keeps getting more complicated in my opinion), but it works well enough.
Just look at the options. You can run MovableType in its Perl/PHP comboness. You can run an under-featured Python blog based off one of those many frameworks and then get annoyed that there isn't anti-spam protection. You could try a Rails blog like Typo or Mephisto, but you have to deal with getting a host that supports Ruby well (no problem for me, but definitely for many). And Typo never seems to quite keep pace with Rails.
Users do care about elegance. It's just that elegance is sometimes not built (like the number of Django blogs that are missing even simple things that you don't notice at first) or just don't see the type of life that WordPress has because they came later.
WordPress is elegant enough for most people while other solutions have deal-breakers in them for many people.
It seems like what you're really saying is, "There are a whole bunch of options out there for blogs, but WordPress is the best for almost everyone." I would agree with that statement, and I suspect that's why it's been so successful.
it's always a little bit crappier than I thought it was
It isn't my absolute favorite piece of technology in the world from a hackability perspective, but there are some big wins: the community is fantastic (i.e. other people have suffered so we don't have to), the thing you need has probably been done already, and the ease of use from both an installation and end-user perspective is off the charts.
I use mini-sites for my business and have a script which autodeploys them (had I thought this through prior to making the first three I would have MUed it up, but oh well). The deployment is consistent enough to automate in about an hour and easy enough for a semi-technical freelancer to understand that I can have a website ready for about $100.
Drupal is great for some things, and it's great for a lot more in theory, but it sucks on a lot of levels. The main issues I have with it are a) the admin interface is significantly harder for normal folks to jump in and start using, b) it's really inefficient unless you do some serious tuning, and c) theming is a nightmare. I mean, once you get a theme all up and running, I'm sure it's great because it's easy to edit, but the task of converting an HTML mockup to a full Drupal theme is a huge pain in the ass.
I can take an HTML / CSS slice, convert it to a Wordpress theme, throw up a new installation, configure everything the way it should be, add some basic pages and content, and launch the thing in about 90 mins.
What is your secret? Because I can't get one up in 90 minutes even starting with the theme pre-written and automating the deployment as much as I can -- the amount of manual settings for plugins, sidebar widgets, and the like always eats my time.
You're not alone. It's not for lack of options, but like many parts of Drupal, the automated install process hasn't "stayed still" for more than a version for the best practices to really evolve. The most famous way is something called Install Profile. The definition and underpinnings of this module have changed drastically from version to version, and it is not that well documented.
A more recent entrant is a system called Aegir which is a set of multiple modules. There is also a Drupal shell called Drush that can automate some things, but obviously it itself needs to be present and installed to be utilitzed :D.
Myself? I've written an ugly bash script that basically downloads and moves all the modules into place, and talks to mysql to enable them. I would never advise anybody else to use this method, or at least not use my script ;D
In a recent Lullabot podcast (probably the most well-known, and definitely most helpful Drupal-based business I know of), they referred to a database-centric way of automating installs that sounded like it could also be just a db script. They promised a blog post, which I am eagerly anticipating.
Anyway, your main point about Drupal setup being cumbersome, is true. Most people whose work is all Drupal have ways to deal with this, but if Drupal is only a small part of your computing life, it's not obvious what the best practice is.
These are for clients who typically only use a couple plugins, usually Akismet and a contact form. So other than the theme stuff, which probably takes about an hour, I'm usually just installing WP, which takes about 3 mins (they're usually using a host that has one-click installation), then I upload the plugins that I use on everything and enable them, which takes another 2-3 mins, then I configure things, which usually means turning on permalinks, changing admin password, and setting up the contact form. Create a "contact us" page, edit the about us page, and I'm pretty much done. The non-theme stuff takes about 30 mins. But these are sites for authors, many of which are new to the idea of blogging, so a lot of complicated plugins and widgets to deal with is too much for them.
I can. (And I'm not saying this makes Drupal better than Wordpress, just different. I really like both tools.)
Drupal is better suited than WP for each user to be throwing back as much content as they're consuming. When the membership is more "flat," a la YouTube/Flickr/Facebook. (Drupal is kind of notorious for making proof of concept clones of all the major social sites.)
Drupal also has hooks for creating "nodes" (a Drupal word for a page, basically), from external DB's, and can create custom content types, with any combination of fields/menus without making the end-user seeing anything ugly (WP also has a custom field type option, but it forces the publisher into a type of Administrator view, whereas in Drupal, you can make the custom content view look as pretty and neat as Twitter submit form, or any interface.)
Again, I'm NOT saying Drupal is better than WP, it's just really different. I actually hesitate to compare them. I think Drupal is more similar to Django/Rails. It's a framework, but with an really ugly admin panel, and it's that GUI that makes people compare it to WP, which of course has an incredible admin interface that makes any WP user rightfully wrinkle their nose when first using Drupal :D
Nice post and trying to not pick one or the other :P
So from what you said...is there any reason for a normal someone not too good at coding to choose Drupal over WP if you're making a site with minimal user interaction? There are a lot of WP plugins to help with turning it into more of a CMS for sites than just a blog so that part can be taken care of.
i have never, ever, in my short life, worked with worse code than anything done with drupal. some of what i've seen is downright tragic -- completely illegible, inconsistent, goldbergian in design, and (strong words) just plain dumb. and thats being generous.
I just wish wish wish there was some alternative that had the plugin/theme support and somewhat of a community.
With Rails deployment being so easy now (via Passenger or Heroku), I really would love to see a full-featured WordPress alternative in Rails. Maybe Mephisto or Typo, I don't know ...
Urgh, I'm not happy about this. WordPress' codebase by itself is reasonable--don't get me wrong, it's bulky in places--but if MU is going to be added to the core, that is going to make a stock WordPress install carry a lot of extra baggage.
The site is down for me--what is the reasoning for this? wordpress.org's blog doesn't have any information in the most recent few posts from the skim that I just gave.
Wordpress never fails to surprise me with it's mediocre codebase and development practices: it's always a little bit crappier than I thought it was.