On 2013-04-19 00:39, Mark Rejhon wrote:
Gunnar, see the bottom of this message for a positive surprise....
Thank you for the honour, much appreciated to be even more part of this important improvement of communication opportunities.

Firstly, I want to stress the importance of minimum changes.
I already privately emailed to XSF team and would prefer to submit Version 0.9 with *almost NO CHANGE*. Submitting 0.9 with many changes will automatically break my promise and *will reduce the likelihood of last call approval.*
Agreed. The new items I included are results of a review. I wanted to report them, but I agree that they are of a kind and on a level that can be left without action. I dont like saving things for a 2014 update. It is so much harder to get a good effect of additions to a protocol when you already have an installed park. But we can after discussion deem some not sufficiently important to allow modification of the document now, or not mature enough.


On Thu, Apr 18, 2013 at 5:53 PM, Gunnar Hellstrom <[email protected] <mailto:[email protected]>> wrote:

    7.
     Section 4.2.1 or 4.3 last bullet.
    Insert:
    "NOTE: Wrap-around may occur when incrementing <seq/> if the
    randomly selected start value was close to the upper border of
    <seq/>. "
    NOT DONE


I am against adding too much text about seq without removing other text about seq *in the "Protocol" section*. I think we already talk too much about trivial seq issues right now as-is. One idea is that I can delete most of the seq text and create a much bigger seq section in the "*Implementation Notes*" section. The simple sentence about the 31-bit bounds is currently sufficient (maybe a minor sentence tweak if necessary), we know that properly following "*Keeping Real-Time Text Synchronized*" indicates clients MUST not assume incrementing seq values will always happen, so it already successfully catches seq going backwards in time, which is exactly the wraparound condition too, unless both ends do the wrap properly.

In addition to my preference, XSF has already complained that we are already too much like a lower-layer protocol. Expanding the talk about *seq* is against this goal, especially as the safeguards are already sufficient now, in my opinion.
The only acceptable reason to not put this in is that we agree that programmers are so well aware of handling incrementing sequence numbers with upper bounds and risk for wrap around that it is safe to not mention the risk.

The reasoning that if handling wrap around is wrongly programmed, then it only halts presentation of text until the message is complete or a new REFRESH is received is not sufficient reasoning for not entering the note.

So, what is the habit in this environment? Do we trust programmers to remember the wrap-around case? If so, we may leave it out. Please do not change and move text just because of this. It is only a one line note I ask for.


    9.
    Section 4.6.3.3 Insert
    "Recipients SHALL avoid excess lag by monitoring the queue for
    excess <w/> action elements (e.g. unprocessed <w/> elements from
    two <rtt/> elements ago) and then ignoring or shortening the
    intervals from the <w/> elements. This allows lagged real-time
    text to "catch up" quickly."
    ( consider removing or reword the similar sentence from 6.5 so
    that we do not have repetitions )
    NOT DONE


*DONE (indirectly)*
What I did was simply make 4.6.3.3 link to section 6.5.
I did the change in a different way. It's a good change. It is not an interoperability issue that belongs in the Protocol section (*I am _extremely_ adamant to keep Section 4 as compact as I can, and additionally also have been previously told by XSF to also keep Section 4 "Protocol" as simple as possible.*).
This is an important performance issue. If the means for catch up described in 6.5 are not implemented, then delay of one <rtt/> message will proliferate through a complete sequence of continous typing. Since chapter 6 is not supposed to have SHALLs, I suggested to move this to chapter 4. But of course, chapter 6 contains a lot of good advice that we can expect implementors to follow. So if you have put in a pointer from 4.6.3.3 to 6.5 and sharpened up the wording in 6.5 it can be sufficient.

The actions against proliferating delays described in 6.5 should in fact be developed into a smooth adaptive jitter buffer algorithm, that results in low delays and small jerkiness at late delivery of an <rtt/> element, rather than a constant longer delay and always true reproduction of key press intervals. That can be done within the frames allowed by 6.5.

In summary: I accept your proposal.


    10. Is there a risk for delay introduced in the description of <w/> ?
       In beginning of 4.6.3.3 it is said that <w/> represent time
    between key presses.
      in 6.1.2 it says that <w/> represent wait between Action
    Elements <http://xmpp.org/extensions/xep-0301.html#action_elements>.
    Assuming that key presses are momentary, but it takes some
    milliseconds to complete some action elements this will introduce
    on the receiving side a sum of waits and action element
performance time that is more than the transmission interval. Thus, delays will be introduced during times of continous typing.
    Do we need to be more concise with what time <w/> represents?

    Should 6.1.2 be modified to say Is it "wait from end of latest
    wait"  or "wait from beginning of execution of latest action element ?


*WORTHY (IF REWORDED) -- BUT POSTPONE TO 2014*
This is good discussion (and see below for more info about how Chris and I do it), but this can be a Year 2014 discussion if it shows to be a performance concern. But it isn't the cause of lag in current XEP-0301 implementations. More urgently is solving the problem of mishandling late <rtt> arrivals -- which is the *chief cause of the lag in both of our XEP-0301 implementations.* This is stuff that the spec needs to improve, but the talk here is an unnecessary complication / sidetrack. Computers/phones are fast enough that doing either approach would work good enough, provided there was code to handle the chief cause of lag (<rtt> backlog)

    In 4.6.6.3, it says:
    "Wait n milliseconds before processing the next action element."
    proposed to be changed to:
    "Wait until n milliseconds after end of latest wait, before
    processing the next action element, or if this is the first <w/>
    in the current real-time message, then wait until n milliseconds
    after beginning handling presentation of that real-time message ."


