Thank you, Yoav. I'll definitely follow up on those PRs.

On Tuesday, May 24, 2022 at 11:46:44 AM UTC+2 yoav...@chromium.org wrote:

> After carefully studying the discussions on the various threads (as well 
> as participating in them, trying to bridge the gaps), my previous LGTM 
> still stands.
>
> I believe there are 3 points of contention:
> * API shape esthetics 
> <https://github.com/w3c/mediacapture-region/issues/11> (#11)
> * Async nature of CropTarget minting 
> <https://github.com/w3c/mediacapture-region/issues/17> (#17)
> * Whether CropTarget minting should be able to fail 
> <https://github.com/w3c/mediacapture-region/issues/48> (#48)
>
> On API shape esthetics, we've managed to reach a reasonable compromise 
> that's being defined in #50 
> <https://github.com/w3c/mediacapture-region/pull/50>. Please make sure 
> that we're shipping the shape defined there, as well as that the PR itself 
> lands at some point.
>
> As for the need for async minting and their potential failure, I tried to 
> clarify the processing model in #47 
> <https://github.com/w3c/mediacapture-region/pull/47>. It'd be great if we 
> can land those parts in the spec as well.
> At the same time, the discussions on #17 and #48 don't seem to converge, 
> and revolve mostly around back-seat implementation design, which IMO is 
> somewhat out-of-place for a WG discussion.
>
> Going with an *async API that can fail* is justified given the 
> implementation experience we have so far for this feature, and seems like 
> an overall more *conservative future-compat choice*, as we can go back on 
> either of those decisions if future implementations prove that either or 
> both of those characteristics are not needed. It also seems like these are 
> not 
> issues that web developers that used the feature as part of its Origin 
> Trial deem critical 
> <https://github.com/w3c/mediacapture-region/issues/17#issuecomment-1134934556>
> .
>
>
>
> On Thu, May 5, 2022 at 10:09 PM Yoav Weiss <yoav...@chromium.org> wrote:
>
>> Hey Jan-Ivar,
>>
>> Apologies, as I missed the recent activity on issue 11 
>> <https://github.com/w3c/mediacapture-region/issues/11#issuecomment-1112514784>
>>  before 
>> LGTMing. I'll re-review in that light.
>>
>> On Thu, May 5, 2022 at 9:22 PM Jan-Ivar Bruaroey <jbru...@mozilla.com> 
>> wrote:
>>
>>> Hi Youav, the WG is making progress in 
>>> https://github.com/w3c/mediacapture-region/issues/11#issuecomment-1112514784
>>>  
>>> with good feedback from other Google folks. This progress suggests a 
>>> likelihood the WG will go a different direction here, which means Chrome 
>>> shipping now would most likely create a web compatibility headache. Can it 
>>> be held off a month to resolve this?
>>>
>>> The referenced TAG meeting notes, say it's "*Not the TAG's job to pick 
>>> a winner*" which seems to conflict with a LGTM. The WG is making 
>>> progress, so it seems premature to expect the TAG to call disputes, which 
>>> it sounds like they're saying. Also:
>>>
>>>    1. The statement *"interoperability is an imperative ... not what is 
>>>    most technically pure"* seems out of place wrt Origin trials. If 
>>>    interoperability with an Origin Trial is now a thing, it's an argument 
>>> to 
>>>    stop having them.
>>>
>>> I don't think anyone is arguing in favor of interoperability with the 
>> existing Origin Trial.
>>  
>>
>>>
>>>    1. Web APIs are forever. If we can't consider "technical purity" of 
>>>    a brand new API ahead of shipping, then when?
>>>    
>>>    2. The statement *"a lot of elements not visible... these make no 
>>>    sense to set a crop target on"* — means the current API is 
>>>    misleading: The "target" construct (which isn't "set") has nothing 
>>>    inherently to do with cropping, but is merely solving the sub-problem of 
>>>    passing an element from a different realm into the track.cropTo() 
>>> method. 
>>>    As discussed in #11 better ways would be to reuse element.id or a 
>>>    new element.weakRef serializable interface.
>>>    
>>> Finally, the absence of any argument that the present API is better in 
>>> ANY respects for web developers, should cause pause. All arguments I've 
>>> heard instead seem centered on what's easier for browsers to implement 
>>> (where "easier" subjectively seems tied to choices the Chrome 
>>> implementation has made). Better API shapes are on the table, and no-one's 
>>> arguing they're unimplementable. 
>>>
>>> We should do better for web developers here and get the shape right.
>>>
>>> Cheers,
>>>
>>> On Monday, May 2, 2022 at 7:16:33 AM UTC-4 yoav...@chromium.org wrote:
>>>
>>>> LGTM1
>>>>
>>>> Thanks for initiating those discussions. My read of the minutes is that 
>>>> they consider the async approach to be fine, and don't arbitrate on the 
>>>> naming questions, other than saying that none of the proposals seem better 
>>>> than where this API has landed. (and some may add confusion)
>>>> As such it seems that going with the API as currently defined doesn't 
>>>> bear significant interoperability risk.
>>>>
>>>>
>>>>
>>>> On Mon, May 2, 2022 at 1:03 PM Elad Alon <elad...@google.com> wrote:
>>>>
>>>>> The discussions around Region Capture have been brought up with TAG 
>>>>> again (after their original approval 
>>>>> <https://github.com/w3ctag/design-reviews/issues/710#issuecomment-1055212077>
>>>>>  
>>>>> of the design). Here are the minutes from that second meeting:
>>>>>
>>>>> https://github.com/w3ctag/meetings/blob/gh-pages/2022/telcons/04-25-minutes.md#media-capture-region
>>>>>
>>>>> On Wednesday, April 20, 2022 at 6:33:52 PM UTC+2 yoav...@chromium.org 
>>>>> wrote:
>>>>>
>>>>>> Just to (belatedly) update this thread: Following a discussion with 
>>>>>> the API owners and the intent owner a few weeks back, they are planning 
>>>>>> to 
>>>>>> try and get more folks to weigh in on the open issues, and hopefully 
>>>>>> break 
>>>>>> the tie.
>>>>>>
>>>>>> On Wednesday, March 23, 2022 at 6:28:30 PM UTC+1 Elad Alon wrote:
>>>>>>
>>>>>>> It may be better to ask actual web developers regarding the least 
>>>>>>>> confusing option amongst those proposed.
>>>>>>>
>>>>>>>
>>>>>>> The Web-developers I am in contact with are happiest with 
>>>>>>> CropTarget. One of them has mentioned that on issue #18 
>>>>>>> <https://github.com/w3c/mediacapture-region/issues/18>.
>>>>>>> Other Web-developers have not shown up with a preference one way or 
>>>>>>> another.
>>>>>>>
>>>>>>> It bears mentioning that we have been discussing the API in the 
>>>>>>> WebRTC Working Group for approximately 14  
>>>>>>> <https://docs.google.com/presentation/d/1crumgYj4eHkjo04faLktPTg0QoYJhTFoosEBudfJBuw/edit#slide=id.g7954c29f8a_2_0>
>>>>>>> months 
>>>>>>> <https://docs.google.com/presentation/d/1crumgYj4eHkjo04faLktPTg0QoYJhTFoosEBudfJBuw/edit#slide=id.g7954c29f8a_2_0>.
>>>>>>>  
>>>>>>> The initial name for this part of the API was CropID. It was changed 
>>>>>>> <https://github.com/w3c/mediacapture-region/commit/a60b62cb8946d2c6f79de57ff54bb8cd2a0b8550>
>>>>>>>  to 
>>>>>>> CropTarget ~4 months ago, following discussions in the WG. Youenn filed 
>>>>>>> issue 
>>>>>>> #18 <https://github.com/w3c/mediacapture-region/issues/18> ~2 
>>>>>>> months ago. During those two months, no WG member, browser-implementer 
>>>>>>> or 
>>>>>>> Web-developer voiced concerns about the "CropTarget" name. Youenn has 
>>>>>>> made 
>>>>>>> several suggestions (Viewport, LayoutBox). I believe I have addressed 
>>>>>>> these 
>>>>>>> suggestions. I do not think there is interest in the WG for changing 
>>>>>>> the 
>>>>>>> name. I think the name CropTarget will end up sticking, and not produce 
>>>>>>> a 
>>>>>>> compat risk.
>>>>>>>
>>>>>>> Sync vs. async cropTarget creation seems like something you'd want 
>>>>>>>> to decide on before shipping.
>>>>>>>
>>>>>>>
>>>>>>> It is something we have tried reaching consensus on. But I am not 
>>>>>>> observing convergence. I proposed the following:
>>>>>>>
>>>>>>>    - For Chrome, it is important to use a Promise<CropTarget>.
>>>>>>>    - For any browser that does not feel a Promise is necessary, 
>>>>>>>    they can immediately return a pre-resolved Promise<CropTarget>.
>>>>>>>    - Web-developers would be virtually unaffected by the addition 
>>>>>>>    of a Promise even - for the sake of argument - if it isn't strictly 
>>>>>>>    necessary. (I still think it is necessary.)
>>>>>>>
>>>>>>> You mentioned on the thread that the browser can refuse to mint new 
>>>>>>>> cropTargets in some cases. What happens then? Is it specified? How are 
>>>>>>>> developers supposed to defensively program their API use against that?
>>>>>>>
>>>>>>>
>>>>>>> Failure to mint additional tokens happens if excessive tokens are 
>>>>>>> minted. (Defends against memory-overuse in the browser process.)
>>>>>>> Failure is reflected by a Promise being rejected rather than 
>>>>>>> fulfilled - which is an established pattern and well-understood by 
>>>>>>> Web-developers.
>>>>>>>
>>>>>>>
>>>>>>> If minting couldn't fail, then (naively) writing the 
>>>>>>>> process/origin<->token mapping in the browser process could've been 
>>>>>>>> done 
>>>>>>>> async, while the creation of the token could be sync.
>>>>>>>
>>>>>>>
>>>>>>> That is an interesting alternative; thank you for suggesting it. I 
>>>>>>> have given it thought, and I see some issues with it. To start with, an 
>>>>>>> application could be given a "dead" token. Such a token will never be 
>>>>>>> useful, but the application would not be able detect that until it 
>>>>>>> calls 
>>>>>>> cropTo(token), and that call fails. Then, this failure would only be 
>>>>>>> detected by inspecting the error returned by cropTo(). But note that 
>>>>>>> often, 
>>>>>>> produceCropTarget() and cropTo() are called by different documents, so 
>>>>>>> now 
>>>>>>> we even need to postMessage() back a message that "your call to 
>>>>>>> produceCropTarget didn't really work, you have a dead token."
>>>>>>>
>>>>>>> So, if minting itself fails, that's preferable in two ways:
>>>>>>>
>>>>>>>    1. The failure is recognized closer to the actual point of 
>>>>>>>    failure. (And detected by the concerned entity.)
>>>>>>>    2. The application might even wish to *forego calling 
>>>>>>>    getDisplayMedia()* if it knows it's got a bad token (or rather - 
>>>>>>>    no token).
>>>>>>>    3. The application is *not* left holding a "dead" token. 
>>>>>>>    Instead, it holds a rejected Promise<CropTarget> - an established 
>>>>>>> pattern 
>>>>>>>    for failed async-construction.
>>>>>>>    4. If the conditions that caused minting to fail change, then 
>>>>>>>    it's clear that calling produceCropTarget() again might work. 
>>>>>>> (Whereas a 
>>>>>>>    dead token raises a question - is it *now* OK to use, or should we 
>>>>>>> produce 
>>>>>>>    a new non-dead token?)
>>>>>>>
>>>>>>> Does that make sense?
>>>>>>>
>>>>>>> This seems mostly like a developer ergonomics question. As such, 
>>>>>>>> (and like above) a signal from web developers could go a long way to 
>>>>>>>> break 
>>>>>>>> the tie.
>>>>>>>
>>>>>>>
>>>>>>> One of my partners from Google Slides has commented 
>>>>>>> <https://github.com/w3c/mediacapture-region/issues/11#issuecomment-1076543965>
>>>>>>>  as 
>>>>>>> much. She prefers the approach we took - 
>>>>>>> MediaDevices.produceCropTarget. 
>>>>>>> (No Web-developers have mentioned a preference for the other approach - 
>>>>>>> Element.produceCropTarget.)
>>>>>>>
>>>>>>> On Wed, Mar 23, 2022 at 7:01 AM Yoav Weiss <yoav...@chromium.org> 
>>>>>>> wrote:
>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Monday, March 21, 2022 at 9:15:21 PM UTC+1 Elad Alon wrote:
>>>>>>>>
>>>>>>>>> P.S: Requesting to ship gaplessly.
>>>>>>>>>
>>>>>>>>> On Monday, March 21, 2022 at 9:13:30 PM UTC+1 Elad Alon wrote:
>>>>>>>>>
>>>>>>>>>> Contact emailselad...@chromium.org, mfo...@chromium.org, 
>>>>>>>>>> jop...@chromium.org
>>>>>>>>>>
>>>>>>>>>> Explainer
>>>>>>>>>> https://github.com/w3c/mediacapture-region/blob/main/README.md
>>>>>>>>>>
>>>>>>>>>> Specificationhttps://w3c.github.io/mediacapture-region/
>>>>>>>>>>
>>>>>>>>>> Summary
>>>>>>>>>>
>>>>>>>>>> We introduce a performant and robust API for cropping a 
>>>>>>>>>> self-capture video track. (Recall that applications may *already* 
>>>>>>>>>> video-capture the tab in which the application is run using 
>>>>>>>>>> getDisplayMedia(). Using our new Region Capture, such an application 
>>>>>>>>>> may 
>>>>>>>>>> now *crop* that track and remove some content from it; typically 
>>>>>>>>>> before 
>>>>>>>>>> sharing it remotely.)
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Blink componentBlink 
>>>>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink>
>>>>>>>>>>
>>>>>>>>>> TAG reviewhttps://github.com/w3ctag/design-reviews/issues/710
>>>>>>>>>>
>>>>>>>>>> TAG review statusNot applicable
>>>>>>>>>> TAG was positive: "Thank you for bringing this to our attention, 
>>>>>>>>>> and we are happy to see this proposal move forward."
>>>>>>>>>> They did suggest a change of name (Region Capture -> Tab Region 
>>>>>>>>>> Capture), but that does not affect the API. This proposal to refine 
>>>>>>>>>> the 
>>>>>>>>>> name will be brought up with the WG.
>>>>>>>>>>
>>>>>>>>>> Risks
>>>>>>>>>>
>>>>>>>>>> Interoperability and Compatibility
>>>>>>>>>>
>>>>>>>>>> Remaining open issues with Mozilla and Apple:
>>>>>>>>>>
>>>>>>>>>
>>>>>>>> Thanks for summing up the open issues! :) 
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>    - The name "CropTarget" - see 
>>>>>>>>>>    https://github.com/w3c/mediacapture-region/issues/18. No 
>>>>>>>>>>    alternative has yet been presented which garnered more support 
>>>>>>>>>> than 
>>>>>>>>>>    "CropTarget". This seems unlikely to change.
>>>>>>>>>>
>>>>>>>>>> It may be better to ask actual web developers regarding the least 
>>>>>>>> confusing option amongst those proposed.
>>>>>>>> In the past I've used Twitter polls and developer surveys for that 
>>>>>>>> purpose. Is this something you considered?
>>>>>>>> Maybe devrel folks can help on that front.
>>>>>>>>
>>>>>>>>>
>>>>>>>>>>    - Whether produceCropTarget should return a 
>>>>>>>>>>    Promise<CropTarget> or a CropTarget - see 
>>>>>>>>>>    https://github.com/w3c/mediacapture-region/issues/17. In 
>>>>>>>>>>    internal discussions we have consensus that returning a Promise 
>>>>>>>>>> is 
>>>>>>>>>>    preferrable. However, if the WG settles on returning a CropTarget 
>>>>>>>>>> directly, 
>>>>>>>>>>    a migration plan would be needed to ensure Web applications are 
>>>>>>>>>> not broken. 
>>>>>>>>>>    This would be easier if such a change is either not made at all, 
>>>>>>>>>> or is made 
>>>>>>>>>>    in concert with the next bullet-point.
>>>>>>>>>>
>>>>>>>>>> Sync vs. async cropTarget creation seems like something you'd 
>>>>>>>> want to decide on before shipping. You mentioned on the thread that 
>>>>>>>> the 
>>>>>>>> browser can refuse to mint new cropTargets in some cases. What happens 
>>>>>>>> then? Is it specified? How are developers supposed to defensively 
>>>>>>>> program 
>>>>>>>> their API use against that?
>>>>>>>> If minting couldn't fail, then (naively) writing the 
>>>>>>>> process/origin<->token mapping in the browser process could've been 
>>>>>>>> done 
>>>>>>>> async, while the creation of the token could be sync.
>>>>>>>>
>>>>>>>>
>>>>>>>>>>    - API surface of produceCropTarget - see 
>>>>>>>>>>    https://github.com/w3c/mediacapture-region/issues/11. We want 
>>>>>>>>>>    MediaDevices.produceCropTarget(), whereas Apple wants 
>>>>>>>>>>    Element.produceCropTarget or possibly Element.cropTarget(). 
>>>>>>>>>> Should the WG 
>>>>>>>>>>    settle on Apple's current preference, migration would be very 
>>>>>>>>>> easy, as we 
>>>>>>>>>>    can first expose on the new surface *in addition* and then 
>>>>>>>>>> deprecate the 
>>>>>>>>>>    old surface gradually. Moreover, such a migration would actually 
>>>>>>>>>> have the 
>>>>>>>>>>    potential of making a (Promise<CropTarget> -> CropTarget) 
>>>>>>>>>> migration 
>>>>>>>>>>    simpler, should such a change also be adopted by the WG.
>>>>>>>>>>
>>>>>>>>>> This seems mostly like a developer ergonomics question. As such, 
>>>>>>>> (and like above) a signal from web developers could go a long way to 
>>>>>>>> break 
>>>>>>>> the tie. 
>>>>>>>>
>>>>>>>>> Other topics under discussion mostly deal with changes to 
>>>>>>>>>> spec-language, and will not affect the shipped API. Exception - 
>>>>>>>>>> serializability, but that wouldn't break Web-apps (since it's mostly 
>>>>>>>>>> opaque 
>>>>>>>>>> to the application, which would typically only postMessage the 
>>>>>>>>>> CropTarget 
>>>>>>>>>> and use it on the other side).
>>>>>>>>>>
>>>>>>>>>> *Gecko:* No signal (
>>>>>>>>>> https://github.com/mozilla/standards-positions/issues/621) See 
>>>>>>>>>> above clarification about remaining open issues under discussion.
>>>>>>>>>>
>>>>>>>>>> *WebKit:* No signal (
>>>>>>>>>> https://lists.webkit.org/pipermail/webkit-dev/2022-March/032157.html
>>>>>>>>>> ) See above clarification about remaining open issues under 
>>>>>>>>>> discussion.
>>>>>>>>>>
>>>>>>>>>> *Web developers:* Strongly positive This work saw strong support 
>>>>>>>>>> from Web developers inside of Google (Meet, Docs, Slides).
>>>>>>>>>>
>>>>>>>>>> Other signals:
>>>>>>>>>>
>>>>>>>>>> Ergonomics
>>>>>>>>>>
>>>>>>>>>> N/A
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Activation
>>>>>>>>>>
>>>>>>>>>> Unchallenging to use.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Security
>>>>>>>>>>
>>>>>>>>>> This is a mechanism by which an application purposefully strips 
>>>>>>>>>> away information which it already has access to (via pre-existing 
>>>>>>>>>> mechanisms such as getDisplayMedia).
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> WebView Application Risks
>>>>>>>>>>
>>>>>>>>>> N/A
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Debuggability
>>>>>>>>>>
>>>>>>>>>> -
>>>>>>>>>>
>>>>>>>>>> Is this feature fully tested by web-platform-tests 
>>>>>>>>>> <https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md>
>>>>>>>>>> ?No
>>>>>>>>>>
>>>>>>>>>> Flag nameRegionCapture
>>>>>>>>>>
>>>>>>>>>> Tracking bug
>>>>>>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1247761
>>>>>>>>>>
>>>>>>>>>> Launch bug
>>>>>>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1168076
>>>>>>>>>>
>>>>>>>>>> Sample linkshttps://w3c.github.io/mediacapture-region/demo/
>>>>>>>>>>
>>>>>>>>>> Estimated milestones
>>>>>>>>>> OriginTrial desktop last 101
>>>>>>>>>> OriginTrial desktop first 98
>>>>>>>>>>
>>>>>>>>>> Link to entry on the Chrome Platform Status
>>>>>>>>>> https://chromestatus.com/feature/5712447794053120
>>>>>>>>>>
>>>>>>>>>> Links to previous Intent discussionsIntent to prototype: 
>>>>>>>>>> https://groups.google.com/a/chromium.org/g/blink-dev/c/dib14W1B0Xc
>>>>>>>>>> Intent to Experiment: 
>>>>>>>>>> https://groups.google.com/a/chromium.org/g/blink-dev/c/yFUX0KfuUlo
>>>>>>>>>> Intent to Extend Experiment: 
>>>>>>>>>> https://groups.google.com/a/chromium.org/g/blink-dev/c/ZqndGb9e1wM
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> This intent message was generated by Chrome Platform Status 
>>>>>>>>>> <https://chromestatus.com/>.
>>>>>>>>>>
>>>>>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to blink-dev+unsubscr...@chromium.org.
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/653356b8-bda8-4ad8-8c4d-215c85bb1cb9n%40chromium.org.

Reply via email to