- From: Mark Watson <watsonm@netflix.com>
- Date: Thu, 30 Apr 2015 15:29:51 -0700
- To: "Jerry Smith (WINDOWS)" <jdsmith@microsoft.com>
- Cc: David Dorwin <ddorwin@google.com>, "public-html-media@w3.org" <public-html-media@w3.org>
- Message-ID: <CAEnTvdCqs-qZ7aH=-9Uj1_UnY8+hfV4EyvCeX0XfdB0yF+EOkw@mail.gmail.com>
Here is a Pull Request in fulfilment of my Action from the F2F: https://github.com/w3c/encrypted-media/pull/54 You can see the updated specification at http://mwatson2.github.io/encrypted-media/ I will provide a description of the changes in Issue#45 and update the use-case wiki with further information as requested. ...Mark On Thu, Apr 30, 2015 at 2:59 PM, Jerry Smith (WINDOWS) < jdsmith@microsoft.com> wrote: > I think the tone of this email has been relatively civil given some of > the strong opposing opinions involved. One thing seems to be clearly > stated now that maybe wasn’t before: Mark has confirmed that Netflix has > no plans to insist on delayed browser close/automatic messaging, and they > are open to spec language that states this. > > > > There still appears to be significant concern about the feature > maintaining its optional status. I’d be interested in others comments on > this. My own take is that the non-real time aspect of the feature make it > poorly suited to binding features to its presence. I’ve previously said > that having it supported on a subset of UAs can still add value, with no > feature binding involved. Broad UA support is preferable, but doesn’t seem > a requirement for the feature to be justified. > > > > Jerry > > > > *From:* Mark Watson [mailto:watsonm@netflix.com] > *Sent:* Thursday, April 30, 2015 11:12 AM > *To:* David Dorwin > *Cc:* public-html-media@w3.org > *Subject:* Re: Secure release and persistence > > > > > > > > On Wed, Apr 29, 2015 at 5:37 PM, David Dorwin <ddorwin@google.com> wrote: > > The tone of this thread has turned for the worse. I've addressed some of > Mark’s comments below, but I'll wait for #1 and #2 before replying further. > > > > On Wed, Apr 29, 2015 at 9:57 AM, Mark Watson <watsonm@netflix.com> wrote: > > > > > > On Wed, Apr 29, 2015 at 9:29 AM, David Dorwin <ddorwin@google.com> wrote: > > While I welcome further clarification on Netflix's feature, I object to > further specifying it in the spec for the reasons described in issue 45 > [1], specifically [2]. > > > > Well, the F2F agreed to give me an action to provide the remaining > specification details [4] and I in turn object to the removal of much of > the existing specification of this feature, which you did last week under > the guise of a "name change". > > > > I believe #1 and #2 are consistent with [4]. It doesn't make sense to > “provide... technical recommendations” for a problem that isn't fully > defined. > > > > I’m not sure why you think I removed “much of the existing specification > of this feature.” Perhaps because there wasn't much actually specified, > minor deletions appear to be “much” of the specification. I assume you are > referring to the change to remove() (see below) or [5]. The main changes in > [5] other than the name were the removal of a) “generate a persistable > proof of license release”, which was incorrect, and b) specification of > what the license passed to update() must contain, which depends on further > definition of the feature. Both were replaced with "*TBD*." > > > > Yes. The feature doesn't need much in the spec and those things > constituted a major part of it. > > > > I restored the material in the wiki: > https://www.w3.org/wiki/HTML/Media_Task_Force/EME_Use_Cases#Limited_Concurrent_Streams_via_Key_Release > > > > I also made a few updates to align with what was in the spec before the > recent changes. > > > > Honestly, the level of detail for this feature in the Use-Cases wiki is > not different from all the other "supported" features. I'd encourage all > task force members to look at it and tell me if I am going blind somehow. > I'll happily expand it, but perhaps we should do the same for all the > features, not just this one ? (see below on this). > > > > I really don't think it's acceptable for a task force member (editor or > not) to change a use-case from "Supported" to "Not supported" (or vice > versa) when that has *not been agreed by the group* and indeed is an > active topic of discussion. This wiki of use-cases has been stable for a > while and additions / removals should be by agreement. > > > > > > > > There is still no data justifying the need to add this new requirement > to all implementations > > > > It's optional. > > > > I disagree with this justification. As discussed at the f2f, optional > features are considered an anti-pattern because they either become required > to remain competitive or are never implemented. In this case, “optional” is > de facto required because Netflix (may) require it. > > > > I was just pointing out that "new requirement to all implementations" > was not accurate. > > > > The whole issue of optional features deserves more consideration. This is > not the only one. It is not obvious, and it's feature-dependent, that an > optional feature becomes *de facto* required or nowhere implemented. One > can easily imagine features that enhance user experience where UAs disagree > on the competitive value vs other things they might implement. Pre-fetching > of licenses without a <video> element is a good example. So, that it is > always an "anti-pattern" is your opinion, not something we all agree on. > > > > Since this issue applies to multiple features, can we leave it here for > the moment, until we have addressed the other issues ? > > > > > > Regardless, there is no data justifying even the “optional” feature and > the resulting fragmentation. > > > > nor has there been consideration of available alternatives. > > > > License renewal is an alternative which has been extensively discussed, > has significant dis-advantages and also remains underspecified > > > > I said consideration, not discussion. Specifically, there has been no > experimentation with the already available feature set. Only your > assertions that they will not work and Netflix will not consider them. > > > > Secure release is part of the "already available feature set" as far as > I am concerned and we have done more than experiment. It is deployed at > scale with Safari and IE and it is working well. > > > > Is license renewal in use on desktop browsers by any service providers ? > By whom ? Perhaps we can compare notes ? > > > > > > Both are important prerequisites for adding features to the web > platform. Furthermore, Netflix's stated use case - whether mentioned in the > spec or not - requires a fundamental violation of the web platform > architecture: the CDM/media stack delaying application shutdown. > > > > No, this is not required by our use-case and the more detailed > specification I will provide this week will make that even clearer, as > detailed at the top of this thread. > > > > Are you saying that with this new solution, Netflix will not require *any* > user agents to delay shutdown and ensure that messages reach the server? > > > > It's not a "new solution" - it's just more detail on how everyone > implemented what was there before. > > > > Delaying shutdown is not mentioned in the use-case wiki, it's not > mentioned in the specification, we don't require it for our use-case and > responsive to your concerns I'm *trying* to find ways to make this clearer > in the spec. If you can find a way for the specification to *prohibit* it, > that would be fine by me. We don't require any user agents to delay > shutdown. What else can I do to address your concern ? > > > > > > > > Based on these important concerns, clear lack of consensus, continuing > confusion about this feature even among the editors [3], and lack of data > or experimentation, it is still too early to include this in the spec and > require it of all implementations. > > > > Even with Mark’s description below, there is still confusion about this > feature [3]. I propose the following next steps for Mark’s feature request: > > 1. Mark clearly defines (all) use case(s) for this feature (perhaps in the > wiki or a doc). > > 2. Mark clearly defines the feature he is requesting (perhaps in the wiki > or a doc). > > > > The use-case and feature definition have been present, first in the > original specification and later in the wiki, since the beginning of the > work (i.e. several years). I'm happy to refresh this as I understand you > may have removed some of this from the wiki recently. > > > > The use case has been unclear and there has never been a complete feature > definition. As an example, see the text from “the beginning of the work”: > [6]. Also, as far as I am aware, this thread is the first time that saving > decrypt times has been discussed publicly. > > > > The use-case is no less clear than all the others (see below). > > > > Yes, I'm proposing an additional level of detail based on how everyone > has implemented this which, since it is common, can be described in the > specification. It's good for implementation experience to inform the spec. > I thought it would help with your concerns, since it makes it clear there > is nothing to be done / persisted / sent etc. at page close. > > > > > > Yes, I removed the text from the wiki and added a note that the model has > not been explicitly defined. The text, much of which I had written, was out > of date, and I did not want it to add confusion to the ongoing discussion. > > > > 3. Mark provides justification for adding this feature, including data > on alternatives considered and experimented with as well as user benefit of > this feature over alternatives. > > > > As I have already explained several times, the user benefit of this > feature over license renewal is that streams-in-progress do not fail when > there is a loss of connectivity to the application server or an application > server outage. Put another way, this feature enables detection of > concurrent stream limit fraud without imposing real-time requirements on > the application servers. This is both an architectural advantage > (non-real-time systems always being simpler than real-time ones, on many > axes) and a user experience benefit. > > > > It's hard to quantify the benefit and unnecessary to the justification, > but nevertheless I am working on this. > > > > So, I agree with steps 1-3 and they have been completed (modulo > restoration of material you have deleted from the wiki). > > > > I disagree that steps 1-3 have been completed. Specifically, this thread > has raised new information. As I said above, I think steps 1-2 are are > prerequisites for [4]. > > > > The old wiki text is all there in the history. However, I highly doubt > simply reverting the deletion addresses these steps. We need sufficient > detail to understand the use cases, implementation requirements, > algorithms, and whether delayed shutdown might reappear as a requirement on > some platforms. > > > > I added the following here: > https://www.w3.org/wiki/HTML/Media_Task_Force/EME_Use_Cases#Failed_Handshake > > > > "It is not required to attempt the handshake except by the explicit > procedure described above (for example if the web application is closed or > crashes)." > > > > > > 4. The group discusses and attempts to reach consensus on a solution for > #1. > > > > You are treating this as a brand new feature request wheras I consider it > a feature that has been present since day one. It is already supported by > two User Agents. Whilst concerns have been expressed previously, the > outright opposition is very new. I had expected those earlier concerns to > be addressed through the interaction between implementation experience and > specification development. Given the implementation status we are ready to > complete the specification work. Just because your position changes from > concerns (which I am addressing in this very thread as well as before) to > opposition does not set back the feature to a square one requirements > discussion. > > > > The definition you appear to be proposing is brand new > > . > > Earlier this month, you were arguing for a different solution. If some of > this information is new to me and the public discussion, I find it hard to > believe “It is already supported by two User Agents.” > > > > Well, it is indeed supported and deployed. You can look at the API > interactions between our JS on netflix.com and the browsers in question > if you find it hard to believe. > > > > As noted above, I'm just proposing additional detail about how the feature > is implemented under the covers. Whilst previous text talks about > persisting the license release message, it is always the case that you can > implement however you like so long as the API behavior is the same. So, > it's just a different way of describing the same thing - actually with a > bit more detail. We can go back to the previous way if you like, but I do > think this way is better. > > > > Not to mention, there is no clear definition of what “it” is. The spec > process is more than just documenting existing implementations. Features > aren’t typically dictated by a single site, either. Perhaps there are > others that would like similar functionality, but they would be excluded by > the rubber-stamping of such privately-developed definitions. > > > > Well, sites are restricted to using the DRMs supported by the User > Agents. Where these DRMs already support a feature in a common way, I > think it makes sense for us to support that in our specification. > > > > > > The spec started as a proposal for some simple APIs to perform license > exchanges. Through the spec process, including input from WG members and > the TAG, the importance of interoperability, fragmentation, > implementability, privacy, security, etc. have all become clearer. We've > also learned of additional use cases and discussed various user agent > implementations. Through this process, the bar for features and > functionality has been raised (to be consistent with the general spec > process). Having never been concretely defined and posing a number of > concerns, it seems reasonable for this feature to be expected to reach this > bar. > > > > I'm glad you bring up this evolution in our process which has largely > been driven in this group by you. I agree with the direction and I think it > would help if we could expand that to explicit agreement of the whole > group. We should discuss in more detail what this means for our work, > because I think you are making assumptions that are not shared by the group > (at least, not yet). > > > > I'm more than happy to expand the use-case, definition and specification > of the feature to meet a higher bar. We should do the same for other > features. I think we should just get to work collaborating on that, rather > than ripping (certain) things out and starting from scratch. I think that > was the conclusion of the F2F. > > > > > > We have opposed this feature “since the beginning of the work.” At one > point, it was "allowed" due to underspecification. Five months ago, a > session type was added because we needed to specify behavior for a > different use case ("persistent-license"). A month ago, I accidentally > specified the remove() behavior was the same for both session types. > > > > I have seen this problem many times in standardization: you add something > to the specification "by mistake" which others think was deliberate and > agree with. People read it, even implement based on that. Later you realize > your mistake but at this point it is too late. You need to discuss the > reversion, why it was a mistake, consider that perhaps even if it was > unintentional, it was not *actually* a mistake for the specification, > since it passed group review etc. > > > > > > We have always strongly objected to any scenario that involved delaying > shutdown. There was a period of time where we were led to believe various > things were no longer required, at which time our opposition was lessened. > However, that turned out to be false and/or subject to change, and our > opposition returned. You'll have to forgive me if I'm cautious about any > new claims that delaying shutdown is off the table. > > > > Fair enough. See above. > > > > > > ...Mark > > > > > > > > It’s worth noting that without such evolution to the group's approach to > the spec and our consistent pushback, delayed shutdown might well be a de > facto requirement for all implementations, including desktop browsers. If > we are now at a point (different from even earlier this month) where that > is no longer being considered, then I would call that a success for the web > platform. > > > > > > ...Mark > > > > > > [1] https://github.com/w3c/encrypted-media/issues/45 > > [2] https://github.com/w3c/encrypted-media/issues/45#issuecomment-91743387 > > [3] > https://lists.w3.org/Archives/Public/public-html-media/2015Apr/0067.html > > > > [4] http://www.w3.org/2015/04/16-html-media-minutes.html#action01] > > > > > > David > > > > P.S. > > "Record of license destruction" was only intended for “persistent-license”, > > > > Whatever your intention, what was actually in the specification until > your recent changes applied this to both “persistent-license” and > “persistent-release”. > > > > There was one inadvertent case where this was the case. It was added a > month ago in the commit to ‘Define the behavior for "persistent-license" > sessions’ [7]. In your original email, you said it was incorrect for your > use case. Fixing this mistake and separating the session types still seems > like the appropriate action. > > > > but it is similarly restrictive for implementations. I’ll change it to > something like "persist an invalidation of the license." Other wording > suggestions welcome. > > > > [5] > https://github.com/w3c/encrypted-media/commit/71e4352d4a737f3cdba879217dc9daf74020751d > > [6] > https://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1/encrypted-media/encrypted-media.html#key-release > > [7] > https://github.com/w3c/encrypted-media/commit/76c48b4f0a171af89ed93c21745900ecbb75f7a2 > > > > > > > > > On Tue, Apr 28, 2015 at 8:02 AM, Mark Watson <watsonm@netflix.com> wrote: > > All, > > > > Hopefully this will catch you in your newly-freed "EME hour" :-) > > > > As promised at the F2F I will draft spec updates this week to fill in the > missing details of this feature. However, I would like to make one > significant change in response to comments at the F2F and previously > regarding exactly what is persisted. > > > > The spec describes persistence of a "record of license destruction". Aside > from the fact that we have no concept in our spec of "license", this is not > typically how this feature is implemented in DRMs and suggests a need to > persist data at close / shutdown / crash or other events that cause license > destruction. > > > > In practice, what is persisted is a record of available keys at a point > in time. This is updated regularly *during streaming*. There is no update > on close / shutdown / crash. In a later browsing session, this record is > compared with the actually available keys and a discrepancy is taken as > evidence that keys were destroyed. > > > > I propose that we describe this persisted data explicitly as "for each key > in the session, the *first decrypt time* and the *latest decrypt time*".* > > > > Are there any comments on that before I implement it ? > > > > Based on this change in description, I suggest we call this session type " > *tracked*" - or something similar - since really we are 'tracking' the > usage of keys. This name will also invite appropriate scrutiny of the > persisted data properties. > > > > ...Mark > > > > * there may of course be other CDM-specific information persisted and > included in the release message. For example if the CDM has a concept of > licenses, then license correlation identifiers may be present. Also, how > the CDM communicates time in its messages may be CDM-specific. > > > > > > > > > > > > > > >
Received on Thursday, 30 April 2015 22:30:31 UTC