Re: [Standards] XEP-0301 Session handling

2012-02-29 Thread Peter Saint-Andre
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 2/28/12 11:28 PM, Gunnar Hellström wrote:
 Returning to the initial question of this thread: Is there a common
 way to indicate session start and session end.
 
 Peter Saint-Andre skrev 2012-02-29 04:20:
 Yes, but that doesn't necessarily mean you need an explicit
 negotiation protocol.
 Right. The first need I thought about can in fact be reduced to a
 text session indicator, not even linked to RTT support.
 
 I will take a scenario to make the need clear.
 
 Assume that there is a SIP based stock exchange service, sending
 stock exchange information in text in sessions. It continues as
 long as a terminal is connected. A terminal indicates by a BYE that
 it leaves the session, so that the server can release the
 resources. During the session, the text information may be provided
 through RFC 4103 or RFC 3428 or RFC 4975. (RFC 4103 makes most
 sense of course for the RTT example, but let us look at it in
 general).
 
 Also assume that you want to make this service available to XMPP
 users through a gateway. Setting up a chat session to the gateway
 causes it to set up a SIP session with the stock exchange server. 
 Messages or real-time text is flowing from the stock exchange
 server to the XMPP client. Then, the XMPP user want to leave the
 session. What does the user do and what does the gateway use as an
 indication that the session is over and it can take down the
 session towards the server?

I really think that if you want to gateway between SIP and XMPP, you
want to use Jingle. Such gatewaying was one of the core considerations
for Jingle. Now, I haven't looked at RFC 4103 in quite a while, but we
can certainly write a spec that defines how to translate between
XEP-0301 and RFC 4103 (e.g., how to translate the SDP). Personally I
don't think we absolutely need a way to complete a formal negotiation
over XMPP itself, because I tend to think that just sending a chat
message is a much more natural interaction, but *if* we think we need
such a negotiation method, we should just use Jingle.

Peter

- -- 
Peter Saint-Andre
https://stpeter.im/


-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.8 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk9OcRQACgkQNL8k5A2w/vzgqwCgiBcvV337uC0aDPVQ0zJ2zY+x
dGsAoKhCEcelqsbgJFE5fF1trjKBFkPU
=NhyO
-END PGP SIGNATURE-


Re: [Standards] XEP-0301 Session handling

2012-02-29 Thread Gunnar Hellström

Peter Saint-Andre skrev 2012-02-29 19:40:

I really think that if you want to gateway between SIP and XMPP, you
want to use Jingle. Such gatewaying was one of the core considerations
for Jingle. Now, I haven't looked at RFC 4103 in quite a while, but we
can certainly write a spec that defines how to translate between
XEP-0301 and RFC 4103 (e.g., how to translate the SDP).
Yes, that is likely a good thing to do, but not for the simple example I 
provided.



Personally I
don't think we absolutely need a way to complete a formal negotiation
over XMPP itself, because I tend to think that just sending a chat
message is a much more natural interaction,
Yes, but the example was a session on the SIP side, and a series of chat 
messages on the XMPP side. And the tricky thing with the example was 
that it was not a human operating the SIP side. A human will decide - 
ah, now the call is over, so I hang up. Then the gateway can detect 
that and release resources. But if it is a server as in the example, 
with no real logical end of the session, then we must rely on some 
session signaling from the XMPP user to tear down the session.
Can the directed presence unavailable signaling described in RFC 6121 
section 5.1 be relied upon for the purpose of ending the session?



/Gunnar



Re: [Standards] XEP-0301 Session handling

2012-02-28 Thread Peter Saint-Andre
Hi Gunnar!

On 2/28/12 4:07 PM, Gunnar Hellström wrote:
 Sometimes it is very helpful with a clear beginning and a clear end of
 an XMPP text session.

Some people have thought so in the past:

http://xmpp.org/extensions/xep-0155.html

That was mainly developed for the purpose of end-to-end encryption
(XEP-0116). Personally I think it would be good to deprecate it.

 For example if you are gatewaying to a SIP call, and want to cause a
 hangup on the SIP side, or get an indication to the XMPP side when the
 SIP side has closed the session.

