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 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
>>>>>>>>
>>>>>>>> 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
>>>>>>>> SyncAccessHandle object (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).
>>>>>>>>
>>>>>>>> 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
>>>>>>>>
>>>>>>>> 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
>>>>>>>> AccessHandle functionality 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
>>>>>>>> ).
>>>>>>>>
>>>>>>>> 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)
>>>>>>>>
>>>>>>>> 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
>>>>>>>>
>>>>>>>> SyncAccessHandles have 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 and 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
>>>>>>>>
>>>>>>>> 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
>>>>>>>>
>>>>>>>> Flag name
>>>>>>>>
>>>>>>>> FileSystemAccessAccessHandle
>>>>>>>>
>>>>>>>> Requires code in //chrome?
>>>>>>>>
>>>>>>>> False
>>>>>>>>
>>>>>>>> Tracking bug
>>>>>>>>
>>>>>>>> https://bugs.chromium.org/p/chromium/issues/detail?id=1218431
>>>>>>>>
>>>>>>>> Launch bug
>>>>>>>>
>>>>>>>> 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
>>>>>>>>
>>>>>>>> Links to previous Intent discussions
>>>>>>>>
>>>>>>>> Intent to prototype:
>>>>>>>> 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
>>>>>>>>
>>>>>>>> Intent to Experiment:
>>>>>>>> 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.

Reply via email to