LGTM3

On Mon, May 2, 2022 at 6:50 AM Mike Taylor <miketa...@chromium.org> wrote:

> LGTM2
>
> On 5/2/22 7:15 AM, Yoav Weiss 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 <elada...@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 emails elad...@chromium.org, mfo...@chromium.org,
>>>>>>> jop...@chromium.org
>>>>>>>
>>>>>>> Explainer
>>>>>>> https://github.com/w3c/mediacapture-region/blob/main/README.md
>>>>>>>
>>>>>>> Specification https://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 component Blink
>>>>>>> <https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink>
>>>>>>>
>>>>>>> TAG review https://github.com/w3ctag/design-reviews/issues/710
>>>>>>>
>>>>>>> TAG review status Not 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 name RegionCapture
>>>>>>>
>>>>>>> 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 links https://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 discussions Intent 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/CAL5BFfUZueknsW5KhHd0F6-tdSQND_QBCCiD0fyYZ5prGjR2Kw%40mail.gmail.com
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAL5BFfUZueknsW5KhHd0F6-tdSQND_QBCCiD0fyYZ5prGjR2Kw%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
>
> --
> 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/7dad6c95-c653-a8d7-d50d-69ab16bdf442%40chromium.org
> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/7dad6c95-c653-a8d7-d50d-69ab16bdf442%40chromium.org?utm_medium=email&utm_source=footer>
> .
>

-- 
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/CAOMQ%2Bw-DxUfEeNT4ffftE-d_k5nBVVF2oLNY8W_GP1bRRWBn7w%40mail.gmail.com.

Reply via email to