We have Jingle for multimedia session management. We could use it for
managing a text session, although personally I think that's overkill.

 *
 Question*:
 I wonder if there is a session start - session end indication that has
 dominating support among XMPP text messaging implementations that can be
 used as the default mechanism for XEP-0301 real-time text session control.

http://xmpp.org/extensions/xep-0085.html might be most appropriate.

 
 Right now in XEP-0301, there is an start event and a cancel event
 defined in section 4.2.3 with indications that they MAY be used to
 indicate session start and end.
 See http://xmpp.org/extensions/xep-0301.html
 
 I have found some other mechanisms, and I wonder if the start and
 cancel events should be deleted from XEP-0301, and instead some
 already existing mechanism used, in order to not increase the number of
 optional ways to handle session start and end.

Probably a good idea.

 It seems to me that there is a basic mechanism for session control
 defined in RFC 6121 section 5.1
 Initiation of a session should begin with a message with type=chat,
 Both parties shall set their presence show/ to chat
 End of session should be signaled by indicating directed presence
 unavailable.
 A change of show/ to anything else than chat should also be taken as
 indication of end of session.
 An example is presented in section 7 of RFC 6121.

I think XEP-0085 (Chat State Notifications) is more relevant. I don't
think it would be good to overload show/ states because those are
related to presence in general, not a particular chat session.

 I assume that there are a multitude of exceptions when this sequence
 does not occur, but it seems to me to be a good basic sequence to support.
 
 On top of that, there seems to be a range of more comprehensive session
 control options:
 -XEP-0166 Jingle session establishment.

If we want formal session management for RTT sessions then I think
Jingle is the way to go, but I am not convinced that we need formal
session management.

 -XEP-0155 Session establishment

I think we should deprecate that.

 -XEP-0045 Multi-User Chat  ( that also uses directed unavailable
 presence for closing the session as the main method above.)

MUC is multi-user, not one-to-one, so I think it's not general enough
for use in RTT.

 *
 Proposal:*
 So, for XEP-0301, I want to check if it would be wise to delete the
 start and cancel events from chapter  4.2.3 and instead insert a new
 subsection in chapter 6 saying:
 
 6.4 Session control
 Session control is essentially out of scope for this media related
 extension.
 A recommendation is though to follow the basic principles described in
 RFC 6121 section 5.1.
 Any further session handling such as Jingle, MUC or the Session
 establishment extension may be added as found suitable for each specific
 application of this extension.

My primary question is: do we need formal management of RTT sessions? I
don't think we do, and I think we can handle them informally using a
combination of RFC 6121 and XEP-0085. However, if we really really need
formal management then I would suggest using Jingle.

Peter

-- 
Peter Saint-Andre
https://stpeter.im/




Re: [Standards] XEP-0301 Session handling

2012-02-28 Thread Mark Rejhon
2012/2/28 Gunnar Hellström gunnar.hellst...@omnitor.se

 Sometimes it is very helpful with a clear beginning and a clear end of an
 XMPP text session.
 For example if you are gatewaying to a SIP call, and want to cause a
 hangup on the SIP side, or get an indication to the XMPP side when the SIP
 side has closed the session.
 *Question*:
 I wonder if there is a session start - session end indication that has
 dominating support among XMPP text messaging implementations that can be
 used as the default mechanism for XEP-0301 real-time text session control.


Gunnar brings up an excellent question, of which I am considering as well.
This refers to Section 4.2.3 --
http://xmpp.org/extensions/xep-0301.html#event
Right now, session negotiation is also a question that I have about
XEP-0301.

I'm interested in feedback about session negotiation techniques, and about
simplifying XEP-0301 by removing the start/cancel attributes (which are
OPTIONAL) which are actually not currently used in any of the several
XEP-0301 implementations I have seen, including the latest version of
RealJabber (software installer package now available at www.realjabber.org...)

