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.

Reply via email to