I recently presented at an event where several web application frameworks were discussed, including Drupal. Around that time I was also working on several projects written as Drupal modules at a level that I had not done before. These series of events caused me to take a step back and consider Drupal's merit as a web application framework.
I've often fought with myself in my head about whether a large web application would be best developed from scratch, based on a loose framework (such as CodeIgniter or CakePHP), or based on a large, existing platform such as a CMS. Typically I would have said that if you're writing a relatively complex application, that it might be best to use a loose framework for pure time saving and best practice adherence.
However, I feel that my opinion may be shifting. Many web application share basic components: authentication, authorization, URL routing, user management, etc. The features that typical web applications share read almost as a feature list for a CMS. What Drupal manages to do is not only implement those typical web application features (well), but also expose a considerable, well-thought-out set of APIs that allow programmers to take full advantage of Drupal's core features and wield them for their own purposes.
Node API
One of my favorite subset of Drupal's features is the node api. This system allows the programmer to create modular content types for which Drupal will control all aspects of CRUD, requiring the programmer to write only the code which will dictate that content's behavior that is different than the norm, such as the layout of a specialized form or storing extra data in the database.
Form API
The Form API is another example of one of those systems that I've found myself often imagining programming for myself. I've often though, "There has to be a way to write a system that will make doing forms and the related HTML not suck so much." The Drupal Form API is that system that I've desired for so long. Creating a form is as simple as populating a rather simple array, describing each field's properties in short form.
Conclusion
I would encourage anyone looking for a framework, nay, a platform upon which to build their web application to carefully consider Drupal. I'd venture to say that just about anything you'd want to accomplish is either already implemented or is (relatively) easily accomplished using Drupal's API and core modules, let alone the community-contributed content.





Hi Josh I have been
Hi Josh
I have been seriously considering this question too, for an upcoming project. Should I use Drupal (now 6.3 as of today) or Codeigniter?
Drupal has a lot going for it out-of-the-box, but has issues that leave me feeling uneasy, ie
1. upgrading issues breaking modules, speed of contributed modules keeping apace with Drupal core.
2. Not OOP or PHP 5 (mainly for security and maintainability)
Other than that, Drupal is coded in modular fashion, is very secure and has a massive community behind it. Plus with the excellent APIs you can code your own modules easier without touching Drupal core.
On the other hand:
Codeigniter, it a super fast tight framework with MVC, PHP5 compatible and excellent classes and helpers, not to mention a great community of it's own.
The benefits of starting from scratch using a PHP framework such as Codeinniter, is that you only include what you need and you code for EXACTLY the way you want.
I'm leaning towards Drupal, as it's saves a mass of time, and time as they say, is precious.
The first thing you will
The first thing you will find if you search the net for comparisons of CMS is that they are dated. Any review you read comparing two content management systems is only marginally useful if it is more than 6 months old.
When new version of these puppies roll out it’s like rolling out a revamped model of a car and if you are not careful you will be reading a review comparing a 2006 Honda Accord and a 2005 Toyota Camry when you are in the market for a 2008. So take any old comparison with a grain of salt, they are useful only to a point.
So I’ll break down, from our ‘noob’ experience, a rating (1-5) of the two and the “winner” across the issue that you are probably most interested in. Whether you are more hands on or using a vendor to assist you these rating should help you get a feel for how hard you (or you vendor) will really have to work.
Post new comment