Building a Programmers Blog: Why Drupal?

Drupal is a mature, extensible, actively supported and secure content management system for the web, and an excellent base for publishing a technical blog.

In this series of articles, I'll guide you through setting up a programming blog through Drupal.

When I wrote (above) that Drupal is a mature, extensible, actively supported and secure content management system for the web, what did I mean?

Drupal.org Home PageDrupal.org Home PageMature - The Drupal project started in 2000 as a way for a group of students to stay in contact with each other. Since then, Drupal has grown through multiple major revisions into a fully fledged content management system used to run over 280,000 websites. At the time of writing, Drupal 6 is the current major revision, with Drupal 7 under active development.

Extensible - Drupal.org lists over 3800 modules for Drupal 6 alone. While volume is no substitute for quality, the number and variety of modules is breathtaking. Chances are, if you want to do it with your site, someone else has had the same idea and written a module (or several modules) to do it.

Secure - Drupal has a dedicated security team who look for vulnerabilities in both Core Drupal and in contributed modules. When exploits become known, messages are sent out to a dedicated mailing list so that site owners can protect themselves. In most cases, module owners are quick to provide an update that patches the problem. Drupal core is itself subject to frequent security updates that are advised through the same mailing list.

Actively supported - unlike some projects, the Drupal community is active and pressing forward. At the time of writing, Drupal 7 is in beta, with a team of volunteers working hard on eliminating known issues prior to formal release. Extensive documentation, including several handbooks is available online at http://drupal.org/handbook.

I'm making the assumption that you're a programmer or developer (or, at least, relatively technical). This means that I'm going to spend more time pointing you the right direction than hand-holding you every step of the way.

I'm also not writing about how to develop for Drupal. These posts aren't about how to write Drupal modules, get involved with the Drupal project or how to get a new feature admitted to core. The goal of these posts is to show you how to use the Drupal platform for publishing your own programming blog, your own website.

Like any complex product, Drupal has a vocabulary all it's own. Here are some key terms that it will be useful to understand as we go forwards.

Node: All content stored in Drupal is a node of some kind - stories, blog entries, news items, images and other content types are all different kinds of nodes. As programmers, we're all familiar with the difficulty of coming up with good generic names for things - especially for really abstract concepts. In Drupal, "node" is the generic term used to mean any kind of content.

Module: Drupal is a modular system - even the basic installation you download is made up of a collection of modules known as core. Extension of Drupal - adding new functionality - is achieved by installing one or more new modules.

Theme: Just as you select modules for their functionality, you select a theme to control the look of your site. There are a lot of available themes, some free and some commercial. Selecting - or creating - a theme suitable for your site is an important step.