The one thing I have heard consistently, from my users, and here, is the difficulty of seeing which posts have been read, and which haven't. So, I decided to do something about it.
I have attached this hack - although I'd like it to become accepted by Moodle so it isn't a hack - that does just that.
This adds a new table to Moodle, that tracks what posts each user has viewed (and therefore read), and adds a field to the 'forum' table. Now I know there are fears that adding more tables will slow down Moodle too much, but I believe this implementation is reasonably fast. The table is indexed by userid, postid, discussioid and forumid, so one database read per discussion display is needed - just get all entries for the given user in the given discussion. It also tracks the time of the first read and the latest read for each post. When the posts/discussion/forum are removed, so are the read records.
For now, this has been set up to work effectively only for threaded mode, although it can be expanded to the other modes. You can turn it on or off in the Forum settings (for each forum), be selecting or deselecting the 'track reads' option (also new). That way, if we do accept it into the full release, it can be turned off for those who fear the slow down, or those who simple don't want it.
If you do activate it now, you won't be able to select a forum viewing mode for that forum - it will force threaded. Any posts that you have not read will be highlighted in light green colour. I will change this to use a defined style.
To get the other modes to work, I will just need to add some kind of 'read' button, that allows the user to mark a post as read. Right now, if a post has been viewed, it has been read. Also, I will add a 'mark all as read' control, so that a user can flag all posts as read.
Martin, et al, I'd really like you to look at this, because I believe Moodle really needs this. I have enclosed all new and changed code in "Begin Forum Extras code" and "End Forum Extras code" comment blocks.
If you do try this, I suggest you try it on a non-production system, and copy your existing 'mod/forum' directory somewhere so you can restore the code easily.
(also, there is another setting you will find in there called, 'posttypes'. I'm playing around with another categorizing system for posts that's not ready yet - ignore this).
mike