At PBS, I frequently find myself with a proposal to build a web application with Drupal. We're primarily a Django shop, so you can imagine my bias against Drupal. Yet these proposals continue and I routinely find myself pushing Django instead.
To date, we have attempted exactly four Drupal sites at PBS. Three of them eventually made it to production. All three experienced significant delivery, quality assurance and/or scalability problems. These apps were built by experienced development shops, even some who had proven track records and delivered exceptional (non-Drupal) applications in the past.
I am sure that it is possible to build a solid, highly scalable Drupal application. There are many examples out in the world. So what's the deal?
In a recent post, Drupal v. Django, Nick Sergeant provides some excellent talking points on the matter. I agree with every one of his points. Some of my favorites are echoed below:
- Django is a lower level development framework (than Drupal) that encourages rapid development and cleanly written & organized code.
- With Django, we're able to construct custom functionality at a more rapid pace than Drupal.
- Drupal funnels data into chunks of content referred to as "nodes", which developers must often force their content into. The content should define the data structure, not the other way around.
- Because Drupal stores so much configuration and definitions of functionality in the database, it becomes incredibly difficult to version control the software.
- Drupal's default admin interface is riddled with UI and workflow problems (one of the primary focuses of the upcoming Drupal 7 release).
- Django's default admin interface is designed to encourage quick and easy content management, and allows developers to quickly design custom admin interfaces and workflows.
I don't mean to add fuel the Django versus Drupal fires, so let's just rename this post to "Why you shouldn't introduce Drupal into a Django-centric environment." I'm just looking to add some sanity to my life.