views:

1826

answers:

11

Drupal is very much a "Do Everything" CMS. There are modules that allow you to add almost any functionality, which is great. However, it feels like a lot of the features (v5 and v6) seem scattered around and unintuitive for the user. As a developer, I'm left with the feeling of having patched a site together using bubble gum and string.

For example, to add text to the default search box (that disappears when clicked), you have to either add some jQuery code OR override the theme. I've also found the menu system more complicated than it should be.

Am I the only one with this opinion? What things (if any) would you change about Drupal's core?

+16  A: 

The lack of true object oriented design means that you frequently have to rely on other developers' foresight to leave "hook" functions to let you alter a certain behavior.

Using Drupal 5 I've also run in to situations where the only way to complete a relatively simple design change is to patch Drupal itself (and then be sure to reapply patches with each new official Drupal release). But, to be fair, you should have seen how bad it was in Drupal 4.

I'm also annoyed that when I take the time to identify a bug or quirk in the current production version of Drupal, I submit a patch, and the patch is never committed because, basically only security bugs get fixed in the current stable release.

Eli
Does "true OO-design" automatically invalid code/event hooks? Do go on.
Crescent Fresh
OK, I play fast and loose with my terminology. But you know exactly what I meant. :) In practice, Drupal is not conducive to concepts like inheritance, polymorphism, etc.
Eli
I actually think you summed it up with 'annoyed'. Every time I'm called on for Drupal work, I get a sick feeling that some core hacking is in my near future.
Pete Karl II
+6  A: 

Drupal is an impressive system. It's surprisingly small for all it does, and it's module system is extremely powerful. But as Eli said, a lot of your tasks are going to rely on other developers doing something in a particular way.

There's a debate within the Drupal community over it's design. Drupal was around before PHP's OOP features were strong, but now that they are, there's frequent discussion about changing the system to use object-oriented data structures. Depending on your tastes, this could be a downside to you as a developer. I'm of two minds about it myself.

The system can also seem to be very "magical" to newcomers, in that somehow it does all this crazy stuff with little explanation. "I only just defined a function, how the deuce does Drupal know how to call it?!"

However, I must say that in general I'm a big fan of Drupal. It's a good system that gets loads better with each major version. I for one can't wait for 7.

Sean Edwards
As a Drupal newcomer, I totally agree with you on the "magical" side. It is pretty bewildering."So hook_foo calls drupal_magic_api which calls drupal_make_website which calls drupal_sign_up_for_godaddy_domain_name_and_bill_my_credit_card?"
Jergason
+18  A: 

Drupal will get you 80% of the way there out of the box, but that last 20% will take months and months.

Nick Sergeant
+31  A: 

To me, the biggest shortcoming of Drupal is that large portions of a live Drupal site are stored in the database. Since there's no automated way to migrate content or configuration between systems, rolling out changes to a live site must either be done manually or dealt with by excessively complicated code.

Sean McSomething
Ditto. There are a bunch of proposed solutions out there, but nothing's defacto, causing lots of questions and hair pulling throughout separate Drupal installations.
Nick Sergeant
Oh, that's a good point. I must've blocked out that particular development headache.
Eli
Definitely. There are ways to reduce the pain, but they are workarounds. If you're used to total separation of functionality/configuration from data, it's a real PITA.
Eaton
That's my biggest shortcoming, too.
ceejayoz
The "bunch of proposed solutions" you can find online come down to a few categories:- Ones that only work if you don't use particular features (e.g. CCK)- Ones that only work if you *do* use particular features (e.g. CCK)- Ones that require modules to record what changes are made and replay them, but that also don't work in all cases- Ones that don't work at all.I don't know if the changes for Drupal 7 are going to overcome this and separate config and data sufficiently. I live in hope :)
Legooolas
Sepehr Lajevardi
+1 This is a major drawback.
dreftymac
A: 

I find that the default admin interface isn't very intuitive compared to other cms' like modx or joomla/mambo

A: 

It has a seemingly bad security record: http://secunia.com/advisories/search/?search=Drupal

