W3C home > Mailing lists > Public > public-script-coord@w3.org > July to September 2013

RE: Request for feedback: Filesystem API

From: Jonas Sicking <jonas@sicking.cc>
Date: Tue, 13 Aug 2013 23:53:24 -0700
Message-ID: <CA+c2ei-kSmZpFdq0c4BY-hczS2v1MQ7P83vRjjveEunupFieSg@mail.gmail.com>
To: Domenic Denicola <domenic@domenicdenicola.com>
Cc: public-script-coord@w3.org
On Aug 13, 2013 6:57 PM, "Domenic Denicola" <domenic@domenicdenicola.com>
wrote:
> From: Jonas Sicking [mailto:jonas@sicking.cc]
> > So it sounds like we are in agreement that the lowest-level primitive
isn't always the right one to expose. The question is how low to go and
generally that is a judgement call.
>
> I don't think this is giving enough credit to the extensible web point of
view. The issue isn't "always expose the lowest level primitive possible,"
because then we'd just be exposing asm.js with some C bindings and be done
with it. The issue is to give developers new capabilities they've never had
before---like file system access

The sandboxed filesystem API doesn't provide access to the filesystem at
all. Implementations are essentially forced to implement it on top of a
database, possibly with the actual file data stored as separate files
(something that Gecko does for IndexedDB already). There are two main
reasons for this.

First off the differences between different platforms when it comes to
handling of "exotic" characters is complex enough that the sanest option is
to just permit a very limited set or characters. Likely this wouldn't be
popular in non-english speaking countries.

Then there is the difference in case sensitivity, which means that limiting
to lower case is the sanest way to get compatibility.

Then there is the problem with path name lengths. Especially when
considering that browsers store their data in the user profile which
already can steal quite a few characters of path length. Google
investigated this and came to the conclusion that in windows the only
length they could guarantee would work is uselessly short.

The second issue is that browsers are nervous about letting random websites
store files named screensaver.exe on the users hard drive. Even if it is
inside the browser profile folder.

So chrome already use a database back end in their API. We are planning on
doing the same.

So the whole sandboxed filesystem API is a high level API. It is being
developed at request of authors. See

https://hacks.mozilla.org/2012/07/why-no-filesystem-api-in-firefox/

Eventually we are hoping to reuse the same API once we expose real
filesystem's. But we are not there yet.

> On the other hand, when I actually showed this to developers, the
reaction was uniformly "why can't we just build this on top of IndexedDB"
:(.

See the link above as well as my answer to David Bruant. This feedback
doesn't match the feedback that I have gotten from developers.

Given that the two are directly opposite, I don't know how to resolve both.

One way to resolve it is to lean on the fact that Google has said that they
aren't willing to add the needed primitive to IndexedDB. That makes that
solution less attractive unless you or someone else can convince them of
otherwise.

/ Jonas
Received on Wednesday, 14 August 2013 06:53:52 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 6 January 2015 21:37:50 UTC