It makes sense to me, given that XEP-0085's rules are overriding the general 
guidelines in XEP-0201.


I think the confusing part between the two XEPs is that they use the same 
example action in two different contexts.


In XEP-0201, closing a chat window exemplifies merely disengaging from the chat 
session. In XEP-0085, closing a chat window exemplifies terminating a chat 
session.

Similar but different semantics. 





Unfortunately, most clients treat closing a chat window as terminating the chat 
session, but that doesn't have to always be the case.


Consider an app that works like Apple Messages does, which lists all of your 
recent conversations in a side bar alongside the main chat window, but can also 
pop open individual chats inside their own windows.

Closing an individual chat session window in this case would be disengaging 
from a chat session, but the session is still alive (and listed in the 
conversations sidebar). Triggering a gone event would not be appropriate here.

However, clicking the X to remove a conversation from the sidebar would be 
terminating the chat session, and trigger a gone event. Starting a new 
conversation with the same person (or the other person sending messages) should 
start a new thread.



Of course, the recipient might never have received the gone, because they were 
offline at the time and the message was dropped. So if they wanted to continue 
sending a message in the same conversation, it would have the old thread id 
because it doesn't know otherwise. I would say there is an implicit business 
rule that maybe should be made explicit, which is that a client should handle 
receiving a message from a thread that it has tried to terminate; the chat 
session isn't truly "terminated" until the other side starts using a new thread 
id or the client starts using a new thread id itself.


— Lance

Attachment: smime.p7s
Description: S/MIME cryptographic signature

Reply via email to