Surviving the Drupal learning curve (learning cliff)

Learning Drupal: I read someone recently refer to the Drupal learning curve as the "Drupal learning cliff", which is actually very appropriate. While a content management system like Wordpress seems to come out of the box ready to go, even with Drupal 7 you need to add your own WYSIWYG HTML editor, Media plugins, page title modules, and more, just to get a basic Drupal website off the ground. Things like this leave a new Drupal user scratching their head and asking "Why?"

While I agree with the Drupal philosophy that content management functionality can easily be extended by using modules from the community (and custom modules you write yourself), the bare-bones Drupal core approach is frustrating to Drupal newbies. (If it helps, this situation is much better in Drupal 7 than it was with Drupal 6.)

In an effort to help you get past the Drupal learning curve, I thought I'd take a few minutes to see if I can offer some help.

The Drupal learning curve - Drupal core

The first you thing you need to know is that there is this thing named the "Drupal Core". The Drupal Core is the very basic functionality that gets your content management system started. In Drupal 7 (just released last month), the Drupal Core gives you very basic functionality with which you can build a blog, publish an online book, or even start a web forum.

The Drupal 7 Core includes a number of basic Drupal modules, including:

  • Block
  • Blog
  • Book
  • Comment
  • Contact
  • Forum
  • Poll
  • Many more ...

All of these modules work, and are ready to go when you activate them in the Modules Administration interface. The only major problem with them right out of the box is that they don't include a WYSIWYG editor. That's very annoying, but because the Drupal powers-that-be want to let you use any WYSIWYG editor you want, they don't include one by default. This is easily overcome by downloading and installing the CKEditor, but again, it's annoying.

The Drupal Core power

The Drupal Core also gives you several features which may not seem like much at first, but are incredibly important to everything you need to build a real multi-user website, including:

  • User management
  • Role management (user permissions)
  • A consistent, integrated management, theme, and menu system

While these features don't sound like much, I first discovered the need for them when I was trying to build a large website using Wordpress, and wanted to add a forum and image gallery to that site. I suddenly realized that each new application I added to Wordpress was going to need its own user authentication system, its own management interface, its own theme, etc., all of which was a major no-no. That's when I was turned on to the power of Drupal.

Because Drupal offers an integrated approach, the same users that comment on your blog posts can also post to your forum, post images on your gallery, and buy products in your online store. You can also create user roles and assign them to users, so you can have Writers, Editors, Publishers, and so on. This is extremely powerful stuff, well worth the price of admission.

Commonly used third-party Drupal modules

While the Drupal Core gives you a little bit less than what you want to create a new blog or website, the way you get around this problem is to (a) add modules to your system from the vibrant Drupal developer community or (b) write your own modules. Don't let that "write your own modules" part scare you off; I've created many Drupal websites by just grabbing free Drupal modules from the community and plugging them into my website.

For my recent Mat-Su Valley Programming website, I added the following additional community-contributed modules to create this new Drupal 7 website:

  • CKEditor - A WYSIWYG HTML editor
  • Ubercart - A complete online store
  • Mollom - An anti-spam module
  • A module to let me control my page titles better

Contrast that with this website (devdaily.com) which uses nearly thirty Drupal 6 modules, and you can see a huge improvement in the Drupal Core from Drupal 6 to Drupal 7.

The Drupal learning curve - Drupal themes

If you've used Wordpress or similar publishing systems, you know that having a nice collection of themes makes getting your website live and making it look great easy. Drupal takes a similar approach, and with the Drupal theming system you can do whatever you want.

The only drawback to Drupal themes compared to Wordpress is that the market of Wordpress themes seems to be much larger than the free Drupal theme market. If you're a large business about to make a commitment to Drupal, this isn't a big deal (because you'll have the resources to create whatever theme you want), but if you're a mom and pop business, this can be a drawback that may keep you from ever using Drupal.

Fortunately there are many people these days (like me) who understand the Drupal theming system, which really isn't very hard, and we can help you make your design come to life. In short, if you can create a theme, there is a vibrant community of themers who can bring it to life.

The Drupal learning curve - CCK and Views

I also read recently that Drupal's "Killer feature" is the combination of two modules named CCK and Views. Because these modules are so powerful -- and because they can let you add great functionality onto your website without programming -- I thought I should mention them here. (One caveat though: You can probably skip this section for a while if you're just trying to get a blog off the ground. You won't need CCK or Views for a basic blog or many other things.)

CCK lets you build your own custom content types from a web interface. For instance, suppose you want to create a job postings website. No problem, just create a Job Posting content type with CCK, and users will be able to upload their resumes and enter their qualifications. That's just one example of a zillion things you can do with CCK, which again, does not require any programming.

While CCK lets you create forms that end users can use, the Views module is a web interface that lets you build any sort of view you want to create. Want to create a list of all those job postings? No problem. While CCK lets you build content types and forms for user input, the Views module is essentially a report builder, letting you build all sorts of output reports.

The Drupal learning curve - Terminology

The final part I'd like to share about the Drupal learning curve today is some more Drupal terminology which may help you navigate the maze.

Drupal Core As mentioned, the Drupal Core is what you get when you go to the drupal.org website and download the latest Drupal release.

Drupal Module A Drupal Module is a piece of software that has been written by a community member and shared for free, or can also be a module that you're written yourself. Modules are the chunks of software that let Drupal do really amazing things. As two examples, the CKEditor is a WYSIWYG editor module, and Ubercart is a collection of sub-modules that turns a Drupal website into an online store.

Drupal Themes A theme is a collection of Drupal templates (which are a mix of HTML and PHP code), CSS, and (optionally) JavaScript code. Templates are the user interface component that make this site (devdaily.com) look different from One Man's Alaska, which looks different from How I Sold My Business, which is different from Mat-Su Valley Programming.

Blocks A Drupal Block is a chunk of HTML, PHP, or other things that let you add more functionality to your web pages. On the page you're looking at, the ad on the side of this page, the Twitter block, and the navigation element are all Drupal blocks.

More learning Drupal resources

There are many other resources that can help you get past the Drupal learning curve. Here are some of the best ones I know:

The two books Using Drupal and Pro Drupal are also excellent resources. Using Drupal teaches you how to build Drupal websites with existing modules, and Pro Drupal is all about Drupal programming and theming.

The Drupal learning curve - Summary

I hope this introduction to the Drupal learning curve (Drupal learning cliff) has been helpful. If there's anything I can do to help you get started with Drupal, just leave a message in the Comments section below, and I'll try to help you.