(Article) 4 Problems with Drupal

Article : 4 Problems with Drupal

Drupal is an open source CMS. It it used by many big-name websites, like The Onion and the Mozilla Foundation's Get Firefox Spread Firefox campaign. However, it suffers from a few serious problems which make it extremely difficult to adapt to large, complex sites. If you're looking to deploy something like a social network using Drupal then this article is definitely worth your read. Even if you're not, these are facts any developer or admin should know about the software they might be using.

My relationship is definitely love-hate and depending on what sort of site you're looking to deploy using drupal this entry might very well be worth a read. I'm going to assume that people reading this are familiar with designing web applications and the typical structure of a CMS. Drupal uses some non-standard terminology and is very jargon-intense. If you're not already familiar with Drupal then I suggest reading IBM's article on Drupal's design.
Design

This section is for developers. It is possible to use Drupal in a way that never requires you, the consumer of Drupal, to write PHP. There will be problems with this, mostly related to performance and maintainability, but as I hope to show, these problems stem largely from the design of Drupal's core. Now, the big issues.

1. The API is ignorant of context

Put simply, loading a node (or a user) is an all-or-nothing deal unless you want to write your own SQL. In Drupal each module has the option of hooking into the node (and/or user) API. The most common case is where a node has some additional data it wants to associate with the node. Typically the node will create a hook so that every time a node is loaded is queries the database and inserts some that data into the node. This happens every time one calls node_load. The situation is analogous when one invokes user_load to load a user object.

Now let's take the buddylist module as an example. This is a third-party module and thus not part of the Drupal core, but the idiom is used throughout and module developers basically have no other option if they're looking for any kind of maintainability. This is the heart of the buddylist_get_buddies function, which returns a formatted list of friends.  Read more..

Courtesy : 20bits.com