This is a general-purpose list of possible enhancements to Drupal's forum system that could bring it more in line with functionality provided by traditional forum systems such as phpBB. I've already given some of my rationale for this in my other thread, so I'll refer you to that rather than repeating myself here. (Nutshell: I don't expect this code to just magically appear in the next release or three, nor do I expect Drupal to become the all-powerful forum system to end all others or anything. Wouldn't mind if that happened, though ;)

Though this list is long, it is by no means complete or entirely accurate. For example, I haven't touched too much on certain things like the admin interface, as ongoing work is being done on that part of Drupal. Where possible, I've added links relavent to each item on this list, be they feature requests, bug reports, patches or whatever. I've almost certainly left plenty of things out of this list. I'd like to actually get this list posted sometime. :)

Obviously, some of these are going to be enhancements to things other than the forum module itself. Some might be applied to the Drupal core, or the comments system, or an existing module, or as a new module alltogether. I've tried to arrange these features in a loose priority order. I'd be happy to expand on anything I haven't explained clearly.

Anyway, on with the list...

Comments

Toe’s picture

Higher Priority:

Probably the biggest drag I've seen is the various limitations on content in the forums. I can put an attachment on the first post of a thread, but not replies. I can't post a poll in the forums. If I use the BBCode formating module, I only get the formatting bar for replies if I have the reply screen on the same page as the thread (quick reply). Bleah. It seems that there's been quite a few efforts to remedy this, but so far it doesn't look like any of them have been commited. I've kinda wondered why forum replies are their own seperate db table, even from the first post in the thread. I more or less understand the historical reason (forum being extension of comments system), I just wonder if it's best to STAY that way. Maybe have it as more of a string of seperate nodes, like the front page? Obviously would baloon the size of the main nodes table, not sure how that would affect overall performance...
http://drupal.org/node/28255
http://cvs.drupal.org/viewcvs/drupal/contributions/modules/akvaforum/ (apparently a whole different forum module?)
http://drupal.org/node/20295 (modification of existing forum, a bit more recent than akvaforum)
http://drupal.org/node/23620 (status: fixed)
Ongoing work relating to

Ability to split and merge threads. If a discussion wanders offtopic, split it off. If two threads are redundant, merge them. Also, let a user delete their own posts. (the problems are the same)
http://drupal.org/node/11877
http://drupal.org/node/10700

Per-forum permissions & hidden forums
How much use is taxonomy access for this? http://drupal.org/project/taxonomy_access
chx apparently has something for hidden forums http://drupal.org/node/25537
Either way, a simple way to set up forum permissions (ie without a ton of extra modules) would be most welcome

Attachments can only be added to initial post, not to replies?
http://drupal.org/node/28255
http://drupal.org/node/14708

A 'Topic Review' on the Post Reply screen. Basicly a stripped-down version of a thread's last few replies that's visible below the post entry area, in either an overflow: scroll div or an iframe.
Or better yet, I think we could 1-up this idea as well as the 'Quick Reply' box idea. This would be an excellent use for AJAX functionality. Basicly, when a user clicks reply, an anchor takes them up to the top of the current page, while AJAX is used to load the full topic reply screen so that it appears.
http://drupal.org/node/98
auto quote insertion http://drupal.org/node/12739

Signature handling is icky (make sig editor mimic posting screen?)
http://drupal.org/node/16726
http://drupal.org/node/10938
http://drupal.org/node/18729

handelaar’s picture

>Ability to split and merge threads. If a discussion wanders offtopic,
>split it off. If two threads are redundant, merge them.

Module required. Promoting a comment to a node sounds like a 10-line module to me. Merging is a whole other can of worms and would need someone (you?) to write a spec.

>Also, let a user delete their own posts. (the problems are the same)

No, not really. "Edit own forum posts" is a permission which you can set in access control. But removing a post will also remove comments which are children of it. Having seen that abused horribly on one site I leave it disabled.

>Attachments can only be added to initial post, not to replies?

Extending comment.module to permit attachments from upload.module is something which could be achieved with a module.

> Per-forum permissions & hidden forums
> How much use is taxonomy access for this?

Taxonomy_access will do the trick, but has a UI which is best described as *evil*. Organic groups is probably better suited.

