I run a 15 year old large (55000 pages, 10000 files) website based on php/MySQL.
After some considerable thought we began the process of migrating to Drupal - we are nearly there after 12 months but the weaknesses of Drupal are fairly clear.

1. Help is a mess. Confused, bits found all over the place, many red herrings, multiple versions to find your way through. Utter lack of a single consistent approach to help, no standards, no unified approach. First timers can find good tutorials to get them started but after that you pretty much are on your own.
2. A lot seems based on 'try it to see what it will do' which is a HUGE time waster. We are left to make mistake after mistake. Time after time I get so far and then come up against another GOTCHA and go back several steps. Node titles are particularly problematic.
3. The user is exposed to very little clarity on what module to use where and when. More often than not replies support personal favourites which may or may not help. It is impossible to work out if some modules are going to be useful or not. Wastes time.
4. If you want to use Drupal, especially for more complex tasks importing a large website then employ a developer. Doing it part time is very difficult.

More than anything Drupal needs fewer people developing 'cool' modules and more teachers - but that is clearly not what Drupal builders want to do.

I am by no means new to website coding but I hoped Drupal would save me writing much code. I dont want to become a developer , my interest is in content. All I need is a pretty common website structure with no fancy bits. Some content relates to other content, most doesn't.

A case in point: My old site structure has two or three instances where we used three or four tables to store data in the approved relational manner. SQL joins were simple to write in order to relate one table to another and generate rows. I have now got to the point where I need to implement that in Drupal.

SEARCH * table_1, table_2 WHERE ID.table1 = ID.table2 returns all related data. After several days attempting to use views, relationship, reference, context I have still failed to find out how this is done. This HAS to be easy doesn't it? SURELY I don't have to write custom code for this?

Comments

Jaypan’s picture

1. Help is a mess. Confused, bits found all over the place, many red herrings, multiple versions to find your way through. Utter lack of a single consistent approach to help, no standards, no unified approach. First timers can find good tutorials to get them started but after that you pretty much are on your own.
2. A lot seems based on 'try it to see what it will do' which is a HUGE time waster. We are left to make mistake after mistake. Time after time I get so far and then come up against another GOTCHA and go back several steps. Node titles are particularly problematic.
3. The user is exposed to very little clarity on what module to use where and when. More often than not replies support personal favourites which may or may not help. It is impossible to work out if some modules are going to be useful or not. Wastes time.
4. If you want to use Drupal, especially for more complex tasks importing a large website then employ a developer. Doing it part time is very difficult.

All four of these points are not issues with Drupal per se, but rather issues with the Drupal community. You are not the only one to face these issues, in fact pretty much everyone faces them. But as the community supports itself, the only way to fix this, is for the community to fix itself. The problem is that while everyone goes through the issues you are facing, they break up into two groups:

1) Those who quit
2) Those who stay

Those who quit never learn enough to be able to contribute back to the community, and those who stay generally don't fix this problem. So things end up being the same. That said, many who stay do try to contribute in various ways, creating tutorials, helping on the forums, and helping in the issue queues.

Many of us developers request that non-developer types who learn how to use a module contribute to documentation for the various modules, as they are the best suited to do so, but the fact is few people actually do contribute to this documentation. It's only a small portion of people.

SEARCH * table_1, table_2 WHERE ID.table1 = ID.table2 returns all related data. After several days attempting to use views, relationship, reference, context I have still failed to find out how this is done. This HAS to be easy doesn't it? SURELY I don't have to write custom code for this?

One way or another, you're going to have to write some custom code for this. Either you can write code that will integrate your custom tables into the Views module, or you can do a custom query using the Database API. But regardless of which, I don't think you will find any contributed modules that will do queries of your custom tables without some sort of custom coding.

WorldFallz’s picture

4. If you want to use Drupal, especially for more complex tasks importing a large website then employ a developer. Doing it part time is very difficult.

Substitute just about any thing else for 'Drupal' in that phrase and it's still the same. Web development has come a long way, but auto conversion of websites from one technology to another is still a complex problem that requires a certain amount of expertise. Frankly, i can't imagine a large site even considering doing it without a dev.

More than anything Drupal needs fewer people developing 'cool' modules and more teachers - but that is clearly not what Drupal builders want to do.

In general, developers make poor teachers of anything other than development. Drupal has a huge community of users and site builders that would be much better suited to teaching and yet, as jay also mentioned, they generally don't. Developers are, by far, the smallest part of the drupal community-- it's simply not fair to expect them to do everything while the VAST majority of drupal users, simply consume without contribution.

A case in point: My old site structure has two or three instances where we used three or four tables to store data in the approved relational manner. SQL joins were simple to write in order to relate one table to another and generate rows. I have now got to the point where I need to implement that in Drupal.

imo this is by far the most common error i see when experienced developers, new to drupal, try to use drupal initially. First, stop thinking in terms of sql, tables, relations, etc. Before you can get to that part of drupal you need to understand what it does and how it works. Attempting to force drupal to bend to your task without having a clue about the api or how it works will only result in the type of frustration you are experiencing.

SEARCH * table_1, table_2 WHERE ID.table1 = ID.table2 returns all related data. After several days attempting to use views, relationship, reference, context I have still failed to find out how this is done. This HAS to be easy doesn't it? SURELY I don't have to write custom code for this?

My initial reaction to this statement is "Surely you're kidding, right? Why would you expect a framework/app, that has it's own schema and api, be able to automagically understand your custom data structure without some sort of custom code?

And this is actually, where drupal CAN and DOES save you a lot of time if you understand it. You can either turn your custom structures into drupal entities, which will give you CRUD and views integration 'for free', or you can describe your custom structures directly to views using the views api. I tend to prefer the former, but either will be far less code than having to bespoke all that, and everything else drupal provides 'for free', yourself.

Basically, if you're not willing to invest some time up front to learn drupal and do things the 'correct' way, then you're better off not using drupal at all. And I honestly don't mean that to be rude. Its just something I've seen time and time again in the forums over the years.