A user once asked me, “If you did it all over again, what CMS would you use?” That’s a good question. I honestly don’t consider myself to be an authority on the subject, but I’d like to share my experience with Drupal 6 as my CMS for a forum site during the past few years.

Background

In terms of time and experience, to say nothing of my sites, I’m pretty heavily invested in Drupal. I had an initial false start about six years ago with Joomla and a bridge to make SMF forums run inside Joomla. The Joomla part of the site was hacked multiple times, although SMF was never hacked. But I hated having two separate CMS running in tandem, and I grew to hate Joomla’s interface. As for SMF forums, it was fairly capable as a forum, but ugly as sin, not very extensible, and not easy to modify. I also hated the fact that both Joomla and SMF at that time used complex URLs that weren’t search engine friendly. To be objective, I imagine that some or most of these issues might have been resolved or at least improved since six years ago, and the Joomla hackings might have been due at least in part to my inexperience. But that left a bad taste in my mouth.

Getting Started

Enter Drupal. I wanted something secure, extremely extensible with third party module support, good selection of themes, a logical system for content organization and classification, and minimal coding required. Drupal fit the bill, with a noticeably professional touch. I haven’t had a single security breach yet in several years of usage. I was amazed at the amount of third party module support to enable practically any functionality required by any sort of website or organization or company. There are modules for classified ads, forums, shopping carts, e-commerce, task management, photo galleries, document management, and much more. It has a fairly easy to use system of “blocks” that can be displayed and arranged on any page. The “taxonomy” system of categorization is incredibly powerful, albeit a bit overwhelming until you understand the concept. All of this functionality has a “steep learning curve” in the sense of there being many, many modules and subsystems that work together and often need to be tweaked to make the site work exactly the way you want. But for me, the learning curve was acceptable, because almost all of this functionality can be configured from the admin interface, as opposed to tweaking config files of arcane PHP code. Although there is some complexity, even needless complexity, at least it is visually discoverable in the admin panel, instead of requiring the ignorant user to Google around and find PHP snippets and paste them into a config file. In summary, I would say that the statements of Drupal’s “steep learning curve” are somewhat exaggerated, but not totally unfounded.

Customization

Testiment to Drupal’s flexibility is the fact that I was able to develop my own original community-moderated anti-spam system for BLF without writing a single line of code. I consider myself to be an extremely poor coder, although I do understand the concepts and have written many lines of code in the past. So, as I mentioned above, I try to avoid solutions that require coding whenever possible. But despite my limitations and my aversion to coding, I was able to use some generic building block modules in Drupal with their GUI admin interfaces to develop the logic and interface to a custom anti-spam system for my sites. This system is working better than I ever expected. I’m quite confident that I would have never been able to cobble together this workable system with relative ease on any other CMS. From what I’ve seen, other CMS tend to go to the extreme of being too rigid or simplistic, or they go to the other extreme of being little more than PHP frameworks for experienced coders and SQL whizzes.

Encouraged by this success, I went on and developed a new e-mail notification system for new comments on subscribed posts. In this case, the current existing third party modules for e-mail subscriptions and notifications are actually quite poor and don’t meet my needs. So I decided to use the same basic framework that powers the anti-spam system to build a new notification system. Here I did run into some limitations of the GUI generic building framework, and I had to resort to coding a few stages of the system. But even this was greatly simplified by the Drupal framework.

Caveats

Of course, there are some things that I don’t like about Drupal. The plethora of third party mods are both a strength and a weakness of Drupal. Obviously, they offer incredible flexibility. However, since they are submitted and maintained by third parties, they sometimes lapse into inactivity if the developer loses interest. This can sometimes leave users stranded if they need an important fix and the project has gone dormant. This is what happened to me with the old “Watcher” e-mail notification system. Additionally, the core Drupal system that the official developers release is actually quite barebones. This means that virtually all Drupal users at some point will have to use third party modules for relatively basic functionality. But when there is a new major Drupal release, the third party developers sometimes don’t support the newer version for quite some time. Or, other new modules are developed only for the newest version and don’t support users who are stuck on the older versions. However, I should mention that this only happens with slightly more obscure third party modules. And different Drupal core releases receive concurrent security and bug fix updates for an extremely long period. For example, right now, Drupal 5, 6, and 7 are all considered “active” versions and receive updates. I’m “stuck” on version 6 for some of my sites because of a few modules I depend on.

Another thing that I don’t like about Drupal is the difficult upgrade process. It is considerably more difficult than other CMS systems, and requires either patching or replacing a huge number of files in different directories. This is necessary even for security updates, which come out several times per year as needed.

Additionally, the Drupal system isn’t ideal as a forum. The basic functionality is built into the core Drupal system, but it’s very limited. I use a third party forum mod called "Advanced Forum": https://www.drupal.org/project/advanced_forum, which makes the forum look a bit more normal. Then I use other third party modules to add in additional functionality that users expect from a “normal” forum. Still, there’s a major lack of functionality in the area of thread moderation. There is no way to move comments from one thread to another, nor is there a way to split a thread. There’s also no way to search within a thread, and the pagination of very long threads is sometimes hard to deal with. That being said, I still prefer Drupal for forums despite its limitations. For my usage, the level of flexibility and integration with other powerful Drupal features more than outweights the drawbacks of its mediocre forum system.

Conclusion

In view of all this, Drupal is probably overkill if you have simple requirements. If you only want a forum and have relatively simple requirements and don’t plan on future extensibility of your site, you might have good luck with myBB (not phpBB) or Vanilla. But if you foresee future expansion of your site and the need for additional functionality, I would say that Drupal is the best choice. I would strongly recommend against using a heterogeneous mix of “best of breed” systems. I’ve found that users will inevitably want to share logins or share other information between different parts of the site, and this is difficult or impossible to achieve if you have multiple CMS running the same site. Additionally, multiple CMS means keeping up with multiple security updates, multiple backups, and multiple restorations if anything goes wrong. And integration is always a pain; the different systems usually look and behave differently to end users, which is undesirable.

So, any serious web developer looking to start a serious website should seriously consider Drupal as an option. Drupal is a professional grade, highly flexible product that is up to the challenge of today’s web content management requirements.