- From: Charles Pritchard <chuck@jumis.com>
- Date: Sun, 20 Nov 2011 20:33:58 -0800
- To: Mike Taylor <miket@opera.com>
- CC: Adam Barth <w3c@adambarth.com>, Mark Nottingham <mnot@mnot.net>, Noah Mendelsohn <nrm@arcanedomain.com>, public-webapps@w3.org, "www-tag@w3.org" <www-tag@w3.org>
On 11/20/11 7:27 PM, Mike Taylor wrote: > On Sun, 20 Nov 2011 18:30:15 -0500, Mark Nottingham <mnot@mnot.net> > wrote: > >> Yes, if you configure your browser to do so, you'll be assaulted with >> requests for a "test db" from many Web sites that use common frameworks. >> >> I don't think that this should count as "use." >> >> I do think now is precisely the time to be asking this kind of >> question; these features are NOT yet used at *Web* scale -- they're >> used by people willing to live on the bleeding edge, and therefore >> willing to accept risk of change. > > A quick search of Google code [1], Github [2][3], and Bitbucket [4][5] > would indicate otherwise, IMO. For example, the TinyMCE WYSIWYG editor > that is included in every Wordpress installation (currently estimated > at 65,787,814 sites [6]) uses localStorage for auto-saving blog posts > (not exactly bleeding-edge stuff). TinyMCE also boasts some of the > most successful and popular sites on the web as users [7]. And that's > just one single project from the many thousands of open source > projects hosted by Google Code, Bitbucket or Github. > I'm a full-stack polyfill over here. From the bare bones of the server-side to the legacy hacks of the client. As I voiced earlier in this thread: I'd rather extend than rewrite. localStorage could use a Blob storage mechanism. I could really use that. The FileSystem API is completely inappropriate for most blob storage needs and other APIs fail support Blob's in an efficient manner. Is there some reason why I can't have a blob extension to local storage: localStorage.setBlob('key', BlobData); As for existing code bases: localStorage throws errors. Few people are going around with try { localStorage['key'] = 'value'; } catch(e) {} statements. Though people are certainly testing for the presence of localStorage, it's rather assumed that if it is present, it can be written to, with at least a few hundred kilobytes of textual data. That assumption will break if the API is dropped or significantly altered. In subsequent APIs, like IndexedDB, spec editors took care to avoid that error throwing situation. ... Web Storage is very different from typical storage. It's not an expectation for a web app that it'll actually have space to store data. There's no guarantee the data will persist. We do not yet have mount points, to stash data on the user's file system in a manner that the user and the OS understand. Storage is as transient as client-side cookies. With a few clicks, I can accidentally clear out saved files when I'm just trying to reset my cache. My databases may become corrupt when the browser crashes on a complex page I'm testing. I have no "easy" way to back up my data as I do with most files on my computer. I can't just copy and paste files into a new directory. Web storage is fault-oriented. It's supposed to fail. It's designed for failure. It's up to application authors and UA vendors to decide what kind of value-added services they want to give to their users, to help back up data. It's up to users to take opportunities to copy data out themselves and archive it in their own manner. This is stressful to me, as a developer, because Apple, Google can wipe out a business model in any given browser release, but that's the business we're in. I am bringing this up to point out that, although web storage is out there, in production, there's room to destroy data. It's not a happy situation, and it's one that many developers will learn the hard way (as I did). But once it's accepted, it's easier to understand how to use web storage in a safe manner. -Charles
Received on Monday, 21 November 2011 04:34:17 UTC