Re: [rtcweb] Requesting "SDP or not SDP" debate to be re-opened

"Matthew Kaufman (SKYPE)" <> Wed, 19 June 2013 18:02 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 5371D21F9BD4 for <>; Wed, 19 Jun 2013 11:02:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.599
X-Spam-Status: No, score=-2.599 tagged_above=-999 required=5 tests=[AWL=-0.001, BAYES_00=-2.599, HTML_MESSAGE=0.001]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id t2B7cHtiRMhM for <>; Wed, 19 Jun 2013 11:01:59 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id D612221F9AE7 for <>; Wed, 19 Jun 2013 11:01:57 -0700 (PDT)
Received: from ( by ( with Microsoft SMTP Server (TLS) id 15.0.707.0; Wed, 19 Jun 2013 18:01:50 +0000
Received: from ( by ( with Microsoft SMTP Server (TLS) id 15.0.707.0 via Frontend Transport; Wed, 19 Jun 2013 18:01:50 +0000
Received: from ([]) by ([]) with mapi id 14.03.0136.001; Wed, 19 Jun 2013 18:01:35 +0000
From: "Matthew Kaufman (SKYPE)" <>
To: Peter Thatcher <>
Thread-Topic: [rtcweb] Requesting "SDP or not SDP" debate to be re-opened
Date: Wed, 19 Jun 2013 18:01:34 +0000
Message-ID: <>
References: <> <> <> <> <> <> <> <> <> <> <>, <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
Content-Type: multipart/alternative; boundary="_000_AFC6D2DF3C384E2090A7A8A10E667471skypenet_"
MIME-Version: 1.0
X-Forefront-Antispam-Report: CIP:; CTRY:US; IPV:CAL; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(199002)(189002)(13464003)(51444003)(52034003)(24454002)(377454003)(46102001)(16406001)(74502001)(56776001)(53806001)(47446002)(51856001)(16236675002)(81342001)(54356001)(81542001)(50986001)(74366001)(76786001)(76796001)(6806003)(512954002)(79102001)(76482001)(4396001)(47976001)(56816003)(47736001)(31966008)(74662001)(54316002)(49866001)(77096001)(69226001)(561944002)(80022001)(20776003)(65816001)(71186001)(74876001)(63696002)(36756003)(33656001)(74706001)(59766001)(15202345003)(77982001)(30436002)(16601075003)(16297215004); DIR:OUT; SFP:; SCL:1; SRVR:BN1AFFO11HUB026;; CLIP:; RD:InfoDomainNonexistent; A:3; MX:3; LANG:en;
X-O365ENT-EOP-Header: Message processed by - O365_ENT: Allow from ranges (Engineering ONLY)
X-Forefront-PRVS: 08828D20BC
Cc: "" <>
Subject: Re: [rtcweb] Requesting "SDP or not SDP" debate to be re-opened
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, 19 Jun 2013 18:02:05 -0000

Fighting the offer/answer machinery in the browser is always possible, but never easier.

I want an API that let's me tell the browser what to do, not engage in an argument with it until it is beaten into submission. I think an API that let's me tell the browser what to do will then also be much easier to extend to give me *more* control.

As an example, putting A and V over the same transport... Could be one more JS API, instead of a discussion at MMUSIC about how to encode that in our must-use SDP, followed by JS code I need to write to argue with the browser when it offers that but I want to turn it off, or vice versa.

Matthew Kaufman

(Sent from my iPhone)

On Jun 19, 2013, at 9:50 AM, "Peter Thatcher" <<>> wrote:

I asked "is there something that can't be done without sufficient SDP munging"?  You answered "I have something that can be done with sufficient SDP munging".   OK.  But do you have something that *can't* be done with SDP munging?

If there's nothing that can't be done with SDP munging, then this whole thread boils down to "give us an API that has the same amount of control as the current one, but without requiring SDP munging to do advanced things".  And if that's is what is desired, then at least it can be clear and concise.

On Wed, Jun 19, 2013 at 9:36 AM, Matthew Kaufman <<>> wrote:
I provided a use case that, unless one wants to write a bunch of SDP-munging JS state machine cannot be done.

The problem is that such use cases are either 1) ignored or 2) dismissed because of course if one writes said JS, they are possible with the current API

Matthew Kaufman

(Sent from my iPhone)

On Jun 19, 2013, at 9:28 AM, Peter Thatcher <<>> wrote:

I might be wrong, but I tried reading and understanding your whole email, and it seems to come down to "I don't want to use SDP or a different (JSON) form of SDP".  That's a fine thing to request, but why don't you just say that?  It would save everyone a lot of reading and confusion to be more concise.

Or, if you have specific things you'd like to do but can't, what are they?  I think that would help me, and others, understand more easily.  Use cases would be helpful.

On Wed, Jun 19, 2013 at 6:58 AM, Robin Raymond <<>> wrote:

The trouble is not that we can choose to send whatever we want over the wire. I know we can. If the WebRTC API is left with SDP as it stands, I'll dissect the SDP from the browser, reinterpret and reconstruct on the SDP on the remote side. That is NOT the issue.

The summary of what I want/believe:
1) I want as close to raw access to RTP/ICE streams, media, sources, outputs, codecs as viable. Obviously doing the actual transmission, encoding/decoding from JS is not feasible (yet), nor is secure [ICE must occur for mutual agreement to exchange data between peers], but having controls for how these components are wired together is extremely feasible from JS and would allow immensely powerful apps to be produced from JS.

What would you like to do that you can't do via SDP right now?  You said this isn't just about working through SDP.  But I don't see anything concrete you can't do right now with sufficient SDP parsing/building/munging/hackery.

2) I don't want my primary interface to control media/RTP engines to be via obtaining or providing SDPs to the browser (or any alternative serialized format); especially given that SDP requires a round trip offer/answer to the remote party to affect change (e.g. it's entirely possible to do that stateless and one-sided). The SPD interface API is a monolithic do-everything serialized format to control an engine but extremely badly/poorly/short sighted (regardless if it is SDP or whatever instead), and it's wholly unneeded.

