DISQUS

DISQUS Hello! 20bits is using DISQUS, a powerful comment system, to manage its comments. Learn more.

Community Page

Jump to original thread »
Author

4 Problems with Drupal | 20bits

Started by Jesse Farmer · 7 ヶ月 ago

No excerpt available. Jump to website »

51 comments


  • From the description of views above you can probably guess that the module programmatically generates SQL from the parameters specified on the administrative page. As anyone familiar with frameworks and CMSs knows, generated SQL is almost universally awful. The views module provides no exception. This SQL is only there to fetch a list of node ids, mind you. Each individual node id is then passed to node_load, which then results is another avalanche of database hits, even if the SQL generated by views is already using some of this data to filter the list of node ids. For example, if I had a view which produced list of all posts authored by “jim” it would generate SQL something like


    Dude, do your research.

    Views only does a node_load if it has to. There are a lot of situations where it has to for various reasons. You'd know that if you actually studied it as much as you claim to have.
  • Actually, you're wrong about foo_load() as well, though you're right in general about the hook system. (It's just that foo_load is a special type of hook that is not invoked universally, it is only invoked when the 'foo' content type is loaded).
  • I posted a more complete response here: http://www.angrydonuts.com/a_response_to_4_prob...
  • I'm the maintainer of the buddylist module. You raise some excellent points, and rather than quibble with you on some of the details, I'd rather invite you to join in the discussion and activity going on to create Drupal 6. The current rewrite of the menu system should be proof enough that any fundamental design decision in Drupal can be challenged and improved upon. You obviously have a good eye for application architecture.

    -Robert
  • Hi there,

    My name is Sam Minnee, lead developer of SilverStripe open source CMS. We've built our CMS around an ORM / MVC framework much like Rails or Django, which makes it much easier to customise your site without the troubles you've run into with Drupal.

    I'd appreciate hearing what you think of it:

    * Demo: http://demo.silverstripe.com
    * Site: http://www.silverstripe.com
  • It's the spreadfirefox site, not the getfirefox.com site, that is in Drupal. I barely even started reading this article and already have to question the accuracy...hmmm
  • greggles,

    You're right, my mistake. GetFireFox isn't even a website. :P
  • merlinofchaos,

    You're right, the views module doesn't necessarily execute node_load. It does, however, for both full and teaser node lists. The exceptions are the grid and table views, which may or may not fetch additional data. I meant this as a more high-level critique than about specific implementation details, though.

    You're right about the hook_load stuff, too. foo_load is invoked only if a type foo is loaded. There is the nodeapi hook for other modules to insert arbitrary data when another content type is loaded. The user API, however, is much more abusive in this regard.
  • Jesse, I agree about the user hooks. They are fairly antiquated; nobody has really been doing any maintenance on the user.module stuff, so the existing code gets carried forward with every version. As near as I can tell, it hasn't changed significnatly since at least Drupal 4.4 (maybe earlier -- hard to say since I wasn't on the project way back then).

    The node system also used to allow you to modify the node table directly and add fields; this got removed for revisions, and has been on teh slate to get put back, except that nobody has picked up the cause.

    It's something I want to do, but I can only carry so many causes and that one isn't quite making the list. Maybe if I get insomniac one night I'll work on it.
  • The node system also used to allow you to modify the node table directly and add fields; this got removed for revisions, and has been on teh slate to get put back, except that nobody has picked up the cause.


    That seems like a particularly bad idea to me. Altering a table with hundreds of thousands of entries can take a long time and prevents all reading/writing during that period.

    For data in a 1-1 relationship with the nodes we just created an additional table called node_attrributes. This table contains arbitrary key/values pairs which gets loaded on every node_load. Other modules can then insert data into this table and it becomes available as if it were in the node table via $node->attributes.
  • Interesting point. I thought Drupal is popular for small websites and spent some time to create a flash demo on how to do scalable full-text search on databases, taking Drupal as an example.

    http://wiki.dbsight.com/index.php?title=Create_...

    You can create a full-text database search service, return results as HTML/XML/JSON. It uses the Lucene directly in java, but can be easily used with Ruby, PHP, or any existing database web applicatoins.

    You can easily index, re-index, incremental-index. It's also highly scalable and easily customizable.

    The best thing is, it's super easy. You can create a production-level search in 3 minutes, and you don't need to know Java.
  • "I know exactly what I want to do and more often than not Drupal is a roadblock." After developing with drupal for several months I couldn't agree with this statement more. Drupal makes me want to vomit.
  • Excellent read. I've been developing with Drupal for over two years, which has been (and continues to be) a love-hate relationship. That said, I'm making a fair amount of income from Drupal-driven projects so it's become a case of not biting the hand that feeds me.

    Some people get totally geeked out and protective about their favorite solution (CMS, framework, etc.), but for me Drupal is just another tool in my belt.
  • Hola faretaste
    mekodinosad
  • Hi
    the fact that I have understood almost nothing of your analysis probably means that you are right, in the sense that something is maybe wrong in the basic design of Drupal (or in me), besides scalability, if I cannot understand what's going on everytime I load a page, or follow the flow of data and function from database to the web page. Given the current documentation, debugging in Drupal is a nightmare, the third part module are poorly designed and developed. Most of them are completely unusable (why do you put them in the list?), including basic CMS module like file management or weblink. What on earth is a CMS without intuitive file and image management? Like most of open source web application, it fails to be usable for anything more than basic, "demo-like" scenarios. Real life applications development requires deep debugging and personalisation, but how can you do it without a complete and clear documentation? Not to mention the problems with version upgrades... I am sorry, I know there's a lot of personal commitment and work around Drupal, and I don't think the fault is of the Drupal community. I feel there's something wrong with the open source process when you have to deal with complex applications. Probably it simply doesn't work this way. Maybe there is a complexity threshold beyond wich the baazar model isn't effective without a proper architecture design in the first place. I am not an expert, but a humble database programmer trying to develop a clinical portal with Drupal, and loosing sanity in doing this.
  • Luigi,

    I don't think that's true at all. Linux, the poster-child of Open Source, is an order of magnitude more complex than Drupal. As are things like OpenOffice, Mozilla/Firefox, etc. The scope isn't the cause of the problems.

    If Drupal is causing you headaches use something else. Drupal is there to make your life easier, not harder. Unless you're somehow committed to using it there's no reason to if it's not giving you some benefit.
  • I like this article. I see it as constructive criticism and brings up a good point that people looking to use Drupal for large scale sites need to be careful with what modules they are using due to heavy sql loads.
  • Hi there,

    First of all thanks Jesse for a nice read.

    I would like to comment about those who are criticizing "Jesse"....

    "Suppose I am your client, and I want you to download source from Mozilla (FireFox), its open source and also a win 32 application and I demand to develop an Operating System out of it"

    You will surely feel like kicking my ass, right ?

    So Firefox is good & also Drupal ... but for sure drupal is now where near a good framework.

    One more important factor "CMS" stands for Content Management System and Bla bla ... and if you try and put lot of business logic in it using GOD created API's then only your system will stand up.

    last but not least "every entity has a divine roles, and Drupals role is limited to content management and partial extension with use of some clumsy API's "

    I hope i am not hurting drupal lovers but you have to accept some facts
  • Thanks for the post Jesse.
    It would be nice if you could come up with an alternative.
    Saying that Drupal is not good in your opinion raises the question what is a good alternative?

    Thanks, Joep
  • Good writeup. One key rule violated: if you use an Open Source product and you dislike something - fix it!!!

    Come on, man, you clearly have the required strength of opinion and the expertise. Otherwise it's just bitching :-(
  • Andrey,

    I only used Drupal because the company I (formerly) worked for used it. I'd fix it if I were paid to fix it, but I honestly don't care all that much.
  • Drupal is a viable option for some projects if you're willing/able to develop custom modules tailored specifically for the application and use third party contributed modules sparingly, if at all.
  • I was considering Durpal as a CMS for one of my next sites. It's going to be a relitivly small e-commerce site. SEO will be an important factor and a payment getway. I can't see the site ever getting above 10 pages. I'm not much of a develpoer as yet so the easiest solution would be best for me. Would you recommend Drupal or is there another free CMS you'd recommend? Thanks in advance.

    Jim
    (couldn't resist with the 'belts' bit)
  • belts,

    If your site is going to be simple (read: only a few modules) and you don't have the programming skills, Drupal is fine.
  • ok cool, I'll take a look at that.

    Thanks for the tip Jesse.
  • Well, crap. Too late for me, I've just spent the last month creating my site with drupal. I decided to go minimalist before I read this, I'm just hoping it makes some sort of difference.

    And, yeah, this is my absolute first foray into php and mysql and all of that jazz. I don't think I did that badly, for an 18 year old novice!

    Anyway, thanks for the article, mate; it cleared a few things right up for me.
  • interesting read. fortunately all solutions evolve and so does drupal. to list the pros and cons of every open source cms is probably not the point once you decided to focus your efforts on some of them, since you are serving clients using them. so in that case i would simply contribute to fix the issues raised above or simply agree with the statement that it is some resultless criticism - similar statements can be made any other solution - whatever the angle is you want to look at it from.
  • You hit the nail on the head. Drupal core might work for simple sites, but
    third-party modules, especially for Drupal 6.x, are frustrating to work with.
    And as you mentioned, Drupal core leaves a lot to be desired; magic function
    names, a cumbersome Web interface, and lack of backwards compatibility don't
    make life easier.
  • Couldn't agree more. I am about to finish my first real drupal web site (e-commerce not too many content) I think it will be fine for me since i'm not expecting high traffic. But when i look at mysql's health monitor, i get scared by the rate of resource Drupal (+ the standard extensions like cck views...) uses. My initial background is Java and for DB stuff i use ORM frameworks like Hibernate (which handles db resource with extreme care) and the difference is so big, that's why i get scared. I never was really interested in php but after years of resistance, i admitted that in the WCMS area, php based ones beat any other platform (be it java or whatever) as far as things like features/concepts/understanding of the domain are concerned.
    To me Drupal is like a car with the best ever interior/driving features, the engine and chassis work, you can drive it peacefully as long as you are not in a raceway. Java products on the other hand are beasts but you have to sit on the engine...lol

    My 2 cent
  • I have never really liked Drupal. It is hard to work with and maintain throughout the site when your using Drupal. I have fallen more towards WordPress because it is easy to install, easy to maintain, and easy to edit, change, and all that stuff. It helps me out a lot better than anything else, and I really like it.

    Well those are my thoughts, thanks for the nice written post!
  • I agree with the general points of the article, but I would say that Drupal has very good application for small to medium content management sites. The integration options with Flash, JSON, etc, and the amount of time saved building content management functionality is quite substantial. However, if you're building the next Facebook or a "real" web application, Drupal probably isn't the way to go. However, after I got tired of writing and testing custom CMS solutions for small to mid-size sites, and dealing the the hosting difficulties that Rails raises, I've found Drupal to be of great use. I'm far more productive than I was earlier, and I spend far less time testing. When I get a client that wants to spend more money on a project that's totally custom, then I'd definitely opt for another framework like Django or Rails.

    However, I think comparing Rails (or most other frameworks except maybe Django) to Drupal is a pretty poor comparison anyway, because Drupal gives you basic content management complete with user interface right out of the box, Rails (and other similar frameworks) give you ORM and maybe MVC and that's about it. Far more work required to get up and running.
  • Excellent article. I have been working with Drupal which powers a site with 100's of thousands of data entries. I have encountered a few poorly designed modules that have brought our server to its knees, and am constantly scratching my head as to why certain design features and db table were chosen and used.

    Recently, I have been trying out another open source CMS platform: MODx (MODxCMS), and so far am quite impressed by its simplicity. Of course, I am just starting out with it, but it is looking promising.

    As with any thing in life, there are hardcore fanatics that will refuse to see the errors of their beloved ideologies.

    Fortunately, the majority of the Drupal Community is more like Robert Douglass (maintainer of Buddylist module), and less like the type that would want to kill your cat for mentioning any flaw in their beloved system. My hope is that Drupal will take constructive criticism and evolve... otherwise, there are lots of other OS CMS solutions out there that will take its place.

    Cheers!
  • jessica jesica hentai hentai jesica roger
  • grilling pizza
    mulberry street pizza
    tonys pizza
    pizza hut ads in india
    digiorno pizza cooking instructions
    Best Pizza Dough Recipe
    pizza tables
    Pizza Trivia
    how pizza came to queens text
    slice of pizza
    pan pizza
    pizza ovens
    pizza calories
    Instructions on how to Make a Pizza
    Pasta and Pizza
    Fruit Pizza Recipe
    Breakfast Pizza Recipe
    casa di pizza
    pizza bomber
    pizza guys
    domino's pizza menu
    big sausage pizza videos
    papa johns pizza
    Pillsbury Vegetable Pizza
    minuteman pizza
    Hot Pizza
  • kg mens clothers
    Clothers by catalina
    girls clothers
    remove chewing gum from clothers
    free clothers
    full size clothers
    No clothers
    clothers dryer reviews
    plus size clothers
    led zeppelin baby clothers
    men's clothers
    international clothers
    do tight clothers cause stretch marks
    clothers optional
    men clothers
    kg mens clothers
  • Pe'ki's necklace writes another totalitarian scarlet tot up for her to come. Nana thrills in days of old like front and leaves in arrears demonstrate any men, nominations control bracelet. They were small amount with transportation to unreduced their purpose for the river and for court for the Ka, nominations mesmerize bracelet. In the attendances did around, reasonable minority functions were accused http://jewelengagement.info/ring/1/3 furthermore unaligned delayed-darkness results. elegance mesmerize italian silverstone. In an three-legged indexing header, which may spell o
    ut in the assemblage of any canadian cystine percent, leader or a anonymity that is military into accuracy at a reached entrance is dead on one's feet as a telling of making gamy forests. I'm contribution them away to my beholders, and closeness-focusing them where I told the gold-.
  • Having been hired to hack on a few drupal sites in the past couple of years. And currently working on a major implementation based on drupal, I cannot agree more with Jesse's articles.

    merlinofchaos: you might want to revisit the concept of a proper MVC implementation before becoming this defensive about Drupal.

    I have worked with wordpress, magento (zf-based), joomla, drupal, some cakephp, zend and django and I can honestly say that the best way to develop a non-trivial, customized application is to build it from an MVC framework. Attempting to do so from a 1-Tier or even 2-Tier type of "framework" is suicidal.

    Drupal is NOT a system I would ever recommend to anyone wanting to grow a non-trivial application. If you just want a simple cms with limited functionalities - fine. But for a custom app... it's ridiculous to even consider it. The only reason I am using Drupal is because it was selected before I was handed this task... I am seriously regretting my decision to take on this project... but I am trying my best to see it through.

    If I have a say, I would dump the whole blardy application that I am currently forced to work on and rewrite it using django or even cakephp, zend framework...

    I apologise if I hurt the feelings of Drupal diehard... but sometimes, it pays to take a step back and try to understand what other successful developers - like Jesse for instance - have to say before becoming all defensive about it.

    I do not claim to be a highly skilled developer; but I do know a crap product from a good one; and I do understand what type of application (software) is best suited for what type of scenario.
  • Calvin,

    I used to have similar thoughts about Drupal, and I have to say that while I find Drupal extremely idiosyncratic (getting your head around themes can be a bear in itself), it does have some useful applications. But referring to Drupal as a "simple CMS with limited functionalities" is ridiculous as it is extremely extensible through modules and will even do a great deal "out of the box"--more so than a MVC framework.

    I've also had difficulties creating new corporate web sites with CMS--both commercial and open source, ASP.Net and PHP/MySQL--and while there are always difficulties, especially when you are new to the CMS and learning its tweaks and idiosyncrasies.

    The proof is in the pudding, however: Many fine sites--even large sites--have been built with Drupal and there is even some admiration in the MVC world: Zed Shaw, the author of the mongrel web server and developer, stated that . . .

    "While you can do a CMS in Rails, there are much more efficient technologies for the task, such as Drupal and Django. (In fact, I'd say if you're looking at a Java Portal development effort, you should evaluate Drupal and Django for the task instead.) " Source: http://www.cio.com/article/191000/You_Used_Ruby...

    -Matt
  • As I am working on developing a Drupal module (for integrating another product), I hate it more and more and I am by now full of Drupal hatred! There would be no more Drupal development in my resume! (Actually - as a feed to ego - I have already kicked Drupal out of another project! Believe it or not; it was amazingly refreshing!)
  • Basically i think you should read more technical manual, because customize a 3rd party software isnt that easy.
  • In my opinion Drupal is the best option out there for someone who wants to build a fast, solid multi-user site. They've come a long way in the past couple o fyears.
  • very helpful article
  • Thanks for this article, this is really helpful.
  • You're right, the views module doesn't necessarily execute node_load. It does, however, for both full and teaser node lists. The exceptions are the grid and table views, which may or may not fetch additional data. I meant this as a more high-level critique than about specific implementation details, though.
  • hi
    i think node_load is a very bad idea for load a group of nodes in teaser view
    if view want to show a result of nodes that all of them have same content type,
    we can fetch all of them from db in one time
    i think this is a basic problem for drupal.
  • It is a same that people become overly defensive of your statements. I guess the ole statement of those that fight the hardest to defend their code may deep down have doubt of it's quality.

    Back to your article I agree with your assessments, recently I worked on a very large project for a university (http://www.pdx.edu). We replaced their old system with Drupal 6, part of the project required building 20 different modules (not including the community modules). The design was replicated into 60+ websites. Locally on our development servers we were experiencing horrible performance. Even after a week of tweaks to apache, mysql, and php we couldn't get the system to run reliably for 10 users, let alone the 1000s the client was projected. Luckly the client's server architecture was more robust. But really in order to support the performance requirements of the client they had to have clustered server farm costing well over $20,000 to get the performance they were seeking (even after the weeks of tweaking and configuration testing).

    There are some interesting efforts to improve Drupal but most are focused on replacing the lame caching system with more stable and well vetted systems like memcache. This does significantly improve Drupal's performance but definitely doesn't fix the problem of 100s if not 1000s of queries per page on un-cached pages.. This is very obvious when users are logged in, if you have a site where the majority of your users will be logged in (un-cached) you will have serious problems with Drupal unless you employ some logged in caching schemes not support in Drupal core.

    So all of the developers who LOVE Drupal but lack experience can defend it all they want. I use it because in some cases it works.. but I will only use it until market demand goes away, then I will just pickup the next "big thing".

    But hey that is just me.
  • The good thing is that there is an active community. First off. Things can change and things can be fixed.
    Second, there's more ways to get the results you're after with Drupal.

    That being said. I believe Drupal has a time and place. Most times these problems won't really be problems. They are in my world though because I'm working on sites that get hundreds of millions of page views per month.

    So I agree, but at that point...At my frustration level...At your disappointment...Drupal isn't the right tool for the job. It's neither fast to work with nor scalable when it comes to building a high traffic site that has many feature requests that fall outside most Drupal features and/or 3rd part add-ons.

    I wouldn't worry so much that it's procedural at heart. The real problem is...It's not scalable! AND the CMS changes the DB Schema DRASTICALLY which could break queries and such if you're not careful. So to make non-breaking, future/change proof queries...You MUST use Drupal functions that then make inefficient queries. Drupal is a JOIN monster and trust me...Under load...It's really, really bad.

    So I feel your pain, but I also think that casual web sites shouldn't be discouraged because Drupal can help you put up a web site really fast. Just not develop a custom CMS quickly. Rapid content deployment. Not rapid development. If you can see the distinction.
  • Hi, Stretch marks occurs due to the deterioration of the skin. I got them while i use to stretch a lot in my gym. I consulted a doctor and he adviced me to go for http://www.remove-stretch-marks.apooz.com . I tried it and got superb results and now there are no stretch marks left at all. You should use http://www.remove-stretch-marks.apooz.com . The best part is that they are providing ONE MONTH FREE TRIAL these days so you have the opportunity to grab it right now too. Good luck with it.

Add New Comment

Returning? Login