This week I had the privilege to attend Michiel de Jong‘s presentation on Unhosted held at Crisp‘s office. This was not the first time I heard Michiel talk about Unhosted, but since he shared his vision at Dyncon 2011 Unhosted has gone from concept to proof of concept.
The first version (0.1) of the Unhosted protocol is out the door and while it’s not something to bet your business on, it shows promise – if nothing else than for the simple fact that the basic idea of Unhosted makes sense. Why should user have to agree to more or less draconian EULA:s to be able to use a web service such a social media site or an online photo gallery? More interestingly for purveyors of such web services, if the service could be separated from the actual contents there’s less need for putting said draconian EULA:s in place simply to safeguard against being sued by a third party based on a perceived responsibility for the content. But I digress. This post was meant as my take on the technology Unhosted leverages today, yet it is intrinsically linked to a philosophy about empowering the individual, and thus the many.
Michiel started of the presentation with a brief of history of computers and Internet. Starting at the pointing time when life on Earth just had come into existence he created a convincing argument that the very latest trend of moving data into the cloud, and especially into the hands of Google, Facebook et al actually limits the end user. If and when you seamlessly can move your data from one vendors cloud to another without having to perform massive export-convert-import operations, then the vendor lock-in issue might have been overcome, but we’re nowhere near that.
Cue Unhosted.
In its most basic form, the Unhosted concept decouples the data storage from the application server by having the application connect to a storage node that the user is in control of. This way, a user can access his or her data from different applications. Don’t fancy the online photo library you’re using? Just go the brand new shiny one and connect to your storage node. Or maybe thou do like your photo library application, but would like to edit a couple of the images which the current application does not support. As the data is stored on a separate storage node you can do so without having to export the photos you want to edit, import them into the image editor application, edit them, export them and lastly import them into the photo library again.
Michiel let us experience this firsthand by having us devise into groups and setup the My Favourite Sandwich application on Unhosted development server (for good measure I setup a copy of the app on Itstil’s development server as well). A couple of squashed bugs, deployed fresh code and some confusion followed by the grasping of the concept later, a group member could register an account on the group’s server, enter some data and then access the same data from a different deployment of the application (yes, it works nicely between servers as well).
Now, first of all we need to keep a few things in mind. Unhosted current take on solving the above issue, while at the same time putting the enduser in control of his or her data is to have us all code JavaScript applications. Well, that might not be completely accurate, but for now it’s the result of having the client run the actual application. I’ve seen an experimental Java implementation of the Unhosted protocol for Android, but for the time being we can assume that Unhosted equates JavaScript hacking.
Another consequence of keeping the data separate from the applications is that the connection speed and quality is paramount once you move beyond simple proofs of concept. On the other hand, since the application server merely delivers a chunk of JavaScript to your browser which in turn connects to the storage node it becomes cheaper to provide web services.
Thirdly, most of the software Unhosted depends on was not of production quality even a year ago. WebDAV is certainly tried and tested and OAuth is getting there, but the same can not be said for JavaScript encryption libraries or WebFinger.
That said, it’s going to be very interesting to see Unhosted evolve and mature as I consider the basic idea to be sound.
By lunch the presentation and hacking session concluded. Many thanks to Mats Henricson and Crisp for organizing and hosting the event (not to mention inviting me!), and a big round of applauds for Michiel and the Unhosted team for the vision and the hard work!