I am a confessed Drupal fanatic, and I often get asked why I use Drupal over some other platforms, so I thought I'd give a quick run down.
Here are my top 5 reasons why I use Drupal for web sites:
- Drupal is modular & extensible
- Drupal is open source
- Drupal is theme-able
- Drupal is easy to learn and setup
- Drupal solves many of the problems in the website "domain"
1. Drupal is modular & extensibleDrupal is powerful because everything is a module. Drupal has a lean system core in my opinion and everything else is modular. And modules are easy to build or extend. The Drupal community has a host of good modules available and those can been extended as well - without hacking! And that should always be the goal because if you hack code you are creating a maintentance nightmare for yourself (or your successor). Drupal is big on "hooks" which isn't unique to Drupal. Other CMS's have hooks, I just think Drupal's are better.
2. Drupal is open sourceAs mentioned in my last point, Drupal has hundreds (thousands?) of modules available in it's repository at http://drupal.org. I have contributed a couple that are still in development myself, CSS Rules and Role Subscription. The Drupal community is great at continually improving Drupal and it's modules as well as supporting those modules. And it's free!? Sometimes free is better than paid. I have done some Sharepoint development lately and I can tell you Microsoft doesn't help support much of it's software. And the places that do want to get paid.
3. Drupal is theme-ableThe first thing I looked for a few years ago when I was looking for a CMS or framework was theme-ability (is that a word?). I looked at Joomla and Mambo and Blueshoes and some others and what turned me off to Mambo clones was that they were really ugly underneath. Wordpress is like that too. And this was 3 years ago so I suppose things can change but I thought the templating just wasn't flexible enough for me. Drupal let's you theme everything and with a great degree of granularity that I think would rival any competing system on this planet. You can override the theming of just about anything. It's quite amazing and straight forward in my opinion. And most themes are made with phptemplate which is just straight PHP, no need to learn a special theming language. And Drupal is very smart in giving the developer some sensible defaults in it's core CSS files. Just the bare minimum, but not too many styles that would get in the way of a themer in my opinion.
4. Drupal is easy to learn and setupI also was drawn to Drupal quickly because I could set it up quick and easily and start adding my code immediately. Even if you don't buy into everything, if all you want is a CMS and want to hook in a module that just executes arbitrary PHP you can do that. With just a couple hooks you could have the module interact with Drupal without having to learn pages and pages of the Drupal API. The barrier to entry is low. And that's what I did at first. One of my first projects was a real estate website and I used Drupal and creating a module that displayed real estate listings. It didn't really hook into anything except it display the listings from within the layout and I found theming to be easy enough and the basic content management / menu management / configuration easy so in no time I had a very functional website.
5. Drupal solves many of the problems in the website "domain"
This might the most compelling reason for me at least. I don't use Code Igniter or Ruby on Rails for websites. I draw a distinction between web sites and web applications. Web applications require a lot of custom business logic that may or may not have anything in common with a typical public facing publishing website. To use one of these custom frameworks for a website in my opinion is making things too hard for yourself. Drupal has a built in user system, menu system, content management system, etc etc out of the box. All these things you have to code yourself. And some things are a real pain to code. Drupal allows the developer to do more theming and configuring and less actual coding. While that may be offensive to some hardcore coders but for me that is a god send.
We (Lynxmark) recently launched Ultimate Escape (http://ultimateescape.com) which is a good case study and illustrates this point. I needed a calendar, so should I code a calendar? No I integrated google's calendar which is a fine calendar - why reinvent the wheel? I needed to take credit cards. Would I want to code a payment engine? NOPE! I installed ubercart and could set up products quite easily, even was able to turn on recurring billing using Authorize's ARB service. Did I have to comb through the ARB API docs? Nope (tho I actually have). I needed a place to add videos. I found a module that allows you to add videos from a host of services, youtube, yahoo video, etc etc by just supplying the url. I added that as a CCK field (CCK is a great module for creating content types from within the Drupal CMS) and voila, we have an easy content type for adding subscription videos. I could go on but I think I have illustrated my point, Drupal makes things easy.
Have a comment/question? Agree/disagree? Drop me a line!