Re: [rtcweb] DataChannels API and external negotiation

Randell Jesup <> Wed, 03 April 2013 16:23 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id DDCC821F8F03 for <>; Wed, 3 Apr 2013 09:23:02 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.166
X-Spam-Status: No, score=-2.166 tagged_above=-999 required=5 tests=[AWL=0.433, BAYES_00=-2.599]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 1FqRl317kF9u for <>; Wed, 3 Apr 2013 09:23:00 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 5AA8521F8EFD for <>; Wed, 3 Apr 2013 09:22:54 -0700 (PDT)
Received: from ([]:1043 helo=[]) by with esmtpsa (TLSv1:DHE-RSA-AES256-SHA:256) (Exim 4.80) (envelope-from <>) id 1UNQSb-000Euo-Bn; Wed, 03 Apr 2013 11:22:53 -0500
Message-ID: <>
Date: Wed, 03 Apr 2013 12:21:10 -0400
From: Randell Jesup <>
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20130307 Thunderbird/17.0.4
MIME-Version: 1.0
To:, "" <>
References: <> <> <> <> <> <>
In-Reply-To: <>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname -
X-AntiAbuse: Original Domain -
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain -
Subject: Re: [rtcweb] DataChannels API and external negotiation
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 03 Apr 2013 16:23:08 -0000

Adding W3 list back ("Reply List" replies to one list in TB), since this 
really is a W3 item anyways.

On 4/3/2013 12:19 PM, Randell Jesup wrote:
> On 4/3/2013 12:05 PM, Peter Thatcher wrote:
>> I think moving protocol into the dictionary is a good idea.   In fact,
>> I'd like to see label move there as well, but that's probably asking
>> too much.
>> And now for a little of my own bikeshedding:
>> I don't understand way we have "stream" and "preset", since you can
>> only set "stream" if "preset" is true.  Why not just make the rule "if
>> stream is set, no in-band message is sent", and get rid of "preset"
>> altogether?  I really don't like the word "stream" sneaking in, since
>> it's so overloaded (MediaStream, RTP Stream, etc).  I'd prefer "sid"
>> or just "id".
> The reason was that I wanted a way to have the system select a stream 
> to use (that you can then communicate externally to the other side); 
> this avoids any chance of a collision with existing streams. If this 
> is seen as not useful, then we can collapse it to a single entry.   (I 
> also toyed with using stream 65535 as a flag to tell the system to 
> allocate one; that seemed too hacky.)
> Since this option was almost solely for those who understand the 
> underlying SCTP-ness of this, I used "stream", but I'm fine with 
> "streamId" or "id" (or "index" might be better than "id", which sounds 
> like a label of some sort).  I dislike "sid" for similar reasons to 
> disliking "rtx".
>> I like the idea that reliable+ordered is the default, and both
>> reliability and ordered can be set independently.  I also prefer
>> "ordered" over "outOfOrderAllowed", and along with that I like the
>> idea of a "reliable" flag that, if false, is the equivalent of either
>> maxRetransmitNum:0 or maxRetransmitTime:0.  Finally, I think
>> "maxRetransmitTime" should make its units clear, perhaps calling it
>> "maxRetransmitMillis", and "maxRetransmitNum" could be shortened to
>> simply "maxRetransmits".
> Those seem reasonable (I'd use Millisec/MilliSec or perhaps MS instead 
> of Millis -- how are millisecond time values in other HTML5 specs 
> described?).  On "reliable:false" - is this just a shorthand for 
> "ordered:false, maxRetransmits:0"?  If so, I'm probably ok with it - 
> it's redundant, but makes it easy to use/read for a common case.
>> So the dictionary for my bikeshed would be:
>> dictionary DataChannelInit {
>>    DOMString protocol;
>>    unsigned short id;
>>    boolean ordered;
>>    boolean reliable;
>>    unsigned short maxRetransmits;
>>    unsigned short maxRetransmitMillis;
>> };

Randell Jesup