*WORTHY (IF REWORDED) -- BUT POSTPONE TO 2014*
This turns an easy-to-read sentence into a hard sentence.
More bugs will occur with your sentence than with mine, purely because your sentence is hard to read. Besides, it's not currently the cause of lag in RealJabber or Chris' software.
The cause of lag is from a backlog of <rtt> elements.
This is not an urgent matter of concern.
Error margin of different <w> handling is extremely small, and human-perceptible differences will only be noticed slow machines (e.g. netbooks) and <rtt> catchup handling can handle this anyway.
Don't let us mix this issue with what might have been observed in current implementations. It is a small logic glitch and was a pure finding from review. I agree that my wording got clumsy in order to take care of both <w> in the beginning of an <rtt> element and further in.

One case when the interpretation of <w> could matter is in a slow device getting a huge REFRESH with some added recent typing including a <w> appended in the same <rtt>. According to sender logic, the <w> represents the time from the last keypress before the REFRESH to the one appended in the REFRESH. According to the receiver logic, the <w> is time between action elements. The waiting time shall start when the real-time buffer is reset and the reestablishment of the old text is done and displayed. In continuous typing e.g. in conference transcription, this can be many thousands of characters that need to be placed into a display buffer etc, so it may very well build up to many milliseconds addition to the delay. Without the hint for catchup logic in 6.5 obeyed, there could be a continuous addition to the delay by coming REFRESHs.

But, I agree that making a stronger recommendation for catch up logic in 4.6.3.3 and 6.5 will help against this effect and other glitches. The talk about precision in other sections ( 4.6.3.3 and 6.1.4 ) might also contribute to delays if there is no catch up logic. And, by the way, this is only a risk during constant typing without pauses longer than the transmission interval (usually 700 ms ). So it is odd cases we are talking about.

Yes, I agree, we can leave this whole issue ( 10 ) without action.



    In 6.1.2 it says:
    " This is achieved using Element <w/> – Wait Interval
    <http://xmpp.org/extensions/xep-0301.html#element_w_wait_interval>
    between other Action Elements
    <http://xmpp.org/extensions/xep-0301.html#action_elements>. Sender
    clients can transmit the length of pauses between key presses,"
    proposed new wording:
    "This is achieved using Element <w/> – Wait Interval
    <http://xmpp.org/extensions/xep-0301.html#element_w_wait_interval>
    from previous <w/> or beginning of the current <rtt/> element.
    Sender clients can transmit the length of pauses between key presses,"


*WORTHY -- BUT POSTPONE TO 2014*
It makes a lot of sense but I'm going to postpone this change for now, because of unanticipated side effects of minor wording tweaks. Both me and Chris treat <w> intervals accumulating on a system time since the beginning of <rtt>, so slow local performance doesn't cause <w> to
The cause of <rtt> lag is chiefly caused by late delivery of <rtt>.
These wording changes WILL NOT solve the lag in either RealJabber or the Gallaudet RTT client.
I deem this a bit of a sidetrack / red herring discussion.

    FOR DISCUSSION

    11. Should we improve chances of smooth and low latency playout by
    putting XEP-0203 timestamps on the messages as a guide to when it
    should be played out.


    E.g. by inserting this sentence in 6.1.2.

    "For more accurate timing of beginning of playout of each <rtt/>
    element, it is recommended to insert a time stamp on the <rtt/>
    elements by use of XEP-0203 time stamping, and on the receiving
    side let this value control when playout of the element starts
    rather than timing it only from the <w/> elements throughout the
    whole real-time message."

    Then, a reference to XEP-0203 needs to be added as well.
    FOR DISCUSSION


*WORTHY -- BUT POSTPONE TO 2014*
I like timestamps, but this is an obvious "cart before the horse" situation. I think this can be a Year 2014 discussion. It doesn't belong in XEP-0301 right now. Chris can easily experiment with this, without it requiring to be part of XEP-0301. It is a permissible stage of discussion for later into the DRAFT stage, after there's already fully functional XEP-0203 + XEP-0301 implementations. Reading XMPP's website, this is an obvious permissible change during DRAFT.

There is potential side effects with timestamps.
Sending intentionally inaccurate timestamps create a potential security issue / DDoS. Also, timestamps could diverge if one computer changes system clock (e.g. automatic synchronization with time server).
There are MANY nasty bugs that can be introduced with timestamps.
The KISS principle applies here.
There are other simpler solutions (other than timestamps) to reducing XEP-0301 lag. I rather see people create XEP-0203 implementations with XEP-0301, before I mention XEP-0203 in XEP-0301 Also, the reference list in XEP-0301 already refers to too many other XEP standards, giving the impression that XEP-0301 is more complicated than it really is.

Yes, I like timestamps, but this isn't a LAST CALL showstopper. It can be a Year 2014 discussion. I already announced to the XSF team and would prefer to submit Version 0.9 with *almost NO CHANGE*. Submitting 0.9 with many changes will automatically break my promise and *will reduce the likelihood of last call approval.*

OK, go without it and introduce agressive adaptive jitter buffer handling instead.


That said, I did hereby grant Gunnar Helstrom co-authorshop. I have sensed a strong agreement with R3TF, despite my reluctance. Congratulations, Gunnar, for becoming an official co-author -- it does seem that you have rightfully met the requirements of co-authorship under significant-contributer criteria. It does not change my reluctance, as a main author, to support unnecessary/trivial changes to XEP-0301 that is already adequately covered by the standard or elsewhere.

Thanks a lot.

And thanks for a good discussion on the review findings. We are clearly down to issues where it would be better to take it through last call.


/Gunnar
Mark Rejhon

Reply via email to