Drupal Wish List: nodeBB

Arancaytar's picture
In the past few weeks, I've worked pretty instensively with Drupal every day. The result, as always, is that I'm amazed by what it can actually do, as well as disappointed by the great number of things it can't - or that are exceedingly inconvenient.

I realized that this will get lengthy, so instead of putting it all in one post I'll make a new post for each of the modules I'd like to see.

1. Make a node-based forum

The current core "forum" module is a joke. It's basically a disguised multi-user blog with posts sorted by their last comments.

I know that good modules "go native" - the quality of a module lies in how well it integrates into the core architecture, how little wheels it reinvents. Contrast with "UIEForum", which is such a reinvention: Forums, topics and posts are stored separately, removing themselves from the Drupal architecture entirely. That's not the solution.

But neither is it good to use "comments" for replies and the taxonomy for forums.

There's the philosophy in Drupal that "everything is a node". Why not follow it here?

This would mean that:

  • Containers
  • Forums
  • Topics
  • Posts


Are all nodes of different types.

The module uses auxiliary tables like "topic_location" and "post_location" to attach posts to topics and topics to forums.

Many benefits, but the most important one is: "All posts are equal." No longer will replies be stored in the comments table - every post is itself a fully qualified node. Functional features made easy:

  • Splitting a topic: Select any number of posts from a topic and set the new title. The first post selected will change its type from "post" to "topic" and lose its attachment to the original topic. The other posts will change their parent to the new root post.
  • Moving a post to another topic. Pretty obvious.
  • Merging two topics - equally obvious, just reverse the procedure above.
  • Want to turn a single post into a new forum, or a blog post into a forum topic? It sounds daft, but what's going to stop you...


If you really need it, we can even have threaded view (personally, I think it's bull and makes it impossible to read a topic chronologically, but some prefer it). Just use another field in the auxiliary post table to mark its post parent.

Finally, on the forum level, it becomes even easier to rearrange forums into containers and have multiple levels.

This is what I've always missed in forums like UBB, vBulletin, Invision Power Board and phpBB: The unified "node" architecture would make the board a lot more powerful. I looked forward to seeing this in Drupal, and was badly disappointed when instead the Drupal forum turned out to be even worse than these.

My only qualms about this are backwards compatibility with existing forums: Forums are notoriously hard to migrate. Many different board systems exist, and having incompatible systems even within Drupal would be kind of nasty. Perhaps they could mesh without obvious differences, so older content can still be displayed correctly...