A user on the Twin Cities PHP User Group asked this question recently, with the context being the configuration of a complex site with many users and data relationships between those users and other content.
In these communities Drupal sometimes gets a bad reputation. People don’t fully understsand what they’re dealing with when they download Drupal. They un-tar it, install it, and end up with a “now what” moment.
As a community, how do we respond to this? Here’s one example.
The Answer
The primary reason I've maintained an interest in working on Drupal is to accomplish the CRM system you are describing here. The only way you can get a comprehensive view of how users are participating in your network is to use a system that is extensible enough to aggregate and produce information on a variety of data points of different shapes and sizes. As others suggest, it can't be done without some out-of-the-box thinking and a little code, but I'd argue that it's a very good investment.
Essentially, Drupal is a RAD system disguised as a content management system. That is, it's made up of "content types". Out of the box, you get "page" and "story", which are not especially inspirational. It's expected that you add other content types such as blog posts, events, polls, and so-on. This is also interesting, but not groundbreaking.
When you stop thinking of content types as content, and start thinking of them as entities, things get interesting.
Describing the tools
Before you get anywhere with this, you need to install an important module, CCK. This allows you to add arbitrary fields to your content types. You can add text fields, numbers, and checkboxes. You can also add Node Reference fields, which create relationships between different entities. Now you can create "courses" that link to "departments", or "organizations" that link to "managers", or just about anything else you can think of.
Another key module, Views, is a query builder of sorts. You can mash up any of these fields, and/or fields from your other entity types, filter on a variety of field-based and global criteria, and output the results however you'd like ( lists, tables, CSV, RSS, json, query results for integrated mass mailings, etc.)
With all of this, most Drupal applications are created without any coding at all. You can build up content types and list them out, import them and export them, share the data with other applications, or possibly be an RDF data store.
Most Drupal coders spend their time writing fields and formatters to jack into this system. There are field modules for date handling ( with ical import/export ), image handling, image post-processing, local and remotely-hosted media, geocoded addresses, sky's the limit.
For example, some of the work I've done recently includes adding OpenGIS datatypes from MySQL or PostGIS into this framework, and/or searching for data based on publicly available shape files. (I'll cover this at this Wednesdays DUG meeting - http://groups.drupal.org/twin-cites for more ) You could do that yourself for a one-off app, but why? This is true of any number of field types.
Fields can use different output formatters depending on the context of how they're used. For example, an address field could be a zip code, a formatted address, or a map. It's all a little like MVC, but on a much more slice-and-diceable level.
A reason Drupal frustrates people is because its focus is more on processing data and information than on micromanaging the rendering of a single web page. Folks with a background in HTML, Dreamweaver, etc. expect to be able to place and order information "just so" on their web pages. They don't want to think about their pages as data, and they certainly don't want to think about routing a flow of community content throughout their site. This causes many webmasters to run screaming to Joomla. By contrast, people who think in terms of databases, or people who are accustomed to working with a flow of content ( such as newspapers ), or people who simply view it as a newfangled word processor have a much easier time.
I hate Drupal!
This is a sentiment I hear quite often from people who went about it the wrong way, or from organizations that got stuck with a set-and-forget installation and no training. It's an impression that can be avoided with some foresight, some planning for sustainability, and some understanding of best practices.
For example, the biggest mistake people generally make is failing to understand the deconstructionist model I've described, so they start downloading dozens of single-use modules that don't work well together. They also fail to understand that "less is more", and so they switch on every possible module and every possible permission. The result is daunting for users.
People "hate" just about any tool that makes powerful claims but whose usage is elusive. In Drupal's case this is often a problem with education or pre-planning, of getting started without a knowledgeable guide.
Starting off on the right foot
I would never start a Drupal project without using a pre-made distribution, such as something that Bryght, Acquia, or even Advantage Labs provides (our latest build is at http://svn.advantagelabs.com/managed/drupal/releases/drupal-6/campion ). Not only is this a time saver, it's a way to outsource module vetting to someone whose survival depends on the sustainability of the modules they're including. Many (but not all) of the usability arguments against Drupal are addressed by these distributions.
A lot of people also "hate" proprietary solutions or their developer's roll-your-own tool, but since you can't always call those out by name, you don't hear about them as consistently. The difference is that there's a much smaller pool of resources, training, or support vendors who can help people out a proprietary dead end.
My $1.50


Comments
Drupal is not an hammer but wood and steel
Yes, I had the same experience. Two years ago when i was looking for CMS, i checked out Drupal on my local machine. As you mentioned, i was completely baffled with the tools in front of me. Later i tried a commercial CMS (EE), which had a great documentation and intro movies. But i knew then there was something special about this software if big name are using it. (sony, mtv etc.) It's been just a month i found the hidden powers of Drupal, it's essential modules (CCK, Views) and amazing community behind it.
There is an excellent article in drupal.org about drupal's concept of "abstraction". I wish i read the article two years ago.
http://drupal.org/getting-started/before/overview
Noushad Moidunny
www.noussh.com
Nice take
This is a good take on a complex subject. As difficult as it is to explain Drupal to someone with limited technical experience, it is often just as difficult to explain why Drupal is more than just a CMS...
-mike
Thanks guys!
For this particular post, it didn't hurt to be communicating with a technical audience. It's an argument for Drupal over a rolll-your-own approach, even if starting with a framework of some kind.
It's unlikely that I'd sway many new users with this description :)
Great post, Allie. I had a
Great post, Allie. I had a similar experience. I installed Drupal for the first time and was completely put off by my first few hours with it. I tossed it out and didn't give it a second look for several years!
I think that the usability work going on now for drupal.org and Drupal 7 will give a better first impression.
By the way, it was nice meeting you all in DC last week. Take care!
~Scott Phillips
In the end I know I can make it work
I've been working with drupal for a few months. If it wasn't for the fact that I know some smart people have prevailed on completing their sites, I would have dumped this long ago.
It's an insane investment of time to do things that should be much simpler. If done some customizing of the ubercart module code and I have to say that writing PHP for the these modules is easier than the basic configuration of the software out of the box.
We're running a hosted shopping cart which works well but isn't very flexible. I would like to have the complete control of an open source package like ubercart but loath the idea of ever having to do an upgrade. The drupal modules often don't work well with each other and the configs in a database instead of files that can be easily copied is a disaster if you can't take your site down to upgrade it.
I'm not a part of the developer community so I'm really looking at this as an outsider. I've worked closely with USD/Linux open source years ago and that codebase was way more complicated but seemed much tighter integrated.
I understand that Drupal 7 will incorporate more into the core which is a good idea. I would expect that a basic site should operate with few if any module configuration. Imagine if Microsoft required a user with a CS degree to spend 2 hours to figure out how to get an image to appear on windows.
Doug Liser
This is a good take on a
This is a good take on a complex subject. As difficult as it is to explain Drupal to someone with limited technical experience, it is often just as difficult to explain why Drupal is more than just a csm
I'm glad somebody else is in the same boat
Most of what you can do in Drupal can be done quicker coding from scratch. It's powerful, but seems very limiting and overly abstract for anyone who knows PHP/MySQL to begin with!
Can something be done to eliminate the steep learning curve required for Drupal?
Post new comment