The very first open source projects I ever worked on were forums, and this is something I've put a lot of thought into. I'm also a fan of Vanilla, in that its simple (something a lot of forums fail at). If you could give me more detail on how its lists things (conversation versus topic?) I would appreciate it.
I think the way current forums are categorized and sorted is, to be frank, broken. This is compounded by the fact that most people misuse forums, such as by trying to turn them into news boards. I think if we can find decent solutions to some of these problems we can take become a very popular forum. The fact that most forums are just new implementations of the same paradigm gives us a lot of room to break out.
Threaded versus Flat-
As you mentioned, doing the whole indented thing is doesn't look very good. I hate it. The other issue is they fracture conversation- by definition each reply creates its own thread. Flat conversations have the opposite problem, in that side conversations can sidetrack an entire thread.
One idea I had about this was adding an option to explicitly "branch" a reply. This would essentially be a way to combine flat and threaded conversations- by default everything is flat, but someone can "branch" instead of "reply" to create that new sub thread. This subthread could be its own topic, with context links at the top linking back to the original thread, and each post that gets branched could display links to its subthreads (using your "distance" idea perhaps?). From there we can apply some ajax to have the context links load the parent comments without a page refresh, or load the subthreads the same way. We should also allow branching to occur retroactively, making it possible for admins to prune threads without having to kill content.
There are a few benefits to this-
* Conversations stay a group activity, rather than fracturing like with pure threads.
* People can go off topic without derailing the conversation, promoting more social interaction
* People can skip the sidetalk if they want
* Conversations can grow out in multiple directions
There will probably need to be a lot of experimenting with this to get the right workflow in place. We may want to have different levels of branches- some create brand new topics, complete with their own listing in the thread list, while others are only visible as subthreads of the post they branched from.
Nested / Excessive Sub-Forums
Two very related problems that bug the hell out of me are forums that have either a billion boards listed on their front page or have multiple layers of nested sub folders. The problem has the same source- the current forum paradigm does not support larger communities at all. If you've got a forum getting a few thousand posts a day you have no choice to divide things up because people aren't interested in reading every single thing, but that division makes browsing the forum more difficult because you now have to check multiple places for topics you're interested in.
Again, we come down to a broken paradigm. I think this is a situation where we should consider tossing out the old model completely and build a solution based off of the core issues, not whats been done already.
* Larger communities needs to segment to avoid overwhelming users with information that isn't relative to them
* Community division isn't just a matter of categorization, but of permissions and responsibilities
* Browsing should be easy, not a chore- one page indexes
* Usage should be intuitive- people who are visiting for the first time should be able to find what they need
Ultimately I think we should look to some of the newer online communities and aggregators- things like Reddit- for inspiration. They have a list of topics (subreddits) that people can subscribe to (with guests getting a default list), and all of the messages from all of those subreddits show up on a single listing. Now, I'm not saying we take the reddit system itself and use it, as it is not really ideal for what we're talking about, but we can definitely take inspiration from it. I think we should sort by last post, for instance, not by a voting system (since this is forum, not an aggregator), and there needs to be a better system for browsing the different categories. It may end up being that we have a page similar to current forum indexes as a way to browse the system, but I really think that structure is less than ideal for regular usage.
One additional interesting thing to the way reddit, and many other aggregators, work is that they have a single submission form where you simply enter the categories you think are appropriate. If we let people submit the same message to multiple categories we can easily filter it down to a single entry on the index page for people subscribed to both.
Social Networking
A lot of this is going to end up being handled by plugins. We're going to need to create an expanded user module at some point regardless, so it can be used by other modules besides this forum, but even still things like facebook connections and gravitar support are going to be plugins. We're going to have a really solid system for plugins though- we've already started work on Quarry/Foundry (our repository and package management software) and its coming along quite well. Ultimately admins will just go to a page in their admin screen, select a list of plugins (and get suggested plugins based off of their current install as options) and the system will download, install and maintain them going forward. I can't even describe the amount of research that had to go into this, but its gonna be awesome.
WYSIWYG
Done. Josh put a lot of effort into updating Mortar to the new CKEditor (what used to be the FCK Editor) so enabling it is pretty easy. I'm still working on integrating HTMLPurifier in before we start letting the general public post things (yeah, we're still pre 1.0.0 so some 'minor' things like XSS filtering aren't quite there . . .). CKEditor is pretty awesome though, and allows for plugins so we can interface other systems (like a gallery). Additionally I'd like to look into supporting other formats- through the wysiwyg- with markdown and maybe even bbcode (although, well, eww).
User Tracking
Icons and sigs (god I hate sigs with a passion that can barely be described) are not very good for tracking conversations. I have to say I do like gravatar quite a bit and would like to support it (as well as having native icon/avatar support). One way that I've seen recently is to use a color as the backdrop of a post, based on the users name. So lets say we have a pool of 20 colors- we'll have some formula that assigns a color based on name, so each user always gets the same. I'll admin that may be a somewhat weak idea, so any other ideas are welcome (not that they wouldn't be otherwise). Maybe some sort of watermark?
News
A lot of forums are also used to announce news to a community. This is another thing that I think is currently handled pretty badly- you don't want your forums to be your primary news vehicle because they suck at RSS aren't likely to be visited by people looking for news, just people looking to talk. At the same time it is important to display news through the forums so the community does see it, and we want them to be able to discuss it as well. My thought is that we can build a plugin to bridge our blog with our forum, allowing for unified comments (optional) and automatic cross posting. Basically if someone posts a blog entry to a linked blog it'll get displayed in the special news category of the forum without the need for the admin to copy/paste themselves (and with canonical headers for google).
Performance
Okay, this is a little off topic, but most forums are really slow. Ridiculously slow. They require multiple database queries to retrieve the same information over and over again. Our caching system, the minification systems, the http caching- its all going to make us much snappier than existing software, and I think its going to be picked up on by people.
So yeah, those are my thoughts. We really should step back from the current idea of forums, look at the core issues and goals that people use forum software for, and start from there rather than holding ourselves to a dying system due to tradition. I'm really glad you see a lot of the same deficiencies with forum software that I do, and I'm hoping your eye for design will help us solve these problems in truly innovative ways. Lets keep this discussion going.
Robert
PS-
Joshua, you should also take a look at the dashboard specifications we put up for the admin section (
http://code.google.com/p/mortar/wiki/specDashboard). Josh is planning on tackling sidebars/menus and then that, and I'm sure he could use your help on figuring our some of the aesthetics. You should also take a look at how we've extended Twig for use as a template engine- our theme engine is pretty exciting now.