... and switch to open protocols in the process.
Twitter, GitHub: @skddc
Separating user data from apps
An open protocol for per-user storage
A JS library for integrating remoteStorage in apps
The open Web is a unique ecosystem because no one controls or owns it.
Andreas Gal (CTO, Mozilla)
Because the Web Platform has become pretty awesome
Unhosted project is started by Michiel de Jong with the aim to develop a protocol and reference implementation for this.
Initial sponsoring by NLnet Foundation
Skipping more history...
Fargo.io is an outliner app that stores OPML files in your Dropbox
Laverna is a note taking application that supports both Dropbox and remoteStorage
Instead of re-inventing the wheel, it creatively combines existing protocols/standards.
How to tell an app where my storage is?
e.g. basti@5apps.com
GET https://5apps.com/.well-known/webfinger?resource=acct:basti@5apps.com
How to allow an app to access my data?
GET https://5apps.com/rs/oauth/basti?redirect_uri=https://webmarks.5apps.com&scope=bookmarks:rw&client_id=https://webmarks.5apps.com&response_type=token
How can an app read, write and delete data?
HTTP verbs: GET, PUT, DELETE
A few rules and required formatting for e.g. directory listings
PUT /basti/testing/testfile.txt HTTP/1.1 Authorization: Bearer 1a2b3c4d5e Content-Type: text/plain Ohai, Hamburg!
HTTP/1.1 200 OK Status: 200 OK Content-Length: 0 Date: Fri, 25 Apr 2014 14:27:23 GMT ...
GET /basti/testing/testfile.txt HTTP/1.1
Authorization: Bearer 1a2b3c4d5e
HTTP/1.1 200 OK Content-Length: 14 Content-Type: text/plain Etag: "1C6NMyI94YVNaYqXlOJCfW" ... Ohai, Hamburg!
GET /basti/testing/ HTTP/1.1
Authorization: Bearer 1a2b3c4d5e
DELETE /basti/testing/testfile.txt HTTP/1.1
Authorization: Bearer 1a2b3c4d5e
HTTP/1.1 204 No Content Access-Control-Allow-Origin: * Access-Control-Allow-Methods: GET, PUT, DELETE Date: Fri, 25 Apr 2014 15:03:00 GMT ...
Use apps offline, sync when back online. Store data before connecting storage.
Works in all modern browsers, and private browsing mode (and node.js)
Let's hope they get fulfilled.
Plz halp!
This better be working, or I look like an idiot.
When in doubt, consult API docs and/or ask on IRC (#remotestorage on Freenode)!
... and if it makes sense, share it!
Gives us:
Use JSON Schema to define object types (plus validations for free)
Use the defined data type to store objects
remoteStorage.js automatically adds a JSON-LD context:
Unfortunately links not pointing to spec/schema yet. (Wanna help?)
Common data modules are the least developed part of the project. Could use your help!
Not mandatory, but super useful.
It's on top of the list
Optionally encrypt contents of a module/basedir
Use remoteStorage.js to connect to all of Dropbox, GDrive and remoteStorage!
GitHub: http://github.com/remotestorage
Twitter: @remotestorage_
IRC: #remotestorage, #unhosted on Freenode
Spec: http://tools.ietf.org/html/draft-dejong-remotestorage-02
Sebastian Kippe – @skddc
/