I also need to define a mechanism where both sides of a XEP-0301 compliant
client can negotiate the simultaneous enabling of real-time text on both
sides, on an example mainstream client that might have RTT disabled by
default.   For example, it should be possible for software vendors to add
an activation button for real-time text -- like there's already a button
for audio or video in many popular IM clients.  One technical method behind
the scenes is to use the event=start/event=cancel , but a different method
is to also automatically prompt to send return RTT if it detects incoming
RTT.

*Use Case Example #1:*
Alice messages Bob.  Alice enables real-time text by clicking a button.
On Bob machine, when his software receives an rtt element for the first
time, the software can prompt Bob to enable the real-time text feature, as
follows:
* Alice is now sending real-time text.  Click [Accept] to transmit your
typing live too.*

*Use Case Example #2:*
Alice messages Bob.   Alice enables real-time text by clicking a button.
Bob's IM client is preconfigured to automatically accept real-time text.
Upon receiving Alice's real-time text in rtt, Bob automatically enables
sending of rtt.  A notification message simply gets displayed in the
message history:
*** *Alice has activated real-time text. * *Your typing is now being
transmitted live.*

If this method is done, then it is not necessary to worry about using the
event='start' / event='cancel' for the purposes of RTT-specific session
signalling, and I can just remove it from XEP-0301 to simplify.  Also, it
is noted that XEP-0301 section 5 already provides a mechanism for a client
to detect whether the remote client has RTT support, before transmitting
outgoing unsolicited rtt.

I could go elaborate and use feature negotiation (XEP-0020) or disco
(XEP-0030) to negotiate an RTT session in a more synchronous manner, but I
think that's overkill at this stage, and I think that the two above use
cases are sufficient?

If everyone agrees, then I will be removing *event='start'* and *
event='cancel'* from section 4.2.3 of my XMPP specification,
http://xmpp.org/extensions/xep-0301.html#event in order to simplify the
specification.

Thoughts?

Thanks,
Mark Rejhon



Right now in XEP-0301, there is an start event and a cancel event
 defined in section 4.2.3 with indications that they MAY be used to indicate
 session start and end.
 See http://xmpp.org/extensions/xep-0301.html

 I have found some other mechanisms, and I wonder if the start and
 cancel events should be deleted from XEP-0301, and instead some already
 existing mechanism used, in order to not increase the number of optional
 ways to handle session start and end.

 It seems to me that there is a basic mechanism for session control defined
 in RFC 6121 section 5.1
 Initiation of a session should begin with a message with type=chat,
 Both parties shall set their presence show/ to chat
 End of session should be signaled by indicating directed presence
 unavailable.
 A change of show/ to anything else than chat should also be taken as
 indication of end of session.
 An example is presented in section 7 of RFC 6121.

 I assume that there are a multitude of exceptions when this sequence does
 not occur, but it seems to me to be a good basic sequence to support.

 On top of that, there seems to be a range of more comprehensive session
 control options:
 -XEP-0166 Jingle session establishment.
 -XEP-0155 Session establishment
 -XEP-0045 Multi-User Chat  ( that also uses directed unavailable
 presence for closing the session as the main method above.)

 *
 Proposal:*
 So, for XEP-0301, I want to check if it would be wise to delete the
 start and cancel events from chapter  4.2.3 and instead insert a new
 subsection in chapter 6 saying:

 6.4 Session control
 Session control 

Re: [Standards] XEP-0301 Session handling

