essay, Uncategorized

Unhosted: decoupling web apps from storage providers

Unhosted aims to decouple webapps from their backend storage on a per user level. The status quo is that each webapp stores and manages all of its users’ data. Unhosted wants to turn that on its head and let each user store their own data, across all of their webapps, in a single provider and account of their choosing.

The key piece of the puzzle is remoteStorage, a new Javascript library that mirrors HTML5’s localStorage API and uses cloud providers like S3, Google Docs, and Dropbox. When a user starts using an unhosted app, it determines where to store their data (ideally behind the scenes via WebFinger), gets permission via OAuth, and then uses remoteStorage to perform standard CRUD operations.

Not surprisingly, the people behind Unhosted are hardcore free software advocates, so the project comes with a healthy dose of anti-corporate advocacy and preaching. However, it also comes with a convincing technical foundation and working code. In particular, reusing localStorage seems like a stroke of genius, especially since many developers now use it exclusively when starting a new app, adding server side sync only after they’ve finished their MVP.

Naturally, there are problems. Want querying or aggregate operations? You’re encouraged to build your own, which is a tough sell for even simple queries, much less large scale data processing. Also, there’s no story for onboarding new users. They could punt and start by letting apps store their data for them, but that raises an awkward migration question.

Most of all, though, I think they’re missing a sales pitch. End user data portability may have gained some mainstream mindshare, but it’ll probably never reach a tipping point, and free software idealism will always be niche. More to the point, until users want it, I don’t see a motivation for app developers.

Even so, I’m intrigued. We originally considered structuring App Engine‘s datastore the same way, clustered by user instead of by app. Integrating Unhosted with App Engine would be fun, but the app side is Javascript on the client, and the storage side already supports Google Docs, so I’m not sure it would add any value. Anyone out there currently working with remoteStorage? Thoughts?

Oh, and happy New Year!


9 thoughts on “Unhosted: decoupling web apps from storage providers

  1. My thoughts are that I love it. This makes it seem kinda free to make small/medium webapps and toys. Sourcing the storage costs to the user and the processing to the browser. Double clever!

  2. Hi Ryan. I'd like apps to store data in my account under my quota that way I could always own my data. It would also be an interesting billing option as an app wouldn't run out of quotas but rather a user. via Google+

  3. Pingback: Ryan Barrett

  4. Pingback: Ryan Barrett

Leave a Reply

Your email address will not be published. Required fields are marked *