Intent to Continue Experimenting: Native File System API

197 views
Skip to first unread message

Marijn Kruisselbrink

unread,
Mar 13, 2020, 5:46:17 PM3/13/20
to blink-dev

Contact emails

m...@chromium.org, oyip...@chromium.org, natt...@chromium.org 


Spec

http://wicg.github.io/native-file-system/

Algorithms and normative text in the spec are still TODO but will be fleshed out during the experiment period.


Summary

An Origin Trial for Native File System API started in Chrome 78 and is scheduled to end in Chrome 81. The results from that Origin Trial are summarized in this document. The feedback we obtained is positive. That said, we'd like to test additional, frequently requested capabilities in a new origin trial starting in Chrome 82 (ending the new origin trial after Chrome 84).


Link to “Intent to Prototype” blink-dev discussion

https://groups.google.com/a/chromium.org/d/msg/blink-dev/U4rXcm5CE4Y/3XmVtoAPDwAJ

Original intent to experiment: https://groups.google.com/a/chromium.org/d/msg/blink-dev/noan0cgEBGQ/t8DuK8_hDwAJ

Request to Extend by one milestone in: https://groups.google.com/a/chromium.org/d/msg/blink-dev/7HasvKUZm5c/7k3QehJBCAAJ


Goals for experimentation

The goals for experimentation are very similar to our first I2E: gain knowledge about how users interact with the UI surfaces provided by this API, as well as figure out if the API surface as implemented is sufficient to support the use cases we are prioritizing.


We made a number of changes to both the API as well as the UI compared to our first experiment, as such despite having the same goals, we think there still is value in having a new experiment.


At a high level, the changes made since the previous iteration of the origin trial are:


  • Changes to the file writing API to integrate with WritableStream. Previously we used a custom API, and this brings us into better alignment with the rest of the platform..

  • Enable sending file and directory handles to other (same origin) frames and workers using postMessage. This enables off-main-thread processing of documents and data.

  • Added ability to store handles in IndexedDB,  the most frequently requested feature during our first origin trial.

  • Changes to our permission model to support transferability and persistence.  Permissions were previously scoped to the tab they were granted in, now permissions are shared among all same-origin tabs, improving alignment with other web platform APIs.

  • And finally the addition of two new methods: isSameEntry and resolve, which enable comparison of  two handles to see if they are the same, and to figure out if one is a descendant of another. 


Experimental timeline

When does the experiment start and expire?


  • M82: Experiment begins.

  • M84: Last milestone of the experiment.

  • M85: Planned general availability of the API.


Any risks when the experiment finishes?

Without this API websites using it will have to go back to <input type=file> and downloading blob URLs to be able to read from and write to the native file system. While not ideal, that should still give websites access to any data just as well. Even with this API a website will have to re-prompt the user for access to data written using it when a user revisits their website, so this doesn't make things materially worse, at least for reading data.


Additionally since this API lets you store new types of objects in IndexedDB, these objects will not be readable with the API disabled. Websites will have to be able to handle this.


Reason this experiment is being extended

We've made changes to both the UI and API surface that we feel warrant a new origin trial.


Ongoing technical constraints

None


Debuggability

Unfortunately DevTools doesn't currently support the new types stored in IndexedDB very well (values containing the new types just show up as "null", https://crbug.com/1059460). We will work on fixing this, but unfortunately didn't figure this out soon enough for M82. Otherwise there shouldn't be any need for special DevTools support.


Will this feature be supported on all five Blink platforms supported by Origin Trials (Windows, Mac, Linux, Chrome OS, and Android)?

Desktop platforms only (so no Android). We hope to support Android in future, but haven't figured out yet how exactly this should work and what the UI should look like. This origin trial will continue to exclude Android.


Link to entry on the feature dashboard

https://www.chromestatus.com/feature/6284708426022912


Chris Harrelson

unread,
Mar 13, 2020, 5:56:20 PM3/13/20
to Marijn Kruisselbrink, blink-dev
LGTM

--
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+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CA%2BOSsVZt30AZEA-XA8%2ByOgK5wJkCsG5xWvuXLL2JXJYUt9_KPg%40mail.gmail.com.

Marijn Kruisselbrink

unread,
Mar 27, 2020, 5:00:05 PM3/27/20
to Chris Harrelson, blink-dev
With the shifted release schedule (and the cancellation of M82) I'd like to change the timeline for this origin trial to start in M83 and go through the end of M85 (depending a bit on what the release schedule post-83 is going to look like).

Chris Harrelson

unread,
Mar 27, 2020, 5:05:22 PM3/27/20
to Marijn Kruisselbrink, blink-dev
LGTM!
Reply all
Reply to author
Forward
0 new messages