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 <jbruar...@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/CAL5BFfX8NjbkrDJu8KhRZNCHDSoCvyi7QxKj5-%2BkAAMw4ZYCuQ%40mail.gmail.com.

Reply via email to