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/CAL5BFfXwxJAeCNXCZdYwEbOrEbo-KBmOZuAZOsYo32m1i02j7Q%40mail.gmail.com.

Reply via email to