Why I Use Drupal

Technology shouldn't be used just for the sake of technology.  It should have a clear benefit that you can measure.  I could have the best shovel every made, hand-forged and encrusted with diamonds with a gold-trimmed handle (my dream), but if all I can do with it is dig holes, then fill them back up, what good is this ultimate shovel?

These days it is almost incomprehensible that you would need to start coding in PHP from scratch for most projects, and plain static HTML pages are dead, or at least should be dead.  And gone are the days you can charge someone an arm and a leg for a custom content management system while keeping your conscience clean.

People want and expect to have control over their own website without having to call you up for every change, and you need to oblige them.  Usually they don't need a 100% custom solution.  They only need something to look like a 100% custom solution.

Wordpress is great for blogging.  Even perfect, maybe. And I still use it if the site is only going to be a blog.  For anything that even has a remote chance of being something more, of growing into a demand for more varied functionality, I use Drupal.

So what are the reasons I use Drupal?

1. I don't have to reinvent the wheel

Some of this was covered in my article about open source, and that applies to Drupal as well since it falls under the open source umbrella.  But there are a few things that are specific I want to go over.

There are several parts of many web projects I undertake that all require the same thing:

  • Robust user sign-up, authentication, and management
  • Easy adding and editing of content so a complete newbie to the web could do it
  • Social aspects, like commenting, voting on content, private messaging etc.
  • The site needs to look unique, incorporating a custom design

Drupal includes all of this either by default or with the simple adding of a few modules, modules that are easy to install and have had almost the same attention to detail implemented in their creation as Drupal itself.

Drupal's user signup is ready to go after install.  People could sign up for accounts if you want - literally within minutes after installation.  The included roles and permissions system is good enough for most needs as well.

Regarding it's actual content management system capabilites, it's true that Drupal can become confusing for the average user after too many modules are installed, however, the for true basic content, the normal user will only see a "title" field, and "body" field, and a taxonomy field or two for tags/categories.  You can't get much more idiot proof than that.

For social aspects, existing modules exist to handle most needs just fine, or are very easily customized to meet a need.  Modules like Voting API and Fivestar make implementing user feedback and interaction easy.

Regarding design, Drupal's theming engine, and specifically the way it uses PHPTemplate, make theming a Drupal installation a breeze.  It takes a little bit to get used to, but once you do, you'll wish every packaged project was this simple to make look unique.  As mentioned before, something doesn't have to be 100% custom as long as it looks like its 100% custom, and a good theme is one way to help achieve this.

Template files are very straight-forward to learn if you know even a smidgen of PHP and are familiar with HTML.  Designers who don't want to get into coding shouldn't have a problem at all for most things.  It's also a breeze to use Jquery for advanced front-end effects and functionality, as it comes installed out of the box.

Because of the above reason, I can have a sophistated, unique-looking website with advanced functionaly in under 24 hours.  If I had to code these things from scratch, you're looking at weeks and months, and even then, it would be so buggy I wouldn't be able to look through a windshield.  This means more time, and worse, potential security leaks. And this rolls into the next reason...

2. Security

Because I don't have to reinvent the wheel, coupled with Drupal's dedicated community of developers, I can feel reasonably certain that the code is secure.  Updates come out at regular intervals patching security holes that have been discovered.

Can you imagine doing that on your own, homegrown system?  What if you have 10+ homegrown systems you're supporting? Insanity.  People would look at you with pity in their eyes, and you could only nod your head in agreement and understanding.

It's simple.  You want a talented team of programmers who can ensure your website is secure against the latest methods, and fix whatever might be broken.  Drupal provides this, so you or I don't have to curl up naked in the shower, tears streaming down our faces, begging the boogie-man not to break our sites anymore...

Or was that just me?

3. Extensibility

Drupal is unsurpassed in it's ability to add functionality without hacking the core code.  It does a great job of keep core functionality separate from custom functionality.  Sure, you could just go to town on the core code of Drupal if you wanted, but you'd have teams of people trying to stop you and pull you back from the precipice.

Using the Drupal hook system and API's, you can essentially do whatever you want.  And if Drupal comes out with a security update, it's a snap, and you don't have to change or re-implement your code, which you would have had to do if you hacked the core code.

This organization allows sites to grow in functionality, without having to tip-toe around current functionality, hoping you don't break something. 

Want to add a forum to your site only after you've built up visitors?  Easy.  Want to take that forum back off your site when it becomes overrun with porn spam?  Easy. (Or better yet, install a world class spam filtering system.  Also easy.)

Some people have some pretty amazing and unique things with Drupal that you would think could only come from custom code.

While it can be confusing at first to learn the Drupalness of Drupal's API, (lots of nested associative arrays containing nested associative arrays containing even more nested associative arrays and on and on), the rewards for bagging this beast are numerous.  It can almost be treated like a full development framework, but one that has a base out-of-the-box functionality that's inherently useful.

Conclusion

All of these reasons combine into one large benefit: getting affordable projects and websites completed quickly, yet with advanced features.  It's more fun to actually get to the mean of a project rather than writing yet another user login system.  Or another commenting system.  Or another content voting system.  Or another

I can pass these measurable savings, both in time and sanity, to customers.  And I'm sure they appreciate that portion of it most of all.

 

Comments

This is very well written. I have stated the same ideas, but didn't explain them nearly as clearly as you did here. Good job!

I think this reinventing the wheel stuff is largely a myth, it is flawed in two ways:

1 - If you are talking development companies, then the don't start every project from scratch, they build up a code base, so they have ACl / user system, comment, rating, plugins etc.

2 - These days, people use frameworks (if they have any sense), so that is a whole heap of programing done for you and if the framework is popular then you have a whole heap of modules, libraries, plugins, etc that have been written by others, just like with Drupal you have modules.

I'd also have to disagree when it comes to design, most designers I know do not enjoy implementating their design in Drupal, having to muck aroudn with theme and preprocess functions, not to mention it's bitty nature is not popular and takes them longer.

Finally let's look at some of the difficulties with Drupal:

- For most non-technical users it is a nightmare (look at dries blog and see what they found from user testing).

- Performance, Drupal is pretty quick when you can use all its caching capabilities especially the Boost module, the problem being for sites that get updated a lot (forums, community sites, digg like stuff, etc) caching is far less effective adn you have to deal with Drupals baseline performance, which is slow and very resource heavy (lots of memory, lots of CPU).

- The modules, many modules including even relatively popular ones like fivestar have bugs that are months (sometimes years) old, this is not great.

Agree about inventing the wheel and open source is great!

Well if you take away nodes from Drupal Joomla beat Drupal on ever single feature and is much easier to use. Both Drupal and Joomla is frameworks and bcs its so many addons you can customize it to what you want. This is two Joomla examples one of top as a framework http://www.my.peoplebrowsr.com/ and about performance a site with more then 5+ million users per month http://www.gazzetta.gr/

There is so much talk about Joomla and Drupal and they are strong in different markets in the world though.

1. That's true. But it doesn't scale well, and improvements and features can be slow. Propriety systems like that, managed just by development firms, are always like that unless they dedicate cost prohibitive resources to it.

2. Yep. Which is another great thing about Drupal. The Views module alone is close to enterprise quality.

Of course it has difficulties. But they are far outweighed by the advantages. If you want to do a straight blog, I still recommend Wordpress. And I would argue it's not really developed for non-technical users. I wouldn't recommend anyone use it unless they have someone knowledgeable who can train them, or have the time to learn themselves.

- Every piece of software on the planet has bugs.