stesch
Bad compared to what? Most of those are 3rd party modules, not Drupal itself.
Eli
My comment is gone? IIRC I said, that modules are the main reason people suggest Drupal. And you can compare it yourself to other products via the same search on Secunia. I don't sell a CMS, nor do I work for someone who does. I have no favorite CMS.
stesch
It's also important to note that Secunia only publishes vulnerability reports that are explicitly announced. I've worked with other CMS packages that tuck important security fixes in minor releases with no announcements at all. Drupal has a 15 person secteam that reviews core and all 3500 addons.
Eaton
...and officially announces the security patches, no matter how minor, as a matter of policy.
Eaton
@Eaton: Thanks. I quoted you in http://stackoverflow.com/questions/455234/any-studies-on-the-security-of-different-cmss
stesch
+24  A: 

One of Drupal's biggest shortcomings is that it dances on the line between a turnkey tool for nonprogrammer site builders, and a framework for developers building complex webapps. It has some cool stuff to offer both groups, but the concessions to one crowd always tend to trip up the other.

The growing trend in the Drupal community is to explicitly build developer APIs, then layer administration UI and end-user UI on top of the APIs. This is a good thing, but there's also still a lot of legacy architecture. The project turned 8 years old this week, and every site requires a mix of modules that are evolving at different paces.

If someone hasn't already built a module that does what you want, effectively leveraging the system without hacking core code requires grokking a lot of different internal APIs, a lot of unique-to-drupal data structures, and studying up on some occasionally funky workflows. A lot of terribly bad and impossible to maintain sites are floating around in the wake of people who needed to do tricky stuff and didn't have the expertise (or the time) to research the "right" way to do things.

(Disclaimer: I just co-authored a couple of chapters for a book about Drupal, and I do Drupal work full-time, so I'm about as far from 'unbiased' as you can get. But I do like to think that I keep perspective. I heart Django, too.)

Eaton
A: 

It's written in PHP4. This will change as of version 7. You can write your own modules in php5 of course. As a seasoned Drupal developer and I find my resume has suffered due to my limited exposure to php5.

It's not the best for running services like SOAP. Calling the whole Drupal stack to provide a web service is too much of a performance penalty. The services modules are still in development.

No database transaction support. This becomes an issue when you scale it up to extreme loads.

It would be good to run tests from the command line. This was possible with simpletest 1.x but the current version doesn't support it very well. Simpletest is not mature enough. A clean Drupal install can fail tests. Some of the default included tests force you to use content types and modules you may not need and you can't disable these without hacking the simpletest module.

Rimian
+3  A: 

Drupal is good to get started but you spend more time 'undoing' than actually getting things done. This has been changing especially with the release of Drupal 6 and to be fair it's more apparent in contributed modules.

Managing migrations is also a problem as Sean said. I still don't know of a good method of moving changes from a dev site to a live one.

I am not sure there is anything I would change in the current core and most of the deficiencies are being worked on. Image management needs work, the default admin interface is a little cluttered making more complicated layouts without getting views/panels, etc. involved could use some work.

canen
+1  A: 

Drupal gives powerful tools to Non programmers ,They can easily build up a full featured site with less time. But the problem is that learning curve is too high for Drupal.

If a person is new to drupal and want to make something customized it will take lot of time if he wants to do it in proper way. There are lot of ways to do a single thing in drupal,Finding out which is he best or proper for a new comer is a head ache.

Jinesh
A: 

i find it awfully complex. as a php developer im tearing my hair out on a daily basis over issues that have nothing to do with php but with drupal itself. how / why / when does it do X? its a big beast that needs to be tamed. documentation is limited to a few very good guides, a whole lot of shitty ones, and even more useless forums threads that always seem to pop up in google.

usability on the backend is crap. a custom theme will also alter the layout of the "admin" part of the package which can be extremely frustrating and results in less than pretty layouts.

if you're working with html slicers, its impossible to use html that has not been created specifically for drupal. it pretty much forces you to use drupal-html, with lots of divs, 5 verbose classes per div, etc. by nature, html/css guys can not be expected to know drupal at this level.

i dont like the way it relies on filenames (10 words long, with very subtle differences between them) to build a theme.

having said that, some of the stuff it can do is very cool and saves you days and days of custom php development

stef