W3C home > Mailing lists > Public > public-webapps@w3.org > October to December 2010

Re: FileAPI use case: making an image downloading app

From: Charles Pritchard <chuck@jumis.com>
Date: Sat, 18 Dec 2010 09:38:06 -0800
Message-ID: <4D0CF17E.30205@jumis.com>
To: "Gregg Tavares (wrk)" <gman@google.com>
CC: Web Applications Working Group WG <public-webapps@w3.org>
On 12/17/2010 5:03 PM, Gregg Tavares (wrk) wrote:
>
>
> On Fri, Dec 17, 2010 at 4:16 PM, Charles Pritchard <chuck@jumis.com 
> <mailto:chuck@jumis.com>> wrote:
>
>     We're actively developing such functionality.
>
>     The limit per directory is for the sake of the os file system. If
>     you want to create a data store, use indexedDB or use standard
>     file system practices (create a subdirectory tree).
>
>
> I think you're missing the point. If I have a folder with 6000 files 
> on some server and I want to mirror that through the FileAPI to the 
> user's local machine I'm screwed. I can't **mirror** it if it's not a 
> mirror.
I'm not missing the point. I'm actively developing an app that downloads 
images from photo sites.

A strict Mirror (lets use a capital M) is something you're not going to 
pull off with the File System API at this time.
You can't set meta data, like permissions/flags and 
modification/creation dates. Developing a Mirror is not feasible with 
the current API.
You can't create a direct Mirror, one which would work seamlessly with 
"rsync".

You can "mirror", the data on a remote server, and check that the data 
already exists on your file system,
by using a subdirectory system, much like the two level directory 
structure that many cache apps use (like Squid).

>     Disk space availability (quota) is an issue no matter what
>     happens. When downloading 1000 images, you'll still only be doing
>     so x at a time.
>
>
> I don't see the point you're trying to make here. I don't know the 
> size of the images before hand. Many internet APIs make getting the 
> sizes prohibitively expensive. One REST call per file. So before I can 
> download a single file I'd have to issue 1000 REST XHRs to find the 
> sizes of the files (waiting the several minutes for that to complete) 
> before I can ask the user for the space needed.  That's not a good 
> user experience. If on the other hand the user can give me permission 
> for unlimited space then I can just start downloading the files 
> without having to find out their ultimate size.
>
> I suppose I can just request 1 terabyte up front. Or query how much 
> space is free and ask for all of it.
Yes, that's correct, you'd hope the space is available.
When you run out of space, you can use a limited amount of RAM while 
waiting.

There are few resource management APIs available for memory/bandwidth 
hungry applications.

My point was that these questions you're bringing up are common to all 
cross-platform applications.

Regarding your issue of "a ray tracing program" : You'd also want to 
either: create sub directories,
or simply create a large file with its own methods.

>
>     This issues are inherent in the design of any application of
>     scale. At this point, the file system API does work for the use
>     case you're describing.
>
>     It'd be nice to see Blob storage better integrated with Web
>     Storage Apis. Ian has already spoken to this, but no followers yet
>     (afaik).
>
>     -Charles
>
>
>
>     On Dec 17, 2010, at 3:34 PM, "Gregg Tavares (wrk)"
>     <gman@google.com <mailto:gman@google.com>> wrote:
>
>     > Sorry if this has been covered before.
>     >
>     > I've been wanting to write an app to download images from photo
>     sites and I'm wondering if this use case has been considered for
>     the FileAPI wrt Directories and System.
>     >
>     > If I understand the current spec it seems like their are some
>     possible issues.
>     >
>     > #1) The spec says there is a 5000 file limit or directory.
>     >
>     > #2) The spec requires an app to specify how much storage it needs
>     >
>     > I understand the desire for the limits.  What about an app being
>     able to request unlimited storage and unlimited files? The UA can
>     decide how to present something to the user to grant permission if
>     they want.
>     >
>     > Arguments against leaving it as is:
>     >
>     > The 5000 file limit seems arbitrary. Any app that hits that
>     limit will probably require serious re-engineering to work around
>     it. It will not only have to some how describe a mapping between
>     files on a server that may not have that limit, it also has the
>     issue the user might have something organized that way and will
>     require the user to re-organize. I realize that 5000 is a large
>     number. I'm sure the author of csh though 1700 entires in a glob
>     was a reasonable limit as well. We all know how well that turned
>     out :-(   It's easy to imagine a video editing app that edits and
>     composites still images. If there are a few layers and 1 image per
>     layer it could easily add up to more than 5000 files in a single
>     folder.
>     >
>     > The size limit also has issues. For many apps the size limit
>     will be no problem but for others....  Example: You make ray
>     tracing program, it traces each frame and saves the files to disc.
>     When it runs out of room, what is its options? (1) fail. (2)
>     request a file system of a larger size. The problem is (2) will
>     require user input. Imagine you start your render before you leave
>     work expecting it to finish by the time you get in only to find
>     that 2 hours after you left the UA popped up a confirmation "this
>     app requests more space"
>     >
>     > The same would be true for an image downloading app. You start
>     the app to download a 1000 images, not knowing their sizes before
>     hand. You start it and leave. Half way through the UA puts up a
>     conformation asking for more space.
>     >
>     > Have these use cases already come up and been rejected?
>     >
>     >
>     >
>
>
Received on Saturday, 18 December 2010 17:38:31 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:42 GMT