Re: [rtcweb] "20 lines" (Re: RTCWeb default signaling protocol [was RE: About defining a signaling protocol for WebRTC (or not)])

Jozsef Vass <> Fri, 23 September 2011 00:56 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id B41C421F8493 for <>; Thu, 22 Sep 2011 17:56:58 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -106.599
X-Spam-Status: No, score=-106.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_MED=-4, USER_IN_WHITELIST=-100]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id YlYhvwb6Dcig for <>; Thu, 22 Sep 2011 17:56:58 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id ABA7621F848D for <>; Thu, 22 Sep 2011 17:56:56 -0700 (PDT)
Received: from ([]) by ([]) with SMTP ID; Thu, 22 Sep 2011 17:59:30 PDT
Received: from ( []) by (8.12.10/8.12.10) with ESMTP id p8N0vnC7025245; Thu, 22 Sep 2011 17:57:50 -0700 (PDT)
Received: from ( []) by (8.12.10/8.12.9) with ESMTP id p8N0wA2f001998; Thu, 22 Sep 2011 17:59:13 -0700 (PDT)
Received: from ([]) by ([]) with mapi; Thu, 22 Sep 2011 17:58:42 -0700
From: Jozsef Vass <>
To: Harald Alvestrand <>, "" <>
Date: Thu, 22 Sep 2011 17:58:41 -0700
Thread-Topic: [rtcweb] "20 lines" (Re: RTCWeb default signaling protocol [was RE: About defining a signaling protocol for WebRTC (or not)])
Thread-Index: Acx4SYt+ix2J7Wv/QMyG+qfZHzwkrQBQeSqQ
Message-ID: <>
References: <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
acceptlanguage: en-US
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Subject: Re: [rtcweb] "20 lines" (Re: RTCWeb default signaling protocol [was RE: About defining a signaling protocol for WebRTC (or not)])
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: Fri, 23 Sep 2011 00:56:58 -0000

I am in support of having some basic mechanism in the browser as part of rtcweb to enable developers to quickly and easily setup media between participants. Furthermore, if an API is too complex or too hard to use, people will not use it or misuse it. I can only see a handful of companies developing advanced calling feature on top of rtcweb, most people just want to have something simple to work without caring too much about the details.

Maybe it would be advantages to specify such a very basic use case, e.g., targeting gaming. It must work behind NATs using peer-to-peer media transport (but fallback to media relay may not be required). Since it is targeting closed community, there is no need for interoperability, there is no need for SIP, Jingle, etc. At the minimum, this would require a simple service for ip address lookup and to aid NAT and firewall traversal.

For example, when a user registers with this service, he/she is assigned an identifier or blob. In order to communicate with another party, all they need to do is to exchange this information (this can be done using websocket, etc.) and setup media channel. There should be no need for parsing SDP, etc.


-----Original Message-----
From: Harald Alvestrand [] 
Sent: Wednesday, September 21, 2011 2:08 AM
Subject: [rtcweb] "20 lines" (Re: RTCWeb default signaling protocol [was RE: About defining a signaling protocol for WebRTC (or not)])

On 09/20/2011 09:28 AM, Saúl Ibarra Corretgé wrote:
> On Sep 20, 2011, at 12:59 AM, Roman Shpount wrote:
>> Randell,
>> What I fail to understand is in what way would adding signaling to the web browser would  make things easy to build? How is what you are proposing better then 2 or 3 well written samples?
>> On the other hand, if you decide to build such simple signaling interface, depending on what use case you are trying to address you will end up with very different libraries. You have to decide how complex you want to make this library on the server vs the client side. You will need to decide if the purpose of this library is to simplify browser-to-browser or browser-to-PSTN calls. There is going to be a large number of very complex decisions none of which have obvious answers and will greatly affect the overall library design.
>> Most importantly, I think this is a misconception that you can build something that can be developed in 20 lines or less and be useful. Real-time communication is order of magnitude more complex then most of the web related applications. You need to deal with multiple event sources, deal with event collisions, negotiation failures, call state machines. And this is what required for the basic call setups. Once you start dealing with transfers, conferences, call status monitoring, things become even more complex. It is almost impossible to develop something that is simple to use that serves more then one or two specific use cases. If we try to invent something like this we might never finish.
> +1.
> If we add some signaling protocol to the browser to ease web developers then someone might say "why don't we also add X, Y and Z". The browser only needs the media plane, the signaling can be elsewhere, and it's far better to have it elsewhere.
> As Roman pointed out, RTC applications are not something that can nor should be done in 20 lines of JS. It's just complex. If people want to make simple apps they can build a simple JS library using an invented simple protocol. But RTCWeb shouldn't encourage this IMHO.
Let me just say that I totally disagree on this point.

The developers of applications that need audio and video capabilities are not RTC developers. Their main focus and main skill set will lie elsewhere.

In a little more than 20 lines of code, it is possible to set up a call using a variant form of the existing W3C API. I know, I have seen the code. Other examples (in a slightly different variant) are part of the Ericsson demo.
What's perhaps more important is that none of those 20+ lines mention anything about codecs, bit rates, congestion control or any of the numerous other issues we've been hashing out.

With the API we support, simple things MUST be simple. Complex things must be possible.