Intent to Experiment: Storage Foundation API

238 views
Skip to first unread message

Emanuel Krivoy

unread,
Feb 9, 2021, 12:11:27 PM2/9/21
to blin...@chromium.org, rs...@chromium.org

Contact emails

five...@chromium.orgrs...@chromium.org

Explainer


https://github.com/fivedots/nativeio-explainer

Specification

None

API spec

Yes

Summary

Storage Foundation API is a storage API that resembles a very basic filesystem, with direct access to stored data through buffers and offsets. Our goal is to give developers flexibility by providing generic, simple, and performant primitives upon which they can build higher-level components. It's particularly well suited for Wasm-based libraries and applications that want to use custom storage algorithms to fine-tune execution speed and memory usage.



Blink component

Blink>Storage

Search tags

storagenativeioperformancelow-levelgenericfoundation

TAG review

https://github.com/w3ctag/design-reviews/issues/566

TAG review status

Issues open

Risks



Interoperability and Compatibility

This new feature has some potential interoperability risks due to its nature as a novel and low-level API. Currently, there are no web features that expose such a generic interface and that focus on WebAssembly ports as one of it's main consumers.



Gecko: No signal (https://github.com/mozilla/standards-positions/issues/481)

WebKit: No signal (https://lists.webkit.org/pipermail/webkit-dev/2021-February/031687.html)

Web developers: No signals


Goals for experimentation

In general, we would like to validate the whole surface of our API against developer expectations and more diverse use cases. In particular, we are interested in confirming that we provide the required performance to allow new uses, and to shed light on developer preference between a synchronous and asynchronous surface.



Reason this experiment is being extended



Ongoing technical constraints



Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?

Yes

Is this feature fully tested by web-platform-tests?

Yes

Tracking bug

https://bugs.chromium.org/p/chromium/issues/detail?id=914488

Launch bug

https://bugs.chromium.org/p/chromium/issues/detail?id=1143306

Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5670244905385984

Links to previous Intent discussions

Intent to prototype: https://groups.google.com/a/chromium.org/g/blink-dev/c/gh0gTHO18YQ


This intent message was generated by Chrome Platform Status.

Masataka Yakura

unread,
Feb 10, 2021, 12:52:58 AM2/10/21
to blink-dev, Emanuel Krivoy, rs...@chromium.org
On Wednesday, February 10, 2021 at 2:11:27 AM UTC+9 Emanuel Krivoy wrote:

Contact emails

five...@chromium.orgrs...@chromium.org

Explainer


https://github.com/fivedots/nativeio-explainer

Specification

None

API spec

Yes

Summary

Storage Foundation API is a storage API that resembles a very basic filesystem, with direct access to stored data through buffers and offsets. Our goal is to give developers flexibility by providing generic, simple, and performant primitives upon which they can build higher-level components. It's particularly well suited for Wasm-based libraries and applications that want to use custom storage algorithms to fine-tune execution speed and memory usage.



Blink component

Blink>Storage

Search tags

storagenativeioperformancelow-levelgenericfoundation

TAG review

https://github.com/w3ctag/design-reviews/issues/566

TAG review status

Issues open

Risks



Interoperability and Compatibility

This new feature has some potential interoperability risks due to its nature as a novel and low-level API. Currently, there are no web features that expose such a generic interface and that focus on WebAssembly ports as one of it's main consumers.



Gecko: No signal (https://github.com/mozilla/standards-positions/issues/481)

WebKit: No signal (https://lists.webkit.org/pipermail/webkit-dev/2021-February/031687.html)

Emanuel Krivoy

unread,
Feb 10, 2021, 5:10:03 AM2/10/21
to Masataka Yakura, blink-dev, rs...@chromium.org
I'm sorry, I had updated Chrome Status before sending the email, but did not update the email draft. Here is what the risk section should have said:

Risks



Interoperability and Compatibility

This new feature has some potential interoperability risks due to its nature as a novel and low-level API. Currently, there are no web features that expose such a generic interface and that focus on WebAssembly ports as one of it's main consumers.



Gecko: Negative (https://github.com/mozilla/standards-positions/issues/481) Supportive of a low-level storage API, opposed to minting a new API instead of taking a holistic approach to file access

WebKit: Negative (https://lists.webkit.org/pipermail/webkit-dev/2021-February/031687.html) No opposition to offering efficient access to files, strongly opposed to minting a new API instead of augmenting an existing one.

Web developers: No signals

Yoav Weiss

unread,
Feb 10, 2021, 9:35:44 AM2/10/21
to Emanuel Krivoy, Masataka Yakura, blink-dev, rs...@chromium.org
On Wed, Feb 10, 2021 at 11:12 AM Emanuel Krivoy <five...@chromium.org> wrote:
I'm sorry, I had updated Chrome Status before sending the email, but did not update the email draft. Here is what the risk section should have said:

Risks



Interoperability and Compatibility

This new feature has some potential interoperability risks due to its nature as a novel and low-level API.


https://github.com/fivedots/storage-foundation-api-explainer/issues/4 suggests that the interop risk stems from the fact that this doesn't necessarily interact well with other file access API and File System Access API in particular.
In https://github.com/fivedots/storage-foundation-api-explainer/issues/8 you said you'd talk to the team behind that feature to discuss tighter integration. What were the results of those discussions?

--
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/CAHExSGLF%2BfC73GMtEiGL%3Donc0D968EhO%2B4Nn5crCi%3DakqG0MMQ%40mail.gmail.com.

Emanuel Krivoy

unread,
Feb 11, 2021, 7:31:06 AM2/11/21
to Yoav Weiss, Masataka Yakura, blink-dev, rs...@chromium.org
Hey Yoav,

I agree, the question of our relationship with other storage APIs is at the top of our list. We are still in active conversation with the storage team, although we’ve fallen a bit behind on this topic because of shifting deadlines. Before these shifts, we were discussing the ways that we could cover the use cases of the Origin Private Filesystem and Storage Foundation API under one surface, and what the costs in performance and simplicity would be.

This origin trial will help us in that discussion, since getting a broader understanding of how developers/partners use our API will inform the solutions we explore. 

Yoav Weiss

unread,
Feb 11, 2021, 3:58:56 PM2/11/21
to Emanuel Krivoy, Masataka Yakura, blink-dev, rs...@chromium.org
It sounds reasonable to estimate the potential benefits via an OT, while striving to unify this API with the other storage APIs.

One missing detail though - what's the planned experiment duration?

Emanuel Krivoy

unread,
Feb 16, 2021, 5:26:55 AM2/16/21
to Yoav Weiss, Masataka Yakura, blink-dev, rs...@chromium.org
We plan to run the Origin Trial for three releases, from M90 to M92.

Yoav Weiss

unread,
Feb 16, 2021, 7:53:13 AM2/16/21
to Emanuel Krivoy, Masataka Yakura, blink-dev, rs...@chromium.org
LGTM to experiment M90-M92
Reply all
Reply to author
Forward
0 new messages