2012-02-28 Thread Peter Saint-Andre
On 2/28/12 4:47 PM, Mark Rejhon wrote:

 I'm interested in feedback about session negotiation techniques, and
 about simplifying XEP-0301 by removing the start/cancel attributes
 (which are OPTIONAL) which are actually not currently used in any of the
 several XEP-0301 implementations I have seen, including the latest
 version of RealJabber (software installer package now available at
 www.realjabber.org http://www.realjabber.org ...)
 
 I also need to define a mechanism where both sides of a XEP-0301
 compliant client can negotiate the simultaneous enabling of real-time
 text on both sides, on an example mainstream client that might have RTT
 disabled by default.   For example, it should be possible for software
 vendors to add an activation button for real-time text -- like there's
 already a button for audio or video in many popular IM clients.  One
 technical method behind the scenes is to use the
 event=start/event=cancel , but a different method is to also
 automatically prompt to send return RTT if it detects incoming RTT.   
 
 *Use Case Example #1:*
 Alice messages Bob.  Alice enables real-time text by clicking a button.  
 On Bob machine, when his software receives an rtt element for the
 first time, the software can prompt Bob to enable the real-time text
 feature, as follows:
 / Alice is now sending real-time text.  Click [Accept] to transmit
 your typing live too./
 
 *Use Case Example #2:*
 Alice messages Bob.   Alice enables real-time text by clicking a button.  
 Bob's IM client is preconfigured to automatically accept real-time text.
 Upon receiving Alice's real-time text in rtt, Bob automatically
 enables sending of rtt.  A notification message simply gets displayed
 in the message history:
 *** /Alice has activated real-time text. / /Your typing is now being
 transmitted live./
 
 If this method is done, then it is not necessary to worry about using
 the event='start' / event='cancel' for the purposes of RTT-specific
 session signalling, and I can just remove it from XEP-0301 to simplify.
  Also, it is noted that XEP-0301 section 5 already provides a mechanism
 for a client to detect whether the remote client has RTT support, before
 transmitting outgoing unsolicited rtt.

Mark, the model you're searching for is what we use in XEP-0085. Please
take a look at the text there and see if you can re-use it for RTT.

Peter

-- 
Peter Saint-Andre
https://stpeter.im/




Re: [Standards] XEP-0301 Session handling

2012-02-28 Thread Mark Rejhon

 *[Answered] Matter of Simplifying XEP-0305 by removing its session
 signalling*



When I wrote that, I meant XEP-0301, of course.


Re: [Standards] XEP-0301 Session handling

2012-02-28 Thread Peter Saint-Andre
On 2/28/12 6:13 PM, Mark Rejhon wrote:
 
 
 On Tue, Feb 28, 2012 at 7:04 PM, Peter Saint-Andre stpe...@stpeter.im
 mailto:stpe...@stpeter.im wrote:
 
 On 2/28/12 4:47 PM, Mark Rejhon wrote: 
 
 [snip]
 
  *Use Case Example #1:*
  Alice messages Bob.  Alice enables real-time text by clicking a
 button.
  On Bob machine, when his software receives an rtt element for the
  first time, the software can prompt Bob to enable the real-time text
  feature, as follows:
  / Alice is now sending real-time text.  Click [Accept] to transmit
  your typing live too./
 
  *Use Case Example #2:*
  Alice messages Bob.   Alice enables real-time text by clicking a
 button.
  Bob's IM client is preconfigured to automatically accept real-time
 text.
  Upon receiving Alice's real-time text in rtt, Bob automatically
  enables sending of rtt.  A notification message simply gets
 displayed
  in the message history:
  *** /Alice has activated real-time text. / /Your typing is now being
  transmitted live./
 
  If this method is done, then it is not necessary to worry about using
  the event='start' / event='cancel' for the purposes of RTT-specific
  session signalling, and I can just remove it from XEP-0301 to
 simplify.
   Also, it is noted that XEP-0301 section 5 already provides a
 mechanism
  for a client to detect whether the remote client has RTT support,
 before
  transmitting outgoing unsolicited rtt. 
 
 [snip]
 
  Mark, the model you're searching for is what we use in XEP-0085. Please
 take a look at the text there and see if you can re-use it for RTT.
 
 
 Hello,
 Yes, but it does not answer the question of how to negotiate the
 enabling of RTT.   There are three angles that are covered, two of them
 answered, and one of them not.
 
 *[Answered] **Matter of Compatibility between XEP-0301 and XEP-0085:*
 XEP-0085, if used, is very easily complementary with RTT.  You just
 simply send composing/ with the first rtt/ element transmitted from
 any other state (i.e. active/ or paused/)  I should add a
 sentence about this general practice.
 
 *[Answered] Matter of Simplifying XEP-0305 by removing its session
 signalling*
 XEP-0085 can easily justify the removal of the *event='start'* and
 *event='cancel'*
 *
 *
 *[To Discuss] Matter of negotiation of activation of RTT feature*
 /However/, XEP-0085 doesn't answer the question of an appropriate
 negotiation model for deciding whether or not to enable RTT for a chat
 session.  (RTT is most ideal when both ends enable it)  Peter, do you
 think that my use case examples seem appropriate behaviour?
 
 Comments would be appreciated about this.

I'm suggesting that you use a model similar to XEP-0085 -- if the other
side advertises it (disco/caps), send the first message with some kind
of RTT element. If the response comes back without an RTT element, don't
include any RTT elements in subsequent messages within that conversation.

Peter

-- 
Peter Saint-Andre
https://stpeter.im/




Re: [Standards] XEP-0301 Session handling

2012-02-28 Thread Mark Rejhon
On Tue, Feb 28, 2012 at 9:02 PM, Peter Saint-Andre stpe...@stpeter.imwrote:

 I'm suggesting that you use a model similar to XEP-0085 -- if the other
 side advertises it (disco/caps), send the first message with some kind
 of RTT element. If the response comes back without an RTT element, don't
 include any RTT elements in subsequent messages within that conversation.


Hello!
This works in niche clients.

However, when bringing real-time text to the mass market, it is presumed
that vendors (i.e. Microsoft, Google) will want it to be disabled by
default.  People don't expect their typing to be transmitted live right
away.   Imagine the fuss if audio and video was enabled by default, too --
that would be a /privacy invasion/ for many users not expecting audio/video
to begin transmitting immediately.

We've got the goal of having it in mainstream instant messaging programs.
 (We're planning to add an optional XEP-0301 mode to open source clients
such as Pidgin, Adium, Miranda -- over the next 12-24 months and beyond).
As a result, eventually mainstream vendors may adopt it, i.e. Google,
Microsoft, etc, as a replacement for obsolete deaf TDD/TTY teletypewriters.

So, there's a pressure to make sure the XEP-0301 standard has everything it
requires to make a standardization of RTT negotiation possible, even if
it's as simplistic as the examples I made, or if something more elaborate
is needed.

[Interesting note: In limited testing with non-deaf audiences when it was
'available to them', RTT proved more popular than using an audio and video
feature!   Most people don't turn on Audio and Video all the time, anyway.
  Audio and video is often enabled less than 5% of the time during the
instant messaging application's lifetime, anyway.  RTT actually proved more
popular once the Average Joe Users understood what real time text is.  So
we'll be standardizing on the new logo at www.fasttext.org when a group of
us, myself included, adds it to Adium, Miranda, Pidgin, etc]

Opinions from all would be appreciated, on the best approach to introduce
RTT 'politely' to the mainstream, since it'll be introduced to major open
source instant messengers.  That's why I have to be cautious about removing
*event='start'* if it ends up suddenly becoming necessary.

Apparently XEP-0085 doesn't cover the specific (potentially popular)
situation of an RTT-aware mass market client that has RTT disabled by
default -- that's the use case that clarification is now needed on before
we begin adding it to Adium, Miranda, Pidgin, etc...


Re: [Standards] XEP-0301 Session handling

2012-02-28 Thread Florian Zeitz
Am 29.02.2012 03:02, schrieb Peter Saint-Andre:
 On 2/28/12 6:13 PM, Mark Rejhon wrote:
 *[To Discuss] Matter of negotiation of activation of RTT feature*
 /However/, XEP-0085 doesn't answer the question of an appropriate
 negotiation model for deciding whether or not to enable RTT for a chat
 session.  (RTT is most ideal when both ends enable it)  Peter, do you
 think that my use case examples seem appropriate behaviour?

 Comments would be appreciated about this.
 
 I'm suggesting that you use a model similar to XEP-0085 -- if the other
 side advertises it (disco/caps), send the first message with some kind
 of RTT element. If the response comes back without an RTT element, don't
 include any RTT elements in subsequent messages within that conversation.
 
 Peter
 

I tend to disagree with this. It would inherently require that both
sides do RTT. I don't see any reason to enforce this artificial
requirement. It is perfectly fine for just one side to send RTT
messages, while the other one uses normal chat messages.
If someone doesn't want to receive RTT messages, he should just not
include the feature in the disco response.
Also I see absolutely no reason for any session negotiation for this XEP
whatsoever, especially without an option for the receiving party to
decline the session. A simple on/off switch on the sending end (only
availabe when the disco feature is present) seems sufficient to me.

As a side note. What you described is actually quite different from what
XEP-0085 says. You're mixing the usual disco case with the backwards
compatibility case where no feature is present, but chat states might
still be supported.

Regards,
Florian


Re: [Standards] XEP-0301 Session handling

2012-02-28 Thread Peter Saint-Andre
On 2/28/12 7:33 PM, Mark Rejhon wrote:
 On Tue, Feb 28, 2012 at 9:02 PM, Peter Saint-Andre stpe...@stpeter.im
 mailto:stpe...@stpeter.im wrote:
 
 I'm suggesting that you use a model similar to XEP-0085 -- if the other
 side advertises it (disco/caps), send the first message with some kind
 of RTT element. If the response comes back without an RTT element, don't
 include any RTT elements in subsequent messages within that
 conversation.
 
 
 Hello!
 This works in niche clients.
 
 However, when bringing real-time text to the mass market, it is presumed
 that vendors (i.e. Microsoft, Google) will want it to be disabled by
 default. 

That's a client configuration and UI issue, not a protocol issue.

1. If the interlocutor doesn't advertise support for RTT, consider RTT
unavailable for this conversation and don't proceed to #2.

2. If the interlocutor advertises support for RTT, prompt your user
about whether to try RTT (or have some setting about try RTT with known
contacts or somesuch).

3. If you try RTT but the interlocutor doesn't include RTT extensions,
don't include RTT in subsequent messages.

I still don't see the need for protocol-level *negotiation* here.
However, if you are convinced that we need it, then we already have a
protocol for that: Jingle.

Peter

-- 
Peter Saint-Andre
https://stpeter.im/




Re: [Standards] XEP-0301 Session handling

2012-02-28 Thread Peter Saint-Andre
Hi Florian!

On 2/28/12 7:42 PM, Florian Zeitz wrote:
 Am 29.02.2012 03:02, schrieb Peter Saint-Andre:
 On 2/28/12 6:13 PM, Mark Rejhon wrote:
 *[To Discuss] Matter of negotiation of activation of RTT feature*
 /However/, XEP-0085 doesn't answer the question of an appropriate
 negotiation model for deciding whether or not to enable RTT for a chat
 session.  (RTT is most ideal when both ends enable it)  Peter, do you
 think that my use case examples seem appropriate behaviour?

 Comments would be appreciated about this.

 I'm suggesting that you use a model similar to XEP-0085 -- if the other
 side advertises it (disco/caps), send the first message with some kind
 of RTT element. If the response comes back without an RTT element, don't
 include any RTT elements in subsequent messages within that conversation.

 Peter

 
 I tend to disagree with this. It would inherently require that both
 sides do RTT. 

That was the assumption behind chat state notifications. I think it's a
reasonable assumption, but I also think that reasonable people can
disagree about it.

 I don't see any reason to enforce this artificial
 requirement. It is perfectly fine for just one side to send RTT
 messages, while the other one uses normal chat messages.
 If someone doesn't want to receive RTT messages, he should just not
 include the feature in the disco response.

Sure.

 Also I see absolutely no reason for any session negotiation for this XEP
 whatsoever, especially without an option for the receiving party to
 decline the session. A simple on/off switch on the sending end (only
 availabe when the disco feature is present) seems sufficient to me.

I too agree that we don't need session negotiation.

 As a side note. What you described is actually quite different from what
 XEP-0085 says. You're mixing the usual disco case with the backwards
 compatibility case where no feature is present, but chat states might
 still be supported.

Quite possibly. :)