>auto quote insertion

Quote.module does exactly this.

Toe’s picture

Module required. Promoting a comment to a node sounds like a 10-line module to me.

Why should this be a module? I consider it basic functionality that should be in the main forum module. (Which I don't necessarily feel is the case for everything here, btw)

Merging is a whole other can of worms and would need someone (you?) to write a spec.

Agreed that it would be much harder to implement, although I'd say it's also a much lower priority than splitting. (I put it up here rather than in a lower priority group just because it logically goes with split.) As for a spec, you mean just a basic 'case -> what it should do' list? That I might be able to do, but like I said I'm not much help on the actual code.

Extending comment.module to permit attachments from upload.module is something which could be achieved with a module.

Yeah, and it appears that quite a bit of work is being done on comments and forms in general for 4.7. I based most of this report on what's available for 4.6 because CVS was a bit too much of a moving target for me, especially for testing modules.

Quote.module does exactly this.

Whoops, I knew that. Musta missed deleting that line when I was editing this. :P

Toe’s picture

Little Things That Would Make A Big Difference:

Use the word 'lock' where it currently says 'user comments -> read only'. 'Locked' is standard terminology for forums, and at first I didn't think Drupal could lock a thread. I'm not the only one.
http://drupal.org/node/5867
http://drupal.org/node/16571

Improve pagination and links to particular comments. There's several areas that I'd like to see addressed:
If a thread is multiple pages, show "Page 1, 2, 3..." on the thread index page
http://drupal.org/node/24884
Currently links to a particular comment don't work if a comment isn't on the first page of the thread.
http://drupal.org/node/6162 <- There's a TON of threads/issues on this one, most marked as duplicates of this
Let the user configure threads per page (there's one for posts per page, but not threads on index)
Pyromanfo put together several patches dealing with these issues, but they didn't use pager.inc. See http://drupal.org/node/29112

Currently, when you move a thread to another forum and leave a 'shadow' topic, that shadow topic points make shadow topic go to the moved thread, not the board it was moved to

Toe’s picture

Would Really Like To Have:

Put icons on the forum index for new/no new posts. It's there for the thread list, why not for the board list?
(kinda related to http://drupal.org/node/24885, doable with templates?)

Disable username changing (and other profile fields, for that matter)
http://drupal.org/node/6991

Ability to set a group moderator (who can add remove people from their group without being able to control other groups)

Configurable max time to allow a user to edit their own post

Show edited post info (time, by, etc) together with the post

Editing grace period before the 'lasted edited' message appears

"Dotted" topic icons (essentially a visual marking of threads the user has posted to at least once)

Individual user permissions

Single link showing posts/threads since last visit (does have 'recent' posts)

Custom titles/ranks/captions (Like if a post was made by an admin, have it say 'Admin' under their name.

Tie a person's rank/group to their post count
http://drupal.org/node/12738

A summary of the user's current permissions.

Mass moderation tools - move/lock/delete multiple threads at once. This could probably be implemented as an enhancement for /admin/node. Make sure it's easy to this access from the forum itself.

Link to thread's last reply

Show actual date of creation/last reply instead of 'X days/weeks/months ago'

Link from index that says '# new posts' doesn't seem to work right (no anchor)

Allow mods/admins to post to locked topics

Flood control for major actions (search, posting, etc)

Duplicate post detection

Attachments require registration/login to download (disable hotlinking & such)

Display number of thread views

handelaar’s picture

> Show edited post info (time, by, etc) together with the post

> Custom titles/ranks/captions (Like if a post was made by an
> admin, have it say 'Admin' under their name.

Both of these can be achieved with themes

> Tie a person's rank/group to their post count

User points module does exactly this

> A summary of the user's current permissions.

Vague. Where do you want this? It already appears to admins when you click on a username and choose 'edit'

> Mass moderation tools - move/lock/delete multiple threads at
> once.

The 'delete' part of that is already available in admin/node if you apply a filter to your view

> Show actual date of creation/last reply instead of 'X
> days/weeks/months ago'

Another theme task, this.

> Flood control for major actions (search, posting, etc)

Throttle.module

> Attachments require registration/login to download (disable
> hotlinking & such)

Already available. Untick 'view uploaded files' for anonymous users in admin/access control

> Display number of thread views

Already available by enabling the tracker and then altering its settings in admin/settings/tracker

Toe’s picture

Vague. Where do you want this?

If you look near the bottom of the page on phpBB or vB, there's a little box that tells the user what their permissions for the current thread/forum/whatever are. Like 'You *may* reply to the current thread' and 'You "may not" create a new thread in this forum'. Possibly doable with themes?

Throttle.module

Doesn't throttle.module only kick in when the server is under heavy load? I'm thinking something more preemptive than that, something that analyzes what the current user is doing rather than the condition of the whole server. More like the spam and bad behavior modules than throttle. Like prevent a single user from sending a ton of complex search queries in a short amount of time, rather than turning off search alltogether after he's already sent the queries and jacked up the server load. Or in a friendlier case, something that tells a user who clicked their submit button twice when replying that they cannot make a new post so soon after their previous post, to help prevent accidental double posting.

Already available by enabling the tracker and then altering its settings in admin/settings/tracker

Que? I've got tracker enabled here, and don't get any settings page for it?

Already available. Untick 'view uploaded files' for anonymous users in admin/access control

Whups, another 'forgot to delete it'. :P

Toe’s picture

Would Be Kinda Nice:
Board stats (most online, date founded, etc. stats module extension? also HoF http://drupal.org/node/19571

Personal stats (like posts per day)

Quick admin contact

Mark all as read button
http://drupal.org/node/24883

Topic icons

Have sticky but not anouncement, no global anouncement, can they be seperated from other threads?

Report post to mod/admin

Forum-specific moderators

Show moderators on index/viewforum/etc

Permissions inheritance

Set options/permissions for multiple forums/mods at once

Attachment indication on thread list

Private threads (alternative to/extension of private messages, with invites for multiple people)
(organic groups? http://drupal.org/project/og)

User-visible/invisible groups

Give reason for thread delete/user ban/etc

Ability to turn off post count incrementing for certain boards (posting here doesn't increase post count)

Post & lock topic at the same time

Multiple choice polls

Limit login attempts for an IP (like after 5 failed attempts they have to wait X minutes to try again)

Administrative actions require the user's password (and do not rely solely on cookies.)

Automaticly break long words/URLs/etc so that they don't horizontally scroll the page

Maintenance mode (only admins can login/use the site), preferably with ability to enter a reason for maint that users can see

Ability to indicate new posts to child boards but nothing new in parent.

show link to something (like the forum, or PM's, or search, or whatever) but require login/registration before use

Disable member registration completely (allowing only moderators to register people).

Require email authentication by sending an authentication link.

Require a moderator to approve registration.

PM/e-mail people by group

Smiley sets, possibly letting users choose which one they want to use (or none)

Ability to allow members to use moderation on just topics they posted

'Trash can' for deleted topics & posts

Ability to hide the signatures/avatars of others

Ability to ignore another user's posts

Ability to search within the current thread

Toe’s picture

Lower Priority:

Set maximum characters in post

Set maximum smilies in post

Set maximum nested quotes in post

Pruning old posts

Prune users (inactive accounts)

Limit post length: http://drupal.org/node/28163

Require posts to be approved before appearing

See users browsing this board/thread

Adjustable cookie expiration

Both cookie and session based authentication (works without cookies. maybe also for use on public terminal.)

handelaar’s picture

> Require posts to be approved before appearing

Can be done by editing the default workflow for forum posts (search the site for instructions)

I'm mostly just wading through these, in case you've noticed, in order to prune the list down

Toe’s picture

Things I've Seen Done With Drupal, But Don't Know How

Options for how to display subforums (nested like they are now, as single lines under main board on forum index, as seperate page, as list on main board's index)
http://civicspacelabs.org/home/community

change the color of a user's name or put an image under their name based on rank/group
http://www.zattevrienden.be/forum

Stuff That Appears To Be Addressed By 4.7:
Better search interface (yay!)
The standard place for 'Now Online' info is in a box below the main forum index, rather than as a box on the side. Should be doable with flexiblock.
Similarly, it would be nice to be able to show Private Message info anywhere.

Misc:
BBcode, colors, smilies. I'm not quite satisfied with any of the current options for this. I might try doing a bit of work on it myself.

Toe’s picture

Misc Relevant Links:
http://drupal.org/project/flatforum
http://drupal.org/node/25537 - Asking for needed features & howto guide for advanced forums in drupal. Might take this one on later.
http://drupal.org/node/17428
http://drupal.org/node/11877
http://drupal.org/node/6126
http://drupal.org/node/5802
http://drupal.org/node/27922
http://drupal.org/project/members

(Phew, finally done. Like I said, it's far from perfect, it could have been edited better, but I just want to get this thing posted & up for discussion...)

eldarin’s picture

Just want to add some ramblings - maybe Dublin Drupaller picks up on something of this too ...
(from http://drupal.org/node/32360#comment-57020 )

My approach
.. was to first start with the threading and the URL as this was the central point to making an alternative not too intrusive on existing Drupal functionality (I just disable comments in my systems).

I.e check out the nodeapi 'insert' event, and you can hook any additional stuff to that. Here's how it works:
www.mysite.com/node/add/post/respond/pid

That means it's a normal node.module add content of posttype - it could be story, flexinode or whatever (just configure the links, permissions etc). It also adds the information about the parent-node-id or pid like I labeled it. It would be a numeric argument of course.

E.g so you would just supply the following link to your node/32360 - <a href="/node/add/post/respond/32360"> respond </a> .
The node insertion would be handled normally by the node.module doing all the menu callback motions, and you would only piggyback that with the nodeapi 'insert' event being invoked by node_save() - where you check the arg(3) and arg(4) for 'respond' and is_numeric() respectively - as well as the preceding ones. Then you would know the parent-node-id as arg(4) and the response newly inserted node-id as $node->nid in the nodeapi hook in your module.

That is all you need for threading proper nodes. Now, was that a Drupalish clever and clean way to do it or not ? Hope you could follow me on this one, I know you did some great stuff on fleximax, but don't know how well you know Drupal innards. I don't use the 'respond' word however, and have various node-types for posting various stuff (it's more dynamic according to security permissions and context).

You should also check out the node_submit stuff to get a drupal_goto back to your thread-context of your post, and not the default lone post-display for creating node'ish content.

This is the beginning key to making a non-obtrusive alternative Drupalish module for a forum anyways. Then comes all the stuff about presenting, collating, caching, optimizing etc.
;-)

Also, a bit from http://drupal.org/node/32360#comment-56993 :

Basically, it means using full-fledged nodes as responses - i.e creating node content (of any configurable, extendable type) and using a threading-table to keep track of them. Then presenting threads, forums, posts all becomes issues of how to do the caching, themeing etc. I try and pre-calculate as much as possible when creating new posts - then it displays faster. It means replicating a lot of parts (already themed etc) and keeping very good cache-control.

It is *not* a trivial Drupal affair of coding, and means a lot of work when complicating with flexible security.

There are also other tidbits I have mentioned around the forum, but it's just not very practical to look it all up, since searching project issues in an intelligble way is not there yet ...

Finally, I have threads and forums as proper nodes too (with their own node-ids, node-type etc). That may seem strange, but it's for optimizing (pre-rendering etc.) and other features. Think object-orientation about nodes, like some approaches in Drupal deal with them - and it gets easier.

I think it's a very powerful approach and painless addition to Drupal .. but then there are other areas where Drupal core needs fixing. The system is pretty must blog-comment centered still in my view, and hardcode'ish in tracker.module etc.

It is however, quite possible to get some of the most powerful forum functionality available out of such an approach. Imagine - you have all the power of a node anywhere in your forum ...
;-)

Wesley Tanaka’s picture

Some work I've done on the forums can (and will) be found here:

http://drupal.org/node/39330

daniel.hunt’s picture

this is a double post - but I'm just letting you know that much of your (massively comprehensive list) is dealt with in uieforum - a module that i'm working on at the moment

http://drupal.org/node/38829
http://drupal.org/node/38830

This should help out all vbb (and the like) users - it's almost ready for it's second beta test, I'll keep you all informed if you're interested in it