Re: [rtcweb] My Opinion: Why I think a negotiating protocol is a Good Thing
Dzonatas Sol <dzonatas@gmail.com> Tue, 18 October 2011 15:42 UTC
Return-Path: <dzonatas@gmail.com>
X-Original-To: rtcweb@ietfa.amsl.com
Delivered-To: rtcweb@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id D9C2121F8B9A for <rtcweb@ietfa.amsl.com>; Tue, 18 Oct 2011 08:42:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.544
X-Spam-Level:
X-Spam-Status: No, score=-2.544 tagged_above=-999 required=5 tests=[AWL=-0.612, BAYES_00=-2.599, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-1, SARE_HTML_USL_OBFU=1.666]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5Eu7jsDgZfeJ for <rtcweb@ietfa.amsl.com>; Tue, 18 Oct 2011 08:42:14 -0700 (PDT)
Received: from mail-vx0-f172.google.com (mail-vx0-f172.google.com [209.85.220.172]) by ietfa.amsl.com (Postfix) with ESMTP id B4DB221F8AF7 for <rtcweb@ietf.org>; Tue, 18 Oct 2011 08:42:14 -0700 (PDT)
Received: by vcbfo1 with SMTP id fo1so762338vcb.31 for <rtcweb@ietf.org>; Tue, 18 Oct 2011 08:42:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=ix9HkHIGMX7rL8ahHvP89j6+k5u+UPLG1zQnAVOROKk=; b=pjPttkjfk07fdV7coWZTXmR5Yb1LtJiiH29U7kltCxUOyk6yg3x0hN2i/Cjs+wLvIp GGvJvIXvG4wxtt8bEUfbOEIHDeSfhD9UaUycz45hgy6Hx7e2+6D7qk/famkMX3F2olT2 CnYEYIKLZ72MnQALkF+nQizR5UEGv98dsbD8c=
MIME-Version: 1.0
Received: by 10.52.34.100 with SMTP id y4mr2978038vdi.66.1318952533992; Tue, 18 Oct 2011 08:42:13 -0700 (PDT)
Received: by 10.52.107.202 with HTTP; Tue, 18 Oct 2011 08:42:13 -0700 (PDT)
In-Reply-To: <4E9D667A.2040703@alvestrand.no>
References: <4E9D667A.2040703@alvestrand.no>
Date: Tue, 18 Oct 2011 08:42:13 -0700
Message-ID: <CAAPAK-5jW+96_4HromgAe-h5NyHr4GCVY6q8P=scvkBTBF5AAw@mail.gmail.com>
From: Dzonatas Sol <dzonatas@gmail.com>
To: Harald Alvestrand <harald@alvestrand.no>
Content-Type: multipart/alternative; boundary="20cf3079bb0643a4c204af9491e2"
Cc: "rtcweb@ietf.org" <rtcweb@ietf.org>
Subject: Re: [rtcweb] My Opinion: Why I think a negotiating protocol is a Good Thing
X-BeenThere: rtcweb@ietf.org
X-Mailman-Version: 2.1.12
Precedence: list
List-Id: Real-Time Communication in WEB-browsers working group list <rtcweb.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/rtcweb>
List-Post: <mailto:rtcweb@ietf.org>
List-Help: <mailto:rtcweb-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtcweb>, <mailto:rtcweb-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 18 Oct 2011 15:42:16 -0000
On Tue, Oct 18, 2011 at 4:43 AM, Harald Alvestrand <harald@alvestrand.no>wrote: > (Apologies for the length of this note - but I wanted to follow this > argument a bit deeply) > > In the discussions about RTCWEB signalling, I’ve had a change of heart. > Or perhaps it’s just a change of terminology. > > The high bit is this: > I believe we need to standardize a negotiation protocol as part of RTCWEB. > This needs to be described as a protocol, and cannot usefully be described > as an API. > > This note is to explain to my fellow WG members what led me to this > conclusion, and - in some detail - what I think the words in the above > paragraph mean. > Those who don't want to read a long message can stop here. > ------------------------------**------------------------------** > ---------------- > > The context of RTCWEB is the well known trapezoid: > > +-----------+ +-----------+ > | Web | | Web | > | | Signalling | | > | |-------------| | > | Server | path | Server | > | | | | > +-----------+ +-----------+ > / \ > / \ Proprietary over > / \ HTTP/Websockets > / \ > / Proprietary over \ > / HTTP/Websockets \ > / \ > +-----------+ +-----------+ > |JS/HTML/CSS| |JS/HTML/CSS| > +-----------+ +-----------+ > +-----------+ +-----------+ > | | | | > | | | | > | Browser | ------------------------- | Browser | > | | Media path | | > | | | | > +-----------+ +-----------+ > > or even the triangle, where the triangle is formed when the two Web severs > on top are collapsed into one. > > A design criterion for RTCWEB has been that it should be possible to write > applications on top of RTCWEB simply - that is, without deep knowledge about > the world of codecs, RTP sessions and the like. > Another design criterion is that interworking should be possible - which > means that SOMEWHERE in the system, deep knowledge about the world of > codecs, RTP sessions and the like must be embedded; we can’t just simplify > our options until everything’s simple. > > There’s one place in the ecosystem where this knowledge HAS to be - and > that is within the browser, the component that takes care of implementing > the codecs, the RTP sessions and the related features. If we can avoid > requiring embedding it twice, that’s a feature. > > It used to be that I was a believer in APIs - that we should make the API > the “king”, and describe the way you generate an RTP session as “you turn > this knob, and get this effect”. > After looking at the problem of Web applications that don’t have domain > knowledge for a while, I’ve concluded that this doesn’t work. There’s the > need for one browser to communicate with the other browser, and if the > intermediate components are to have the ability to ignore the details, > what’s communicated has to be treated like a blob - something passed out of > one browser’s API and into another browser’s API, unchanged by the > application - because the application must be able to ignore the details. > > OK, now we have the API with blobs. We also have to make some assumptions > about how those blobs are transported, who’s responsible for acting on them, > and so on. And we have to make sure different browsers implement the blob > the same way - that is, it has to be standardized. > What’s more - we DO want to enable applications that are NOT simple. > Including gateways, which are not browsers. So applications must be free to > look inside the blob - break the blob boundary - when they need to. So this > pulls in the same direction as the need for interoperability - the format, > semantics and handling rules for these blobs has to be specified. In some > detail. > > So we have: > - a data format > - a transmission path > - a set of handling rules, in the form of states, processes and timers > > This doesn’t look like an API any more. This looks like a protocol. We’ve > got experience in describing protocols - but it becomes much easier to apply > that experience when we call it a protocol. > I like the idea that expands the FILE: protocol such that it would work with an audio-only codec already available. I guess that would be a blob instead of an image. > > Let’s do that. > > But - you did not address my point... > ------------------------------**---------------- > No, I didn’t. But here are some points that might bear watching. > > “We shouldn’t mandate a new protocol on the wire”. > We’re not. We’re specifying one, and mandating it for a specific point: The > browser/JS interface. > We can have applications that parse it locally using a JS library; in that > case, the protocol runs between the browser and the local JS application. > We can have applications that pass the blobs to a server for gatewaying > into something else; in that case, the protocol runs between the browser and > the server. > We can have applications that pass the blobs (possibly via a very simple > server) to another browser, unchanged; in that case, the protocol runs > between the two browsers. > > In no case does the browser need to know where the other end is; all it > cares about is that the messages flow according to protocol. > > “We should build knobs and let JS libraries take care of what’s on top of > them”. > Well - we could. But it violates the idea of only having the domain > knowledge present once. > If you have to have a browser that implements codec A, and a JS library > that knows how to control codec A, you are *requiring* knowledge in two > places. That’s not optimal. > Things may change in the future - once downloadable codecs actually work, > downloadable negotiation blobs may be a reasonable counterpart. But we’re > not there now. > > “We should use existing protocol X” > We could. But then, we’d buy into all the baggage of protocol X - both the > things it requires us to do and the things that it won’t let us do. Doesn’t > sound too good to me. > ______________________________**_________________ > rtcweb mailing list > rtcweb@ietf.org > https://www.ietf.org/mailman/**listinfo/rtcweb<https://www.ietf.org/mailman/listinfo/rtcweb> >
- [rtcweb] My Opinion: Why I think a negotiating pr… Harald Alvestrand
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Iñaki Baz Castillo
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Neil Stratford
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Iñaki Baz Castillo
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Stefan Håkansson LK
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Harald Alvestrand
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Tim Panton
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Dzonatas Sol
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Wolfgang Beck
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Harald Alvestrand
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Iñaki Baz Castillo
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Harald Alvestrand
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Wolfgang Beck
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Iñaki Baz Castillo
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Cullen Jennings
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Cullen Jennings
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Hadriel Kaplan
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Wolfgang Beck
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Hadriel Kaplan
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Markus.Isomaki
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Binod PG
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Cullen Jennings
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Cullen Jennings
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Hadriel Kaplan
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Roman Shpount
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Hadriel Kaplan
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Cullen Jennings
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Stefan Håkansson
- Re: [rtcweb] My Opinion: Why I think a negotiatin… Hadriel Kaplan