1      

Re:

I got a message from [url=http://willfe.com]William Ferrell[/url], with a feature request for thtreaded replies. I am not particularly keen on it, but would like to discuss, if this should be a good feature for Dinette to have? Will's message copied from the blog follows.


Just following up on my Twitter comment a bit. This app looks very good, and I love how fast the demo is. This is clean, compact, and lightweight.

When I mentioned threading, its absence isn’t a complaint, but a feature request (and I’m tempted to just plug it in myself via Treebeard, which includes a sample threaded forum app anyway).

You mentioned that your favorite bulletin apps don’t support threading, but vBulletin actually does. Unfortunately, vBulletin handles threading in exactly the wrong way.

In “linear” mode, it does what it always did before threading was introduced — it just lists every post in chronological order, oldest to newest, and splits the “thread” into multiple pages once there’s more than 15 or so posts. Like I mentioned in my Twitter reply, popular threads on busy forums can easily grow to over one thousand pages. Any way you slice that, it’s simply unusable like this. You simply can’t follow the discussion unless you’ve got a week or two to devote to clicking through (and reading) one thousand pages of posts.

In “hybrid” and “threaded” modes, it does show a threaded view of the posts in the thread (i.e. you can actually spot when someone replies to someone else versus just posting a new post in the thread) and it’s possible to see the “shape” of the conversation. Hybrid mode continues listing all posts chronologically beneath the thread list, while “threaded” mode just shows one post at a time.

Hybrid mode is useless on large threads — it’s just linear mode with a widget that contains a list of all posts (tens of thousands on the example monster thread I mentioned). Threaded mode is worse-than-useless — it forces you to deal with every message individually instead of being able to view a slice of the conversation in context.

There’s two sites I can think of off the top my head that have very different forum systems and that handle threading much better. They’re not perfect, but they do provide a good example of how it should work. One is Slashdot, which has a sickeningly over-complicated Javascript-based monstrosity of a threading system, and the other is Reddit, which goes the other direction with a lightweight, spartan system. I point to Slashdot as a good example in spite of its complex layout because it’s effective at what it does. Reddit is a closer idea of what I picture django-forum supporting.

They both let you do something very useful in a discussion — you can quickly filter away (hide) the stuff you don’t care about. When “what you care about” changes, you can quickly rearrange the display (or navigate to another part of the thread, if you’re not using Javascript) to refocus your attention on another conversation. Note that both sites take moderation into consideration, too, so on a busy site with lots of chatter (and decent moderation in place), the junk gets filtered away automatically and you have to deliberately ask to see what gets hidden.

The one thing vBulletin does demonstrate successfully is that you can add a threading mechanism to an existing forum without screwing up the “old” way — the good news is threading can be supported behind-the-scenes and an “old school” list-posts-chronologically board can still be plopped in place quickly (just hide the threading options and act like threading’s not there). For people who are used to things working that way and who won’t consider switching, they can still have what they’re used to. For folks who don’t want to trudge through dozens of pages to look for replies to a post they’re interested in, full threading can be enabled to keep them happy too.

Just my two cents, but hopefully this makes a bit more sense than just a simple “looks neat, but I wish it had threads” comment

2      

Re: Threading in Dinette

There is one major disadvantage I can think of with threaded replies,

Its very hard to get the UI right which works with large posts. The only places where I have seen this succesfully being used, reddit.com, news.ycombinator.com etc are 1. Not primarily a forum. 2. Work with small posts. With large texts, it (IMO), becomes harder to keep track of what has been said by whom, and in reply to whom.

We actually have an [url=http://42topics.com]app which uses reddit style comments[/url] and it is available on [url=http://github.com/uswaretech/django-socialnews]github[/url] as well, so it is not a herculean task to plug this in, but I need to find out how the ui works with a site which is primarily a forum, so I would appreciate a link to such.

3      

Re: Threading in Dinette

You're right -- the UI is tough to get right. At work right now we're building a Django app (completely unrelated to forums, else I'd be able to sneak in some work hours to help contribute to this in addition to at-home time :)) that's had several UI revisions (hefty ones) ... and we haven't released the actual product yet :)

The bummer is I can't think of any sites that do this just yet. That could mean "nobody's thought of it" but it could also mean "people have tried it, and it turns out it really sucks." So I'll have to resort to a long-winded post to try to describe the interface further. :P

When threading is done right internally (where "thread" and "comment" objects are separate entities), you can still present the list of topics/posts in just about any format. I'd argue that Reddit is actually a forum of sorts, just with a constantly updating index page where every news post is automatically turned into a forum post (in fact I think that's how it's implemented internally). The big difference between Reddit and a traditional "forum" is that the topics list constantly changes and old posts tend to wind down quickly. Note, though, that Reddit has different sections, so think of it as a forum that just defaults to the "General topics" board instead of the "list of boards" page.

In the site redesign project I've got in mind (my current site runs on Drupal, which has come to annoy me in recent years, so I'm switching it to Django soon), it'd be great to have an automated forum system that goes along with it -- any time I post a new blog entry or a new page, it gets comments for free (on each individual object's page) but it's also used to create a new forum post for discussion purposes. The on-page comments could just be the forum activity for that post instead of "just a bunch of comments".

I'm probably thinking of something more along the lines of "threaded comments for arbitrary objects", but in addition to that behavior, it automatically adds entries for those objects in a specific forum as well. Two different ways to view and reach the same content, I suppose.

Large posts can kill just about any forum system I've ever seen. vBulletin handles them just about as badly as I've ever seen (on Reddit and Slashdot, you can at least collapse individual comments). Its default style (which almost nobody ever changes) makes every post so very bulky that it's trivial for a post just a few lines long to "look" big on the page ... go past a few paragraphs and you're guaranteed to have to scroll the page to get to another comment (or even the "reply, hide, rate, report" links for the message).

The only real "technological" solution to this is to permit limited formatting (Markdown, since Django includes it, or BBcode, which is uglier but can also do the job; Reddit uses its own really simple markup but it does a great job of preventing browser hijacking and idiotic formatting screwing up the page). Then of course permitting users to hide individual comments is helpful.

Additionally, for long posts (perhaps a configurable threshold that the administrator can set), they can be automatically truncated or hidden (with a "3,132 more words..." link to un-hide them). Or, on long posts, automatically collapse quoted blocks by default (when it's a reply to another post).

Keep in mind that just about all threading-related behavior can be made customizable, so each individual user could get what they're expecting. If you like non-threaded, non-collapsed forums, you can have it. If you prefer to be able to "drill down" into interesting sub-threads of a given conversation, you can do so.

One drawback I'll readily grant you on a fully threaded forum is that if the client isn't using a Javascript-enabled browser, much of the "modern magic" is lost -- either you show one level of messages at a time (with "view 3 replies with 31 total posts..." links on each post with replies attached) or you render the whole thing, replies and all, either indenting (to show depth) or going back to "show it all in chronological order," perhaps with context links (like "posted by Foo on Jan 1 2010 in reply to #12345").

Classes are starting up for the semester tomorrow and I'm still working full-time, but I'd be glad to work with you on putting together some kind of mockup or test build to explore these ideas. In case I haven't said this before, this idea isn't perfect, and there may be issues I haven't thought of that could make it entirely unworkable. I may just be trying to blur the lines between a social news site and a traditional forum site. I just think it'd be neat to give it a shot.

If you'd prefer, I could take on the task of trying to mock something together -- it just might take a bit of time while I get used to the class schedule this week.