Reply on "Drupal is Shit" by Nathan Whitworth
Nathan Whitworth's blog has come up as solution to many of my Zend-problems i came across. I consider him an expert on PHP development. Reading a post Drupal is Shit by him, made me think. Twice.
But Drupal is much more powerful than Wordpress! I can here the echoes of Drupal fans already and I’m not even going to try and disagree with them, I shall take it for granted; If you’re building “complex” websites then Drupal is more more suited to the job than Wordpress. Fine, I’ll accept that without a fight, but I will say this; if you’re building “complex” websites, then a solid MVC framework is far, far more powerful, flexible and scalable than Drupal ever will be.
Spot on! It is a pity that his post does not get more into the background issues. Stating that one look at the Drupal source and was instantly reduced to a quivering wreck..
Why? Wich parts stood out most? And how should we improve that? Is it just a matter of perspective?
I too have seen many a project where there were more modules overriding 3rd party code and core then functional modules. What I mean is that every core module had at least one "ourproject_forum_hack.module" going with it. And those were actually quite well organised. Too many projects I saw could have been done in at least half the time, with probably less then 30% of the code, using a proper framework.
So, I think I agree with Nathan, on the parts that there are better solutions for many problems that are solved with Drupal nowadays.
But then again, Drupal is so much more then a piece of software. It is first and for all a large group of committed and nice people. They are Drupal too. And they are by no means "Shit".
What do you think? Is Drupal Shit? And why not? Is Nathan plain wrong, or does he have a strong point?
EDIT (Woops, was looking up the amount of H in Nathan's name, and then forgot to write it down in the title. Title changed.)

“if you’re building
“if you’re building “complex” websites, then a solid MVC framework is far, far more powerful, flexible and scalable than Drupal ever will be.”
Yes, I agree. But a solid MVC solution is far more expensive, complex and difficult to develope.
Quoting one of my previous bosses “There are no bad solutions, there are simply adequate and inadequate solutions”.
I liked this text and i
I liked this text and i appreciated. I’ve read all. When i was surfing youtube, i watched a video about this
Have a nice day.
I like to say Drupal is shit
I like to say Drupal is shit in the same way that Democracy is shit.
They are messy, awkward and inefficient — and the alternatives are much worse.
Bèr has a very important
Bèr has a very important point IMHO. Being in Drupal for two and a half year, there is one thing, that I find is the biggest problem: we sometimes handle it more like a religion than as a system. Don’t insult the name of the lord. This means: trying to solve everything with it.
Whilst it may be perfectly fine that some things - in fact a lot of them - are much quicker, better and more performantly done with custom code or a lower-level php framework, like Bèr points out. Do we have to eat only our own dogfood? The world is much bigger and full of clever people.
I know the sites exacly Bèr quotes. Recently a client wanted the user account page to be almost opposite of what it is out of the box. I found myself form-altering or (to my shame) just display:none - ing lots of stuff. In these situations(I think those are what Anonymous that hates his Job describes) you think: of what gain is Drupal to me now? It’s more of a burden then. Or take the situation you need access to be controlled by the menu tree. Even though there is a module for that now, other systems do that effortlessly while Drupal totally sucks at it.
And again: do we have to claim Drupal can solve any problem better than anything else? Can Jehova and Mohammed coexist? Recommending the client another system or maybe custom coding will save you and him lot of grief. You lose this client, you get another one.
Still Drupal’s dream is to be able to do anything, and great things are achieved because of that. Still the stronger its position on the market gets, the smaller are my problems to admit that in some cases, it just won’t fit.
I read Zen and The Art of
I read Zen and The Art of Motorcycle Maintenance too. The elusive quest for “quality” can certainly be a satisfying pursuit.
In the meantime, I have kids to put to bed and a boss who wants a real CMS that can do multi-sites and proper editorial workflows. Drupal is just peachy for that, and lets me see my kids once in a while. If it’s good enough for the preznit, it’s probablly good enough for our spot.
Drupal is The Shit! My goal
Drupal is The Shit!
My goal is to Drupalize the world… and then the universe - MUAHAHAHAHA
My friends say Drupal is a cult.em
Truly though - I have not come across any CMS as flexible and user friendly as Drupal, and I have seen a lot of them!
Actually, I’d say the real
Actually, I’d say the real strength of Drupal is this:
When you want to add a feature to your site, two thirds of the time someone else already wrote it for you, and for free. Even if you have to make some tweaks, you will still spend less time overall than using some “awesome” framework and starting from scratch.
This is the main reason we switched from our own developer-friendly CMS to Drupal; now we don’t have to spend a huge portion of our time on custom programming.
Totally agree with you. With
Totally agree with you. With frameworks you still have to code user profiles, registation forms and other common web features.
IMHO a lot of the Drupal
IMHO a lot of the Drupal hate comes from the steep learning curve and people just not wanting to spend the time to figure it out. Five years ago I was like that, but I decided to stick with it and figure it out. Hundreds of traces later and enough dprs to circle the equator a couple of times and now I find that there isn’t anything I can’t get Drupal to do if I put my mind to it.
As far as the coding problems, I would love to see some examples. He blasts Drupal as bad code, but then praises Wordpress on top of advocating for full OOP. Neither Drupal nor Wordpress has full OOP, and I don’t see Wordpress having it for a long time to come considering they haven’t even decided to cut PHP4 loose.
For UX - yeah Drupal really sucks in that aspect, but that is all changing come D7 time. And even while it does suck, we are given the flexibility to easily override it with different modules. I do this in almost every Drupal site I set up. Try doing that in Wordpress and you end up with ten times the code and a lot less hair.
And as far as performance I can only speak from experience. When we had Crooks and Liars on Wordpress we were running only about 6 plugins. We had a webserver, memcached for object caching, wp-supercache for anonymous page caching and running MySQL in a m-s-s replication. We constantly went down when we started getting around 15,000 pvs an hour. I moved everything to Drupal and we have about 25 custom modules, plus logged in comments and multiple sites. We are using the same number of memcache servers, a single webserver and a single database (one of our old masters - same hardware). Since that the switch have had periods of over 50,000 pvs in an hour, and don’t have to worry about the headaches of dealing with replication lag and the other nightmares that come with it.
Wordpress is great for a blog or small site. Out of the box it rocks and you can be up and running in no time, but if you want more (or plan for more in the future) then go with Drupal. Try creating a full community style site with user interactions in Wordpress, then compare it to how simple it is in Drupal. Just dealing with permissions alone in Wordpress is extremely inhibiting. When we were on Wordpress I wanted a “moderator” role where moderators could edit, delete, etc. comments. The only way to do that was making them full admins, so I had to resort to the dreaded core hacks to make it work. I don’t miss those days one bit.
It’s true that sometimes a
It’s true that sometimes a framework is better suited for a given site than Drupal, but is that really a case against Drupal? The same can be said for any CMS. If you’re building an extremely customized web app then I doubt any other CMS is going to help you all that much (except for maybe something like MODx which is almost a framework anyway).
Drupal never claims to be perfect for everything, yet all the time people come out and say Drupal isn’t good at this or that and completely ignore the fact that, in general, Drupal is better at most things than many other CMS’s are.
Also, I’m a little suspicious about your claim that most of your Drupal sites could be built in half the time. That sounds like a case of classic budget under-estimation. Frameworks tend to feel like you’re moving really really fast until you get near the end and have to think about 100 little details that didn’t cross your mind until then. For example, you’re using tags? Are they separated by spaces or commas? If spaces, then how do users enter a multi-word tag? What if the user accidentally enters commas too? Or enters the same tag twice? Or wants to edit their tags? Or delete one? Or how about translating user-entered tags into French when your client decides they’d like to expand into Europe? These are things you must be careful of.
Also, I’m a little
Also, I’m a little suspicious about your claim that most of your Drupal sites could be built in half the time. That sounds like a case of classic budget under-estimation. Frameworks tend to feel like you’re moving really really fast until you get near the end and have to think about 100 little details that didn’t cross your mind until then.
First let me state very clearly that no-way “Most Drupal sites could be built in half the time”. Not most. A lot. Or many. Certainly not most.
And then about the details: this -unfortunately- is just as true the other way around.
I spent over 4 hours recently, creating a quick solution for a “detail” on the tags. The client and salespeople agreed upon a solution where there was autofilling, but /no/ adding in taxonomy tags. As /you/ may know, Drupal allows “FRee” tagging wich means autofill, AND the ability for any user to add new tags. The people did not know Drupal inside out. They new about the freetagging, but not the exact details. That I had to tell them that what they wanted was not really possible, they looked at me like this: o.0 0_0
So sure, a framework leaves you with a lot of stuff to think about and stuff that you have to decide upon. While Drupal has this all though out for you.
But at least it /lets/ you think out stuff your way. Whereels Drupal very often has things done her way. And if you want it your way, you will need budgets and development times that make everyone think “wow! is Drupal really /that/ inflexible? That a silly change like I want, cost me hundreds of euros?”
Elegantly worded, Mike. A
Elegantly worded, Mike. A perfect example of why Drupal makes sense.
Hell is Drupal theming.
Hell is Drupal theming.
Don’t get why we’re
Don’t get why we’re suddenly making a fuss out of a year old>/em> rant?
Not everyone will like Drupal. That’s fine. There’s plenty of apps to go around. Let’s just focus on keeping on making Drupal better and better. :)
Michelle
Ugh, sorry for the typo…
Ugh, sorry for the typo… Let’s see if I can fix it:
Luckily Drupal 6 finally had
Luckily Drupal 6 finally had a basic tag-closer :)
I just came across it only now. And I found the particular quoted phrase spot-on. With the D7 coming close to freeze, it may be good to see if we are doing any better now.
Drupal has one huge
Drupal has one huge disadvantage: lack of backward compatibility in new versions. Every new version breaks lots of modules & makes it very painful to update. I still have a site running Drupal 5 because upgrading to 6 was too painful and would break too many features. Another site I switched to WordPress rather than upgrade to Drupal 6, since it’s content heavy and switching to WordPress was no more painful than upgrading to 6.
This is by Choice. I, for
This is by Choice.
I, for one, think this is a good choice, but poorly implemented.
Drupal has a rather heavy focus on “keeping up to date”. This, I think is wrong. Drupal should mnore actively tell you what I tell my clients: No need to upgrade. The new version is a whole new thing. Don’t treat it as a next version but rahter as a whole new product.
I tend to only upgrade when the site is being overhauled and renewed anyway.
“Why fix something that ain’t broken”?
It is not as if D6 has features that you cannot do without: you have been doing without them for half a year or more, on D5, already!
Also he’s missed the point
Also he’s missed the point that you can create complex sites without writing a single line of code.
No. You can build complex sites which Drupal was pre-packaged to make without writing a single line of code. Sure, you can bust out CCK and do some fancy stuff with themes, but then you get into writing content templates and all of a sudden you realize there’s a need for business logic that wasn’t anticipated by the module writer.
Which means you’re off writing your own module or hacking an existing one — in either case you’re on your own in terms of support.
Drupal is EASY.
No. Drupal is a bloated, unintuitive GUI wrapper around a large well-supported body of 3rd-party code. A considerable amount of the available documentation is geared with the expectation that you’ll be exclusively using the interfaces designed by module developers for administrating your site. Drupal is designed with the expectation that you shouldn’t have to write custom code, and this expectation is stifling to a developer who’s used to being able to make any change they want.
Choose two: customizability, ease of use and ease of maintenance.
Why? Wich parts stood out most? And how should we improve that? Is it just a matter of perspective?
I’m not Nathan and can’t claim to share the same qualms. Here’s the grief I have with Drupal:
As a related issue, fixing bugs in 3rd party code is a bloody PITA. There’s all kinds of weirdness in some of the modules — CCK’s autocomplete widget, for example, will make requests over http:// or https:// (whatever your site’s configured to use by default) — which means it’ll break on the opposite (XDR etc). It’s a small oversight which can be fixed without changing their code (ie, inject some JavaScript which rips their prototypes to shreds). I can’t submit patches upstream due to restrictions of my employment, so obviously half this point is a personal issue. Finding and diagnosing these bugs is a PITA nonetheless.
In Drupal’s defense, I’m working on a project that I’ve held should not be using Drupal (or any other CMS), but am required to by my employer (“if we write custom code it won’t be maintainable”). So I end up using what modules I can (ie, reams of them) and then writing reams of custom code (one module with a crapton of sub-modules) for random things.
tl;dr I fucking hate my job.
Drupal is shit,
Drupal is shit, yeah.
Definitely, Drupal is crazy shit!
Building a site is only a
Building a site is only a first step, you then need to maintain it, something Nathan doesn’t seem to have considered.
Also he’s missed the point that you can create complex sites without writing a single line of code.
I am currently involved a
I am currently involved a porject that has so many modules and even more overrides on modules that it is entirely and utterly impossible to maintain. So no-one maintains it. Other then fix a bug or two now and then, or hack up even more code to override already overridden forms and theme alrteady themed items. I am there to make all this better and we are going to.
But ht result is a Drupal core that has not been updated for over half a year. 3rd party modules whom have critical an less critical security holes in them, and so forth.
I am a hundred percent sure that this particular client should have simply used symphony, rails, cake or whatever suits their team best, instead of a range of modules to change about every feature in Drupal into the way they wanted it, and creating an unmaintainable piece of spaggetti.
But if they’d gone with
But if they’d gone with another framework they’d have exactly the same problem - code that needs in-house maintenance. Just a lot more of it. And if that’s the issue, surely they need less bespoke code, not more. It’s more often the case with custom apps that there are no security patches to apply simply because they haven’t been written. Going with a custom framework shifts the entire maintenance burden to the client which would seem to exacerbate the problem you describe.
Yes, exaclty “the same
Yes, exaclty “the same problem”. Not more of it, not less of it: the same.
And why would code for Drupal (where Drupal is used as framework) be any less or harder to maintain then code on any other framework?
I know for certain, because I track my time rather well, that I spend a lot less time maintaining my RubyonRails projects ten Drupal projects. And that includes some serious security upgrades in the RoR core.
You -and a lot of people with you- treat a symphony, or RoR app as if it is “custom code”. It is not. It is not “from scratch”, and your own part of code in it, can be less then 10% of all the code, at times.
Several engines and core of many framework come with security patches.
In case of Ror, though, SVN, and more and more often GIT comes to the rescue here: patches are pushed/pulled trough revision systems, rather then “unzip and overwrite” wich often causes a lot more time (for me).
And this is why we use
And this is why we use frameworks generally. But if you want to use another framework over Drupal, you need to pay someone to actually build the CMS - Symfony and the others don’t give you that out of the box. And it will be a custom-built system that requires its own maintenance even if parts of the application are handled by the core. I’ve certainly not heard of anybody building a multi-site CMS using Symfony in 2 weeks and I know some very talented Symfony devs. This is really no surprise as Drupal is a domain specific framework. But of course it’s true that customising Drupal takes you towards the same territory as any other framework (and so we see a movement to minimise this and replace what used to be done by custom modules with more generic solutions like CCK and Views).
Regarding version control and updating your system, apart from CVS, you currently have the options of an SVN-supported distro like Acquia or Pressflow, and/or drush - so I don’t really see this as an issue going forward.
If I had the resources, time
If I had the resources, time and skills to get down, dirty and develop a whole site every time using a framework, then I’d have had to forsake every other aspect of my life and probably take out a massive series of loans or something.
Drupal is EASY. I can get things done. In five years, this won’t matter. Drupal will be different in even one year. Constantly improving. Meanwhile, I can run simple updates on most of the codebase and I’m free to do other things, whilst .Net and bespoke code people are tied to supporting their existing platforms.
The benefits of a system such as Drupal far outweigh anything that might lead me, or anyone else, AFAICT, to call it “shit”.
Besides which, I’d rather be having a few beers at a Con with the guys I know in this community, rather than a bunch of low-level nerdlinger code monkeys. There, now I’ve made it politically incorrect. :p
My experience is that a
My experience is that a framework, using engines, plugins, mixins or whatever they call it, develop faster and quicker then Drupal modules in general.
It takes me less then 40 minutes (including looking up on what has changed and how stuff was done again) to build a registration/login system using OpenID.
In Drupal that is less then 5 minutes. But that is not considering details (see my comment above on details too). What if you do not want uname/pw logins at all, but exclusively openID? Then Drupal will get you way over these 40 minutes developing a form-alter-menu-override-module-using-weights-to-get-under-the-User-module and so on. In general you will need quite a dirty solution, using a lot of time.
Creating a module (onlyopenid.module) wich relies on Drupal modules so heavy that an upgrade will most certainly require it to be partly rewritten.
Again: there are a lot of cases where Drupal /is/ a lot faster, save a lot of time and gets you running within minutes.
But there are just as many cases where a simple instance of some class together with an engine get you far close to the 100%-the-way-the-client-wants it, a lot faster.
I don’t see why his
I don’t see why his opinion should concern anyone.
This guy might be very good with back-end php development, but he admits in the post to have no experience with using cms/php frameworks for web development, meaning his view is one of a newbie. He certainly knows nothing and can’t pass judgement of drupal’s code or suitability for any kind of job.
“The right tool for the job” depends on the operator- someone with familiriaty with one language/framework/cms will do much better than another with a different set of expertise.
It’s always good to expand your set of tools, but expertise is gained by specialization and as such, it’s very hard to be an expert in. say. drupal and a php-framework, let alone a python framework, i.e.
I think that post amounts to
I think that post amounts to not much more than a flamebait ad hominem attack. Let Nathan write some specific criticisms and then there can be an intelligent discussion.
That is part of my point
That is part of my point too. But eventhough he is not particular on what parts he thinks are crap, he /is/ particular on why Drupal is not the solution for many problems where it currently is used for. (Right tool right job)