elliottcable/-_- — Issue #12: threading.js
Author: elliottcable
Created: 2011-12-04 19:32:49+00:00
State: open
Labels: request, script

This is something I've been thinking about for a *very* long time.

It's basically accepted that any sort of conversational threading inside an IRC client is impossible; but I think I've managed to put together a passably sane set of heuristics for *attempting* to relate nearby IRC messages to specific “conversations,” to allow us to emphasize the messages that are relevant to you, the speaker, out from the messages that are irrelevant (side conversations.)

The entire point of this, of course, being to “catch” messages that *are* recognizably directed at you, but do not include your nickname. This happens fairly often in IRC (examples being individual messages directed at other people, but in a “conversation” that you are nonetheless involved in; as well as conversations where both involved parties eventually forget to continue hilighting the other person with every single message.)

I don't remember *all* of my ideas in this conceptual area, but here's a few notes off the top of my head:

- Obviously, direct replies to you (`your_nickname: …` and similar) get factored into a ‘conversation’
- Ditto for your own messages directed at somebody else
- Conversations are maintained separately, even though I wouldn't want to expose the ability to “differentiate” them, as the system is too fragile for that (this is crucial, because this means they can expire separately)
- Conversations can be linked together when there is interplay between *others* in the conversation (i.e. B talks to you, and then you talk to A; that's *two conversations* from the point of view of the system, but then A talking to B immediately thereafter could “link the two”)
- Conversations expire after a dynamically-reasoned period of time, dependent on the overall activity of the channel, as well as the extra-conversational activity of the various participants of the given conversation itself

(Also: tie into hilights.js to treat “replies” to your conversations as hilights, even if they fail to mention your nickname?)