LGTM3

On 4/12/22 2:04 AM, Mike West wrote:
LGTM2.

-mike


On Tue, Apr 12, 2022 at 6:08 AM Yoav Weiss <yoavwe...@chromium.org> wrote:

    LGTM1

    Thanks for pushing this through. Please make sure to follow-up on
    any feedback we'd get on the PR itself.

    On Mon, Apr 11, 2022 at 7:44 PM Emanuel Krivoy
    <fived...@chromium.org> wrote:

        Hello!

        I've removed the options object from our implementation, and
        filed a new PR against the WHATWG repo
        (https://github.com/whatwg/fs/pull/21) that incorporates the
        previous feedback.

        Yoav:
        Yes, we'd like to keep the current OT running and then ship on
        102 without removing availability of the surface in between.

        On Thu, Apr 7, 2022 at 12:38 PM Yoav Weiss
        <yoavwe...@chromium.org> wrote:



            On Mon, Apr 4, 2022 at 5:11 PM Emanuel Krivoy
            <fived...@chromium.org> wrote:

                Hello,Replying to Mike inline:


                    https://github.com/WICG/file-system-access/pull/344
                    <https://github.com/WICG/file-system-access/pull/344>doesn't
                    seem to have moved in the last ~2 weeks, and I
                    don't see a new PR against the WHATWG spec. What's
                    y'all's timeline for finishing the specification
                    of this feature?


                The plan is to create the PR against the spec in
                WHATWG this week. It should include the changes from
                the current feedback in the old PR.

                    Thanks for doing this investigation! It does sound
                    like something we'd want to resolve before
                    shipping, as it would be unfortunate for this to
                    present a barrier to interop.
                    I didn't see a bug filed against webkit in a quick
                    search, can you follow up on that (or point it out
                    if I missed it)?

                I directly followed up with WebKit and the Storage
                team. The result of the discussions was that, to avoid
                compatibility issues with Safari and leave the design
                of the options object fully open, we should
                temporarily remove the options parameter from
                createSyncAccessHandle().

                Once there is consensus on how options should be
                handled, it should be easy to add them back. We would
                end up in the desired final state, but with an
                inverted default: the OPFS Access Handle behavior is
                the default one, and specific options would be needed
                to use them in other file systems. Since the OPFS use
                case is the one that has been proven with trials, and
                the one that other browsers intend to implement for
                now, I think it makes sense to leave it as the default.

                To all:

                Since we have to do code changes to remove the options
                object, and since the spec still has to be rebased, I
                wanted to change this request from shipment on 101 to
                a gapless shipment on 102. I’ll keep working on those
                two pending items and ping this thread when they are done.


            Just to clarify, you're planning to run the OT till the
            end of M101 and then gaplessly ship in M102?


                Thanks!Emanuel

                On Wed, Mar 30, 2022 at 3:01 PM Mike West
                <mk...@chromium.org> wrote:

                    On Wed, Mar 23, 2022 at 5:48 PM Emanuel Krivoy
                    <fived...@chromium.org> wrote:

                        Hey Yoav,

                            So the plan is to land the PR in WICG, and
                            then (immediately) move it over to
                            https://fs.spec.whatwg.org/?
                            What are the current blockers for the WICG
                            PR from landing?


                        My plan would be to act on the current round
                        of feedback in the WICG PR and then move the
                        spec to its final home in WHATWG to finish the
                        review/merge there.
                        The situation is an artifact of me wanting to
                        do a quick round of feedback before investing
                        time in the rebase, just to make sure the spec
                        was going in the right direction. Now I think
                        it might have made things more confusing than
                        they should have been, sorry!


                    https://github.com/WICG/file-system-access/pull/344
                    doesn't seem to have moved in the last ~2 weeks,
                    and I don't see a new PR against the WHATWG spec.
                    What's y'all's timeline for finishing the
                    specification of this feature?

                            Have you tried running STP against the WPT
                            test suite? That could be reassuring
                            interop-wise


                        Thanks for the suggestion. After running the
                        WPTs, there seems to be some divergence with
                        the proposed spec. The most substantial one
                        (beyond some issues around the type of error
                        thrown) is that the implementation of
                        createSyncAccessHandle in Safari TP does not
                        take an options parameter.

                        The options parameter is there to (eventually)
                        allow using access handles on other
                        filesystems (i.e., from outside OPFS, in
                        particular on files hosted in the local file
                        system). This feature has been requested by
                        developers on various occasions, and would
                        make the File System Access API more flexible.
                        In our implementation, the options parameter
                        is required (as in, has to be provided when
                        calling createSyncAccessHandle) to avoid
                        setting the default behavior of access handles
                        to the particular one needed within OPFS.
                        Further context can be found in
                        https://github.com/whatwg/fs/issues/19.

                        I will go ahead and file the appropriate
                        bugs/contact the feature owner!


                    Thanks for doing this investigation! It does sound
                    like something we'd want to resolve before
                    shipping, as it would be unfortunate for this to
                    present a barrier to interop.

                    I didn't see a bug filed against webkit in a quick
                    search, can you follow up on that (or point it out
                    if I missed it)?

                    Thanks!

                    -mike


                        On Wed, Mar 23, 2022 at 5:39 AM Yoav Weiss
                        <yoavwe...@chromium.org> wrote:

                            Thanks for working on this important
                            capability!!

                            On Tuesday, March 22, 2022 at 5:24:08 PM
                            UTC+1 Emanuel Krivoy wrote:


                                        Hello blink-dev, We'd like to
                                        request a review on our intent
                                        to ship Access Handles with
                                        Chrome 101. Since we don't
                                        envision changes to the
                                        surface and it is currently in
                                        use by Photoshop web, this
                                        request comes one release
                                        before our OT expires. Please
                                        find the details below:


                                        Contact emails

                                fived...@chromium.org, r...@chromium.org


                                        Explainer

                                
https://github.com/WICG/file-system-access/blob/main/AccessHandle.md
                                
<https://github.com/WICG/file-system-access/blob/main/AccessHandle.md>


                                        Specification

                                Out for review.
                                
<https://github.com/WICG/file-system-access/pull/344/files>Will
                                be moved
                                
<https://github.com/WICG/file-system-access/issues/342>to
                                WHATWG after replying to pending
                                comments.


                            So the plan is to land the PR in WICG, and
                            then (immediately) move it over to
                            https://fs.spec.whatwg.org/?
                            What are the current blockers for the WICG
                            PR from landing?


                                        Summary

                                The Origin Private File System (OPFS,
                                part of the File System Access API) is
                                augmented with a new surface that
                                brings very performant access to data.
                                This new surface differs from existing
                                ones by offering in-place and
                                exclusive write access to a file’s
                                content. This change, along with the
                                ability to consistently read unflushed
                                modifications and the availability of
                                a synchronous variant on dedicated
                                workers, significantly improves
                                performance and unblocks new use cases
                                (especially for porting existing
                                IO-heavy applications to WebAssembly).


                                This Intent-to-Ship is only in
                                reference to the sync variant of the
                                API i.e., the
                                createSyncAccessHandle()method and the
                                SyncAccessHandleobject (only exposed
                                in worker contexts):


                                const handle = await
                                file.createSyncAccessHandle();

                                var writtenBytes = handle.write(buffer);

                                var readBytes = handle.read(buffer
                                {at: 1});


                                The sync variant is meant to be
                                consumed by low-level entities like
                                toolchains. We expect application
                                developers to prefer the async API
                                with its streaming interface which
                                will be shipped later.


                                AccessHandles is the new API shape for
                                what was previously called Storage
                                Foundation API (Intent-to-Experiment:
                                
http://groups.google.com/a/chromium.org/g/blink-dev/c/Jhirhnq3WbY
                                
<http://groups.google.com/a/chromium.org/g/blink-dev/c/Jhirhnq3WbY>).


                                        Blink component

                                Blink>Storage>FileSystem
                                
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EStorage%3EFileSystem>


                                        TAG review

                                
https://github.com/w3ctag/design-reviews/issues/664
                                
<https://github.com/w3ctag/design-reviews/issues/664>


                                        TAG review status

                                Issues addressed


                                        Risks


                                        Interoperability and Compatibility

                                The feature has to be compatible with
                                existing ways to access data on OPFS
                                i.e., createWritable()and getFile().
                                The use of write locks and care for
                                backwards compatibility should mean
                                that the risk here is low. In order to
                                ease compatibility concerns in the
                                future, we've added an optional 'mode'
                                parameter to
                                createAccessHandle()/createSyncAccessHandle().
                                This allows us to eventually extend
                                AccessHandlefunctionality to non-OPFS
                                file systems without necessarily
                                taking the OPFS behaviour as default
                                (more details
                                
here:https://github.com/WICG/file-system-access/blob/main/AccessHandle.md#exposing-accesshandles-on-all-filesystems
                                
<https://github.com/WICG/file-system-access/blob/main/AccessHandle.md#exposing-accesshandles-on-all-filesystems>).


                                There is a risk of interoperability
                                between vendors, pending the position
                                on implementing this surface. This
                                design is the result of feedback from
                                Gecko and WebKit, who reviewed
                                previous iterations of this
                                functionality and gave feedback that
                                it should integrate more strongly with
                                OPFS. We directly shared documents
                                outlining alternatives considered
                                
<https://docs.google.com/document/d/121OZpRk7bKSF7qU3kQLqAEUVSNxqREnE98malHYwWec>,
                                and later our recommendation
                                
<https://docs.google.com/document/d/1g7ZCqZ5NdiU7oqyCpsc2iZ7rRAY1ZXO-9VoG4LfP7fM>towards
                                this particular API shape.We believe
                                that the new design, when paired with
                                a separate streams-based extension to
                                OPFS, meets the goal of more strongly
                                integrating with the existing surface.
                                However, we have not yet received
                                replies to the position requests below.


                                Gecko: Worth Prototyping
                                
(https://github.com/mozilla/standards-positions/issues/562
                                
<https://github.com/mozilla/standards-positions/issues/562>)


                                WebKit: In development
                                
(https://lists.webkit.org/pipermail/webkit-dev/2021-August/031934.html)
                                Request for position was not answered,
                                but the feature is being implemented
                                and is available in TP. See reference
                                bug:
                                https://bugs.webkit.org/show_bug.cgi?id=231185


                            Have you tried running STP against the WPT
                            test suite? That could be reassuring
                            interop-wise


                                Web developers: Positive

                                From our Storage Foundation OT, we
                                received very positive feedback on the
                                need for high performance storage, as
                                well as on the general shape of the API:


                                 *

                                    Adobe’s support statement (about
                                    the need for the capability)
                                    
<https://github.com/WICG/proposals/issues/10#issuecomment-804145429>

                                 *

                                    absurd-sql’s mention
                                    
<https://github.com/mozilla/standards-positions/issues/481#issuecomment-898061119>

                                 *

                                    Reception on Twitter after DevRel
                                    announcement
                                    
<https://twitter.com/ChromiumDev/status/1405101909757902851>


                            Thanks for a very strong developer signal!


                                SyncAccessHandles have a very similar
                                shape to the surface that was exposed
                                in Storage Foundation’s Origin Trial.
                                It is currently a critical dependency
                                
<https://web.dev/ps-on-the-web/#high-performance-storage>of
                                Photoshop Web. The Photoshop team has
                                confirmed that the current surface
                                covers their needs and that they have
                                no pending feedback/requests.


                                Ergonomics

                                As mentioned above, SyncAccessHandles
                                offer a very similar surface to the
                                one positively received during Storage
                                Foundation’s OT. The main differences
                                are the migration of file system
                                operations into OPFS and the
                                asynchronicity of auxiliary methods
                                (i.e. methods other than read and write).


                                Since many of our use cases require
                                good interoperability between this API
                                and Wasm, we’ve developed an
                                Emscripten file system
                                
<https://github.com/rstz/emscripten-pthreadfs/tree/main/pthreadfs>that
                                allows ported applications to use
                                SyncAccessHandles. This simplifies
                                both activation and use, since the API
                                can be accessed through standard C/C++
                                file system libraries.


                                        Security and Privacy

                                SyncAccessHandleshave received
                                approval for Security and Privacy in
                                our launch bug
                                
<https://bugs.chromium.org/p/chromium/issues/detail?id=1232436>.


                                        Debuggability

                                Basic tooling: Autocomplete works as
                                described in "New WebIDL/DOM
                                interfaces and attributes".


                                Extended tooling: we'll eventually
                                want to be able to explore files
                                stored in OPFS. There are two tracking
                                bugs related to this:crbug.com/256067
                                <http://crbug.com/256067>andcrbug.com/735618
                                <http://crbug.com/735618>. This API
                                doesn't really add new storage
                                backends, just new ways to interact
                                with files, so we'd be covered by
                                those as well.

                                File System Access API usage is also
                                reflected in user settings pages such
                                as chrome://settings/siteData.


                                        Is this feature fully tested
                                        by web-platform-tests
                                        
<https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md>?

                                Yes, we’ve added tests for all new
                                functionality, as well as for the
                                intersection between this surface and
                                existing parts of OPFS, e.g., we’ve
                                made sure that locking between
                                writables and access handles is correct.


                                Our test suite is also run against our
                                Incognito mode implementation, since
                                it is significantly different from the
                                regular mode one.wpt.fyi results:
                                
wpt.fyi/results/file-system-access?label=master&label=experimental&aligned
                                
<http://wpt.fyi/results/file-system-access?label=master&label=experimental&aligned>


                                        Is this feature supported on
                                        all six Blink platforms?

                                Not yet. File System Access API is not
                                yet available on Android or Android
                                WebView, but the Storage team has
                                expressed interest
                                
<https://bugs.chromium.org/p/chromium/issues/detail?id=1011535#c9>in
                                at least enabling OPFS once there is
                                more usage/cross-browser support.


                                        Demo

                                The API has no UI component. An
                                example code snippet can be found here
                                
<https://github.com/WICG/file-system-access/blob/access-handle-spec/AccessHandle.md#new-data-access-surface>.


                                        DevTrial instructions

                                
https://github.com/WICG/file-system-access/blob/main/AccessHandle.md#trying-it-out
                                
<https://github.com/WICG/file-system-access/blob/main/AccessHandle.md#trying-it-out>


                                        Flag name

                                FileSystemAccessAccessHandle


                                        Requires code in //chrome?

                                False


                                        Tracking bug

                                
https://bugs.chromium.org/p/chromium/issues/detail?id=1218431
                                
<https://bugs.chromium.org/p/chromium/issues/detail?id=1218431>


                                        Launch bug

                                
https://bugs.chromium.org/p/chromium/issues/detail?id=1232436
                                
<https://bugs.chromium.org/p/chromium/issues/detail?id=1232436>


                                        Estimated milestones


                                OriginTrial desktop last

                                        

                                102

                                OriginTrial desktop first

                                        

                                95

                                DevTrial on desktop

                                        

                                94


                                We aim to ship with 101.


                                        Link to entry on the Chrome
                                        Platform Status

                                
https://chromestatus.com/feature/5702777582911488
                                
<https://chromestatus.com/feature/5702777582911488>


                                        Links to previous Intent
                                        discussions

                                Intent to prototype:
                                
https://groups.google.com/a/chromium.org/g/blink-dev/c/33T36N6VBKI
                                
<https://groups.google.com/a/chromium.org/g/blink-dev/c/33T36N6VBKI>

                                Ready for Trial:
                                
https://groups.google.com/a/chromium.org/g/blink-dev/c/_nB5VfgXW_I
                                
<https://groups.google.com/a/chromium.org/g/blink-dev/c/_nB5VfgXW_I>

                                Intent to Experiment:
                                
https://groups.google.com/a/chromium.org/g/blink-dev/c/-FVIvFovd3g/m/vUNm4X8UBAAJ
                                
<https://groups.google.com/a/chromium.org/g/blink-dev/c/-FVIvFovd3g/m/vUNm4X8UBAAJ>

                                Intent to Extend Experiment:
                                
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAHExSGL4tBM-mH%2B-Cm7YtBiVMLLGrPMVxtCHYwG6PM_oG67hjw%40mail.gmail.com
                                
<https://groups.google.com/a/chromium.org/d/msgid/blink-dev/cahexsgl4tbm-mh+-cm7ytbivmllgrpmvxtchywg6pm_og67...@mail.gmail.com>


                                This intent message was generated by
                                Chrome Platform Status
                                <https://www.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/CAKXHy%3DdHh_Pnt_MzHv94AxPauLcYeh2sYWsbfq9vMiZ0sjhfdA%40mail.gmail.com <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAKXHy%3DdHh_Pnt_MzHv94AxPauLcYeh2sYWsbfq9vMiZ0sjhfdA%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/0b46298f-2453-9984-d409-2678e874f014%40chromium.org.

Reply via email to