Quick question on Drupal. What is really the power in it? From my understanding its a content management system, but does it act like a framework? Basically could you build a PHP web application around it?
Well... Drupal is first and foremost a CMS. But the module framework allows you to add application like features to the CMS.
For example, if you wanted to make a car buying and selling website application (like cars.com or autotrader.com), the framework is there to build that feature in to Drupal. Drupal already has authentication, user profiles, database query functions, API, etc. You would just need to make a module that would handle the custom functionality, like the car content types and the searching ability (engine size, transmission type, number of doors, etc). Though I'm sure there is already a module for this example.
What type of application are you looking to build? You might be ok with something like Drupal. But something like django (python), Ruby, or CodeIgniter/Cake (PHP) could be better. It all depends on what you're trying to make.
I would consider Drupal a content creation kit. It doesn't really have the functionality needed for a serious content management system without the addition of several contributed modules. This does give Drupal a lot of power and flexibility but makes it a pain to maintain. You could write a PHP web app around it (depending on it's complexity) but if it does not directly relate to something a content management system would do it's probably something that would be easier done in a framework like Rails.
Drupal ships with some nice ACL features which IMO is the foundation for any serious CMS, but as mentioned above, it only serves as a jumping off point for any non-basic site. The community is large and there are a bunch of contributions, so you can plug and play with a lot of things. In any case, the code base is huge and a bit messy, so it will take some time before you master Drupal like you could a RAD framework. If you are using PHP and are shopping for a framework, I suggest taking a look at the Zend Framework. It's an awesome project and fully backed by Zend, so it's only going to get better. At the moment it is really just a library that you can use how you like, but they are adding some code generation features that will enforce stricter conventions and turn it into more of a RAD framework (Zend_Tool available in the lab via SVN). I've been using ZF for about 10 months and have built a kick ass framework and CMS on top of it. I've been able to roll some complex projects in short periods of time and have loved every minute of it. The community is good and the core team is very active on the mailing list. It's worth checking out.
I work for a web development shop that has been making custom CMS implementations for a long time. A little over a year ago, we moved to doing most of our new business using Drupal as a starting point, so I've had a lot of experience with it.
What's good about Drupal:
- Incredible community
- Lots of contributed modules, snippets, etc
- Decent security (community jumps on security stuff fast too)
- Decent SEO out of the box
- Front-end scaling is easy
- Highly extensible
What's bad about Drupal:
- Not OOP
- Tends to use a lot of DB queries for simple pages
- Doesn't support master/slave databases well (difficult to scale DB/back-end)
- Can get a little memory hungry with lots of modules, but not the worst thing out there (I run multiple sites fine on a 256 slice)
- Not a whole lot out of the box (but remember there's lots of contrib)
- Kitchen-sink approach makes it not excel in any single area (ie: wordpress is better for a simple blog site)
If you're setting up a site that has clear data metaphors and simple actions (publish, unpublish, etc) -- then Drupal is perfect. If things get more complicated, there are a LOT of quality contributed modules to make things happen (see http://drupalmodules.com). If you're looking at a highly custom web application, Drupal does provide a decent framework to build around, but I'd tell you to be sure to consider some of the other excellent MVC frameworks out there... if not for the sake of the developer's sanity. ;)
I like Drupal because I can make cool site quickly... but I often find myself longing for the MVC code I used to write in things like CakePHP, CodeIgniter, etc.
I run my personal site (http://jbenner.net) in Drupal, if that says anything.
See also:
http://drupal.org
http://drupalmodules.com
Big sites in Drupal:
http://popularsci.com (good example of nearly stock Drupal)
http://thestandard.com
http://daughtryofficial.com (and many other Song BMG artist sites)
http://fastcompany.com
http://ccrjustice.com (and many other political sites)