Due to a particular idea of mine I found myself in need of something I don’t believe possible today – to easily share data between desktop and web applications using the browser alone. This raised several technical, privacy and culture questions on my mind, as well as a couple suggestions of course.
Many are already familiar with the new Web Storage standard (formally part of the HTML 5 standard) that’s implemented in every recent browser (yes, that includes IE8). It allows for many new and interesting features, specially the possibility of running web applications offline. It’s penetrating so well in the browsers market that Google is even moving away from their own Gears solution (although the reports of Gears being discontinued are greatly exaggerated).
In my opinion there is still one feature missing however. The data belongs to the browser and the web services, and this isn’t always the best use case. Take for instance the many privacy issues raised every time you use your web mail or you upload a new photo to a web service. Gmail will retain those messages and their user agreement goes as far as letting you know they will use the messages in court if you’re ever on the other side of legal dispute with them. Facebook goes as far as retaining full copyrights over any uploaded photos (that’s right, according to Facebook on the Social Suicide Machine case, the later couldn’t post user photos because they were Facebook’s property).
I foresee a use for web applications using the software as a service model without crossing the privacy boundaries raised by current hosted solutions. An online photo editor that doesn’t force you to upload all the pictures you want to edit is just one example of the possible uses. Of course this is no silver bullet, people will still want to share their photos with friends and publish them for the whole world to see.
I believe this feature, or lack of it, is the reason neither Microsoft or Adobe are worried about HTML 5 competing with their respective Silverlight and AIR products. HTML 5 maybe bringing a better user experience but it’s definitively not bringing the desktop and web applications any closer when it comes to sharing data.
On a more technical side of the question, how hard would it be to make this possible? Well, currently you’ve limited options to read files from the user’s desktop without uploading them: Silverlight, Flash and Java. I’m not even going to discuss Java here, but the other solutions require the user to select a file, every single time, using the file dialog provided by those frameworks. That’s due to security concerns, after all we don’t want any web page with a Flash movie to be able to read any file on our desktops.
The existing solutions work well on almost every aspect (usability, security, etc..) but they don’t solve every of the problems I’m discussing here. To being with, they aren’t standards and require plugins for the browsers to support them, they can’t access a folder in “bulk” and their adoption often requires a change in the web application’s user interface. In the end there is also no centralized system to categorize the data you wish to expose (e.g. open a random web mail application and the desktop would simply let the web application know where to find your mail files without user interaction besides the “allow access” security check).
I’ve tried to come up with some possible solutions and I believe the 2 most promising solutions would be either a plugin or a desktop library/application. While a plugin would need to be coded for every OS-browser combination out there, it would probably be able to provide a much richer programming interface, with far more options and flexibility. On the other hand a small, maybe open source, library that allowed desktop applications to interface with the browsers’ Web Storage database would be easier code while still limited to the domain constraints and overly simple feature set. On final side note, I believe the security issues would be easy to fix by requiring the web applications to run in offline mode, this way they wouldn’t be able to simply upload data of the desktop.
Perhaps this is a “niche” requirement/feature, but I strongly believe there could be many uses for it and that we would all be better served if it was implemented through a standard (perhaps extending the Web Storage standard itself).