Peter

-- 
Peter Saint-Andre
https://stpeter.im/




Re: [Standards] XEP-0301 Session handling

2012-02-28 Thread Mark Rejhon
Hello,


 That's a client configuration and UI issue, not a protocol issue.


Actually, we've found it is a very important long-term interoperability
issue -- please see my big email, we have plans to add RTT to multiple open
source clients.   We've explained several scenarios

(i.e. a Year 2014 build of Pidgin talking to a Year 2014 build of Adium
)

Even if the interoperability is accomplished by a software practice, the
software practice still needs to be 'standardized' between different
brands, and therefore must be mentioned in XEP-0301, and therefore relevant
discussion

Mark Rejhon


Re: [Standards] XEP-0301 Session handling

2012-02-28 Thread Peter Saint-Andre
On 2/28/12 8:15 PM, Mark Rejhon wrote:
 
 Hello,
  
 
 That's a client configuration and UI issue, not a protocol issue.
 
 
 Actually, we've found it is a very important long-term interoperability
 issue -- please see my big email, we have plans to add RTT to multiple
 open source clients.   We've explained several scenarios
 
 (i.e. a Year 2014 build of Pidgin talking to a Year 2014 build of Adium
 )
 
 Even if the interoperability is accomplished by a software practice, the
 software practice still needs to be 'standardized' between different
 brands, and therefore must be mentioned in XEP-0301, and therefore
 relevant discussion

