The web is not as open as it used to be: monopoly platforms formed new proprietary layers on top of it. But we create a better architecture for the web. We break the package deal »you get our app, we get your data« with remoteStorage, a cross-origin storage protocol separating application servers from people's documents.
This enables everyone to use various web services but keep their data in one place they choose and trust – their remote storage, their »home folder« for the web. The applications will not run on servers you can't control, but be pure Javascript which runs client-side, in your browser. And app developers don't need to bother about providing storage or managing user accounts.
Technically speaking, we define a protocol stack called remoteStorage. A combination of WebFinger for discovery, OAuth for authorization, CORS (Cross-Origin Resource Sharing) for cross-domain AJAX calls and GET, PUT, DELETE for synchronization. We also work on its adoption through developing apps like Libre Docs and Opentabs as well as making existing apps and storage providers compatible.
Unhosted is a movement by the people, for the people. Everyone can participate, including you!
Unhosted: freedom from the web's monopolies
Unhosted is a movement for strengthening free software against hosted software. With our protocol, a website is only source code. Dynamic data is decentralised to per-user storage nodes and once user data is unhosted, it can be encrypted to prevent Spying-for-free. This lowers hosting costs, and benefits scalability, robustness, and online privacy.
Freedom on the web
Free/libre and Open Source Software (FLOSS) frees us from having to install proprietary software on our terminals. But installable software is losing ground to hosted software (websites). The server software is often open source (e.g. LAMP), but the website itself as a software product is almost always proprietary. There is an obvious reason for this: Even if an Affero license allows us to download the website's source code, only a commercial company can finance the thousands of servers needed to host a successful website. To make things worse, hosted software has more power over its users than installable software, because it forces you to put your user data on servers owned by the same company that publishes the software. If you want to use Google Docs, you have to reveal your work to a Google-owned server (what Richard Stallman calls »careless computing«).
FLOSS-as-a-Service on top of a commodity infrastructure
A hosted website provides two things: processing and storage. An unhosted website only hosts its source code (or even just a bootloader for it). Processing is done in the browser, with ajax against cross-origin cloud storage. These unhosted storage nodes can be provided by whoever provides your email hosting: your employer, ISP, university, mobile operator, public library, a hobbyist friend who runs a server at home, a hosting company, etc. They become just like mailservers, BGP switches, fibre links and other commodity infrastructure: independent of which application you run on top of them. To maximize the control of the user over their data, migration from one storage node to another is an integral part of the protocol stack design. Our remoteStorage protocol can be seen as a cross-platform cloud-sync solution; comparable to iCloud on Apple's platform, but for the web.
Apps & data shouldn't be a package deal
Most web applications today require users to sign up for an account which also stores their files. Data is held hostage on the application servers and can not be used by other similar applications which might offer other features. Even independent app developers often reluctantly build apps that host user data inside the application. Users might be able to sign in with their Twitter or Facebook account but the data will still be stored on the application server. But applications become more and more client-side through using mostly Javascript, HTML and CSS. To make an app more scalable and able to handle more users, using the power of every browser that connects to it rather than central servers is more scalable. Data storage should then be independent from application development.
How it works
We have been working on this for about a year now, and have defined the remoteStorage protocol stack as our central value proposition. It works quite simply by combining HTTP, CORS, OAuth2 and Webfinger. On top of this, we have started building Libre Docs (an office suite) and Opentabs.net (an online anti-banking tool). The Netherlands are the first country to provide remoteStorage accounts to all their students and academic staff. You can also sign up for a free remoteStorage account at 5apps (aimed at developers) or OwnCube (aimed at end-users). We need more developers to start accepting remoteStorage account on their websites. That way, users will be able to use these websites for their software needs, yet still own their own data just like they do with desktop software: the best of both worlds.
Get your own remoteStorage
Choose one of the existing remoteStorage providers:
Pagekite offer a fast, reliable way to make localhost part of the Web. They offer a remoteStorage server that you can run on your own computer. This solution is not hard to use, and provides by far the easiest way to 'own' your data, and see what is happening to it, but it does require use of the command line (terminal).
OwnCube are a startup who offer ownCloud hosting. In their ownCloud install they have activated the remoteStorage app, so if you get an account with them (their smallest plan is free), you will also be able to use it as remoteStorage. At the same time, you'll get all the other functionality that is baked into ownCloud.
5apps are a startup who are developing an easy way to deploy HTML5 web apps. They are buddies of ours from the Berlin Javascript scene. If you get an account with them, they also offer some remoteStorage, so you can test your own apps with your own account.
If you need help, come to our chat room and let us know. Once you have your remoteStorage account, you can try Libre Docs, the world’s first application to accept remoteStorage accounts. It's just like a normal web application, but does not host your data – Your documents are stored on your remoteStorage account, under your control.
Accept remoteStorage accounts in your web app
We provide a Javascript library for this, called remoteStorage.js. See how to use it with the tutorial that 5apps made for it.
Run your own remoteStorage
Of course, if you have your server or VPS, then you may also want to run your own remoteStorage instance on there. The easiest way to do this is running ownCloud. For that, you need just Apache installed with PHP5, and then follow the ownCloud installation instructions.
Unless you're deploying the latest master, you will need to overwrite apps/user_webfinger and apps/remotestorage subdirectories of your ownCloud install with these latest versions.
Note that you'll need to run your ownCloud installation in the root of your domain (not a subdirectory), the www-data user should have write access on /var/www when you activate both the Webfinger and the remoteStorage apps, you need to enable mod_rewrite in Apache, and you need to set AllowOverride All for /var/www in the Apache config.
Another option is to run express-storage, a remoteStorage server based on nodejs and redis. It's still under development, and mainly meant for testing purposes.
If you have a Ruby-on-Rails site, you should consider integrating liquor-cabinet. It's based on Ruby and Riak, and it's what 5apps use themselves to implement remoteStorage for their users.
You make Unhosted!
We are a non-profit movement from and for the community. Everybody, including you, is considered an equal member based on merit and contribution. Our current full-time volunteers are: Michiel de Jong (Code Communist), Jan-Christoph Borchardt (Design Dictator), Melvin Carvalho (Transaction Technocrat) and Azul (Real-time Revolutionary). Unhosted e. V. is a registered association in Germany (Amtsgericht Charlottenburg, VR 30665 B).