[JDEV] Thread id

Matthew A. Miller linuxwolf at outer-planes.no-ip.com
Tue Jan 28 22:20:06 CST 2003

Asking for theory and asking for practice can yield two different 
results (-:  This is as I understand it, although those more steeped in 
user-user message passing feel free to correct me...

*Theory of <thread/>* (or "What is meant by Thread ID")
The intention for <thread/> is to track a conversation across multiple 
<message/> packets.  In theory, when someone starts a conversation with 
someone else, their client would specify a value for <thread/>.  The 
value itself has no intrinsic meaning, but is simply a "marker" or 
"tracking number" (well, "tracking *string*").  When that someone else 
responds, they maintain the <thread/>.  Ideally, each unique 
conversation would be a different thread.  Taken to the extreme, 
multiple conversations between two people *could* be carried out, each 
with a different <thread/>.

*Practice of <thread/>* (or "What [many] current implementations 
actually do")
Unfortunately, many clients never [properly] acknowledge the <thread/>, 
either for the start of a conversation or in maintaining it.  Because of 
this, clients like Exodus simply treat all messages between two people 
[within a given amount of time] as part of the same conversation.  Since 
Exodus tries to be true to the spec, it tries to use <thread/> for 
conversations.  But since "compliant" clients can't rely on the other 
side maintaining the (optional) <thread/>, it behaves as it does.

Maybe, some day in the [far?] future, when all clients properly use 
<thread/>, can look back at this and have a good laugh (or tell our 
grandchildren how tough it was to use IM, what with more than one 
protocol in use; uphill both ways in the snow and all that).  In the 
meantime, the following would probably be a good way for your client to 

-  If you get a <thread/>, you should maintain it.
-  If your client is starting the conversation, generate one.
-  If it's missing, assume its part of the last conversation you had 
with the "to" side, if any.

Hope this helps,

-  LW

Johannes Ernst wrote:

> I'm trying to understand
> 1) what is meant by a "Thread ID"
> 2) what current implementations actually do.
> As in:
>  <message ...>
>   <thread>some-thread-id</thread>
>   <body>...</body>
>  </message>
> Judging from my "extremely" scientific sample-size of 1 (trial end 
> error with Exodus ;-)), it seems to me that
>  - Exodus will "play back" whatever thread ID another client used to 
> initiate a new conversation
>  - However, as soon as the chat window has been closed once, upon 
> reopening it, it will generate a new thread ID.
> I don't know what that means. In particular, because Exodus happily 
> restores the content of the old window in the new window.
> I thought maybe a different thread ID would indicate a different 
> subject (could be shown graphically with a horizontal line or 
> whatever), or that the conversation partner has closed their window 
> temporarily, or ... but if thread id is basically unpredictable, I'd 
> rather leave it alone?!?
> And I don't know whether this is the "correct" behavior, or just 
> something special about Exodus.
> Any clarifications appreciated...
> _______________________________________________
> jdev mailing list
> jdev at jabber.org
> http://mailman.jabber.org/listinfo/jdev

More information about the JDev mailing list