Yes, but that doesn't necessarily mean you need an explicit negotiation
protocol.

Peter

-- 
Peter Saint-Andre
https://stpeter.im/




Re: [Standards] XEP-0301 Session handling

2012-02-28 Thread Gunnar Hellström
Returning to the initial question of this thread: Is there a common way 
to indicate session start and session end.


Peter Saint-Andre skrev 2012-02-29 04:20:

Yes, but that doesn't necessarily mean you need an explicit negotiation
protocol.
Right. The first need I thought about can in fact be reduced to a text 
session indicator, not even linked to RTT support.


I will take a scenario to make the need clear.

Assume that there is a SIP based stock exchange service, sending stock 
exchange information in text in sessions. It continues as long as a 
terminal is connected. A terminal indicates by a BYE that it leaves the 
session, so that the server can release the resources. During the 
session, the text information may be provided through RFC 4103 or RFC 
3428 or RFC 4975. (RFC 4103 makes most sense of course for the RTT 
example, but let us look at it in general).


Also assume that you want to make this service available to XMPP users 
through a gateway.
Setting up a chat session to the gateway causes it to set up a SIP 
session with the stock exchange server.
Messages or real-time text is flowing from the stock exchange server to 
the XMPP client.
Then, the XMPP user want to leave the session. What does the user do and 
what does the gateway use as an indication that the session is over and 
it can take down the session towards the server?


The indication for setting up seems to be either the basic mechanism for 
session control defined in RFC 6121 section 5.1 where it is stated that

initiation of a session should begin with a message with type=chat.
Or XEP-0085 chat state going active

But what is most appropriate as indication to the gateway that it is 
time to take down the session on the SIP side?


The XEP-0085 chat states do not seem to be the primary means to use. The 
user may sit there very actively watching the information coming, but 
not touching the user interface for half an hour. According to XEP-0085, 
the chat state would then be gone since long, so taking down the 
session on gone indication does not seem appropriate.


How about relying on RFC 6121 section 5.1 requiring that
end of session should be signaled by indicating directed presence 
unavailable.
Will that be normally signalled by most XMPP text clients when the user 
closes the window where the session was shown?


The stock exchange server example is of course artificial. There may be 
many other cases when a simple session indication is important.
And this regardless of the support for and activation of the RTT 
feature. So my conclusion now is that this is not at all a XEP-0301 
issue, but if we get a conclusion, we could document it as a 
recommendation in XEP-0301.


There are other valid cases, when full capability declaration, exchange 
and negotiation or RTT capability is important, but let us take one case 
at a time.


Thanks

Gunnar