7.10: news.cyb/net.unhosted.org:
Tell us what it would take for you to
use "nothing but the web"
- google apps developer../2011/09/
. one reply was:
Unhosted.org-- to separate web apps from user data,
I must be in control of my data.
Once I put my data in the hands of a
third party web service or application,
I am no longer in control.
Unhosted.org ?
Unhosted.org is developing technology that will
put control of user data
back where it belongs: With the user.
Freedom from the web's monopolies
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.
If you speak French, there is also some info on Framablog en Fran├žais.
Unhosted is a movement by the people, for the people.
Everyone can participate, including you!
Libre Docs – liberate your ideas
Remotestorage providers
freemium providers:
    OwnCube recommended for end users!
    5apps recommended for javascript developers
domains that provide remoteStorage to their users:
    all Dutch universities
ways to run your own remoteStorage server:
    install pagekite on your computer
    install ownCloud on a server
    coming soon: how to use your CouchDB instance as remoteStorage
. Unhosted.py is an HTTP server
implementing the bare minimum required for
the simple remoteStorage API from unhosted.org.
Hopefully this program will be useful for folks who want to
study how the remoteStorage protocol works
or as a development tool for people working on Unhosted apps.
As Unhosted matures,
Unhosted.py will hopefully also mature into a usable personal data-store
for people who want to store their Unhosted data on their own devices.
Getting started
    Install pagekite.py
    In another console:
pagekite.py 6789 rs-YOURNAME.pagekite.me
You should now be able to use
as a remoteStorage account.
If you prefer, you can also
use Unhosted.py without PageKite,
but you will need an SSL enabled
reverse HTTP proxy (such as Pound)
in order to comply with the protocol.
As far as I can tell,
hosting on http://localhost/ won't work.
5apps.com have written a nice Unhosted tutorial and test app
which works just fine with Unhosted.py.
The file Unhosted.combined.py is combination of Unhosted.py
and the HttpdLite.py module it depends on.
For hacking, you'll want to check both out from github:
The combined "binary" is generated using Breeder.
Where is my data?
Unhosted.py stores data in ~/.Unhosted.py/,
in a relatively intuitive directory structure:
Each data folder will contain some regular files,
as well as a file named _RS_METADATA.js.
This meta-data file stores "real" names
for all keys, mime-types
and may store other meta-data in the future.
The meta-data file may also store key values as well,
if they are small and do not really "look like a file".
This is an optimization to reduce clutter and disk seeks
when working with small keys:
if the data is large or looks like an independent file,
it will be written as such to the filesystem,
although the name will probably be sanitized somewhat.
Note that changes to individual files of name:
may be overwritten by Unhosted.py if it is running,
as it caches their contents in RAM.
    Directory listings do not work yet.
    User names and passwords are ephemeral.
    _RS_METADATA.js could be overwritten by evil apps.
    Saving metadata fails sometimes due to a race condition.