Short summary: "I don't want to use SDP".  Right?

3) I don't want a replacement for SDP with another more "pretty" format like JSON.

Short summary: "I don't want to use SDP or a different syntax for SDP".  Right?

4) I want no specified requirement from the browser to have any particular form of media negotiation API requirement what-so-ever (regardless if I can opt to substitute with my own format on the wire or not)

Short summary: "I don't want to use SDP or a different syntax for SDP".  Right?

5) Using SDP with offer/answer build into the browser binary is a horribly BAD technical choice (even for SIP folks) and must be stopped, see:

Short summary: "I don't want to use SDP".  Right?

I too want to understand the rational for keeping something as bad as SDP with offer/answer as the primary mechanism for controlling the media components and interaction to those component and more importantly, I'd too would like to open debate to agreeing or not to provide a lower layer API rather than a media negotiation API as a complete substitute alternative to SDP with offer/answer.

If we can agree that it's far superior to have a lower level media/RTC component API rather than a media negotiation API, then we can propose what that API could look like (and there are people who have already have starting proposals). I'd throw my hat in the ring to propose such and API if necessary as I've written such engines from scratch before. But I don't want to waste time proposing ore reviewing such an API which will be summarily dismissed because people are so stuck on requiring a media negotiation API built into the browser binary, and specifically SDP with offer/answer in this case.

The WG may dislike and reject your proposal, but there's a bit of truth to the old mathematically incorrect sports adage "you miss 100% of the shots you don't take".

Anyone who argues that they need/want that simple SDP media negotiation API must understand that a lower level API would allow a wrapper API to produce the same WebRTC API the have today but be built entirely from JavaScript

That depends on how low-level you go.  If you go too low-level, it becomes infeasible to do things correctly and performantly in JavaScript.

upon a lower level API. Thus they can have their "just add-milk" baking API. But those of us who need control of the raw ingredients beyond the "just add milk" can still innovate.


Peter Thatcher<>
19 June, 2013 2:49 AM
Correct my if I'm wrong, but the API already leaves what goes over the wire completely up to the JS app.  So we couldn't re-open a debate of "SDP or not SDP" for the wire format, because there's nothing to debate.  We already decided it would be left to the JS to decide.  The only thing left to debate is the API.

Or am I wrong?

rtcweb mailing list<>
Christer Holmberg<>
19 June, 2013 2:34 AM

We need to be very clear what we talk about, or some people are always going to be confused :)

So, AFAIK, the discussion is about SDP O/A usage in the API, only in the API, and nowhere but the API.

Whatever people us on the wire is outside the scope.




Sent from Windows using TouchDown (<>)

-----Original Message-----
From: Peter Thatcher [<>]
To: Martin Thomson [<>]
CC:<> [<>]
Subject: Re: [rtcweb] Requesting "SDP or not SDP" debate to be re-opened
Martin, you're right; that was overly harsh of me.  Adam, I apologize.  I'll be civil in the future.

rtcweb mailing list<>
Peter Thatcher<>
19 June, 2013 1:36 AM
Martin, you're right; that was overly harsh of me.  Adam, I apologize.  I'll be civil in the future.

rtcweb mailing list<>
Martin Thomson<>
18 June, 2013 6:25 PM
I agree with Peter, except for this bit:

Adam is much harder to confuse than you think, or than he professes.

Speaking of burning it all down and starting over. If you want a
house-related analogy, that's not quite correct. It's refusing to
build an extension because the old house, while legally fit for
habitation, is falling down around your ears. Since you only need
foundations, it's not that big a job (though I'll grant you that it's
bigger than many people realize, even with that smaller scope).
rtcweb mailing list<>
Peter Thatcher<>
18 June, 2013 6:16 PM
Adam, I think you're confused.  As Ted pointed out, there are two different uses of SDP: 1.  as a control surface, 2. as a message format for signalling.  SDPNG was trying to replace SDP for #2.  While I believe this thread was started entirely focused on #1.  So you're talking about different things.

So far the only time spent on trying to replace or avoid SDP for #1 has been "comment 22", and to a lesser extent the proposal I just made for adding 2 methods to PeerConnection (createLocalStream and createRemoteStream).   I think it's incorrect to conclude that we should never try to improve #1 just because other in the past failed to replace #2.  They're very different.

I also don't think we should burn down WebRTC and start over, but despite what some seem to think, we don't have to choose between "burn it down" and "never improve it".  There are many options other than the two extremes.

By the way, a gentle reminder: SDP is not the only way to do #2.  I work on a rather large system almost entirely build around Jingle, without a hint of SDP, and it works just fine.  Much better than SDP would have, I think.  Just because SDPNG didn't work out doesn't mean there will never be any way other to do signalling than SDP.

rtcweb mailing list<>

rtcweb mailing list<>

rtcweb mailing list<>