Darren Mothersele

Software Developer

Warning: You are viewing old, legacy content. Kept for posterity. Information is out of date. Code samples probably don't work. My opinions have probably changed. Browse at your own risk.

Drupal as an Enterprise Web Framework

Jun 6, 2008


I was recently asked to take a look at the Google AppEngine, as a possible host for a web app. One major drawback for me is that it's currently limited to only running Python code, and the framework I'm using (Drupal) is PHP. That rulled it out as an option, but in this process I had a quick look at Python frameworks, in particular a really interesting one called web2py. They have a downloadable PDF comparison of various frameworks, and I was disappointed not to see Drupal listed.

Here's the areas of comparison, seemingly chosen to highlight web2py's strengths - but Drupal does just as well...

Model View Controller? Web2py = yes. Drupal = yes*.
*Drupal actually kind of uses PAC (Presentation-Abstraction-Control) a further development of the Model-View-Controller architecture.

Web Based Interface? Web2py = yes. Drupal = yes. CCK and views modules in Drupal allow you to quickly build your model, and supporting site architecture.

Web Based Database Admin Interface? Web2py = yes. Drupal = yes*.
*The content management tools give you all the access that site admins should need. OK, so there's some stuff you can't access - but you can use PHPMyAdmin if you really need access to the whole database.

CRUD Web2py = yes. Drupal = yes.

Upload Forms Web2py = yes. Drupal = Yes. Only Web2py and Django has a standard mechanism to handle file upload and secure storage? No - Drupal has this too. With optional public, or private file downloads.

Byte Code Compilation Web2py = yes. Drupal = None native. Limitations of PHP as the base language here. There are options for optimizing PHP code.

Ticketing System Web2py = yes. Drupal = Yes. Messages are optionally sent to log only, or display on screen and in log. In Drupal API it's called Watchdog.

Zero Installation Web2py = yes. Drupal = No. But you only have to install once if you use a "multi-site installation" - and run all your Drupal sites from one code base.

Zero Configuration Web2py = yes. Drupal = No. Alright, so you have to enter your database connection settings.

Web Based Model Designer Web2py = yes. Drupal = Yes*.
*CCK provides Drupal with online tools for creating the content types - it's not a graphical SQL designer - but still intuitive and easy for non-programmers to use.

Web Based Testing Web2py = Yes. Drupal = No. Also unit testing is being added to Drupal.

Runs on Google App Engine Web2py = Yes with some limitations. Drupal = No, GAE doesn't support PHP yet.

Caching Web2py = yes. Drupal = Yes. Drupal can use any PHP based caching system, and has it's own very powerful cache system. Plus a throttle system for reducing load during periods of high traffic.

Native Templating Language Web2py = yes. Drupal = Yes.

Template Extension Web2py = yes. Drupal = yes.

Internationalization Web2py = yes. Drupal = yes. Drupal interfaces are easily translated into multiple languages. Custom translations are easy to create, are part of the core system, and allow variables in translations.

Database Abstraction Web2py = yes. Drupal = yes.

Automatic Migrations Web2py = yes. Drupal = yes. Changes to Drupal content types in CCK automatically perform the required SQL Alter statements.

Multiple Databases Web2py = yes. Drupal = yes.

Blocks SQL Injections Web2py = yes. Drupal = yes.

Blocks Double Submit Web2py = yes. Drupal = yes.

Included AJAX Library Web2py = jQuery. Drupal = jQuery.

JSON Support Web2py = yes. Drupal = yes.

I think you can see Drupal compares very well as an Enterprise Web Framework, and this goes to show it really is more than just a CMS.