Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador...
Transcript of Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador...
![Page 1: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/1.jpg)
DecentralizedDocument Delivery
![Page 2: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/2.jpg)
Who am I?
We’re hiring!!
![Page 3: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/3.jpg)
What I do @ hypothes.is
“an integration liaison and ambassadorfor the people of the Open Web at Hypothes.is; a platform ombudspersonto hold us accountable to our vision of a freely annotated Web.”
![Page 4: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/4.jpg)
Why Decentralized
![Page 5: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/5.jpg)
There is no center.
• Data “in the cloud”
– only as good as my access to it.
• Small Data is usually enough for me.
• Cloud Powers (optional)
• Crowd Powers (optional)
• Core Powers (mine!)
![Page 6: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/6.jpg)
EGOCENTRIC ARCHITECTUREMe in the middle.
![Page 7: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/7.jpg)
The Cloud is a Lie! The Cloud is a…
![Page 8: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/8.jpg)
MOAR CLOUD!We just need
![Page 9: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/9.jpg)
Beyond the Silver Lining
• Cloud in your pocket?
• Cloud without connection?!
• Cloud in space?!!1!
There is no center.
Except your own.
![Page 10: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/10.jpg)
Practical Deployments
• Dimagi CommCareHQ
– Uses Apache CouchDB
• MedicMobile.org
– Uses Apache CouchDB
• eHealthAfrica
– Uses Apache CouchDB, Apache Cordova, & PouchDB
![Page 11: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/11.jpg)
Why Documents
![Page 12: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/12.jpg)
I :heart: Documents
• It’s how we think
• Data alone can be a bit too small
• Documents provide data + context
– Identification
– Provenance
– Ownership
– Licensing
– Routing (yeah email!)
![Page 13: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/13.jpg)
Why Delivery
![Page 14: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/14.jpg)
Why Delivery
• Copies of copies of copies
• Single Source of Truth is…
– Inefficient
– Impossible
– Not fault tolerant
– A myth
• Eventually Consistent is…
– Not a myth ;)
![Page 15: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/15.jpg)
APACHE COUCHDB DELIVERS!
![Page 16: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/16.jpg)
Why Apache CouchDB
• Because Replication
• Stateless HTTP API
• JSON documents
• + binary attachments
• Map/Reduce-based index building
• …without replication it’s just more NoSQL
![Page 17: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/17.jpg)
Replication
• Multi-Version Concurrency Control
A @ 3
B
A @ 1
BB @ 2
A @ 3
B @ 2
result after bi-directional replicationsrsly
A @ 3
B @ 2
![Page 18: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/18.jpg)
A @ 4 A @ 4
Replication
• Forgiving Conflict Model
A @ 4
B @ 2
A @ 1
B @ 2
A @ 5
B @ 2
CouchDB arbitrarily, but consistently picks a winnerand keeps conflicts around…just in case.
A @ 5
B @ 2
A @ 4
![Page 19: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/19.jpg)
• Ask for the conflicts
• GET the “losing” document @ 4b
• PUT it as a new revision
A @ 4a A @ 4b
Picking a different “winner”
A @ 5 A @ 6
![Page 20: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/20.jpg)
Eventually Things Match
![Page 21: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/21.jpg)
Master-Master Replication
Cloud? Laptop?
Desktop?
![Page 22: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/22.jpg)
BEYOND THE COUCHDelivering Documents…
![Page 23: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/23.jpg)
CouchDB’s Little Cousin
pouchdb
![Page 24: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/24.jpg)
CouchDB’s Little Cousin
pouchdbBrowser?
Hood.ie?
Node.jsServer? Node.js Laptop?
Cozy.io?
Cloud?
![Page 25: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/25.jpg)
Meet PouchDB
• Implements CouchDB’s replication protocol
– In the browser & node.js
• Web App becomesCouchDB-friendly replicationendpoint
• Very active projects
• Lots of plugins & adapters
– desktop & mobile browsers + node.js servers
![Page 26: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/26.jpg)
PouchDB + CouchDB
• Data where you need it.
• Consistent Data Model on Server & Client
• Replication to tie them together
– Master-Master replication (again)
• Consistent Conflict Model on both ends
![Page 27: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/27.jpg)
Setup & Sync with PouchDB
var db = new PouchDB('dbname');
db.put(_id: '[email protected]',name: 'David',age: 68
);
db.changes().on('change', function() console.log('Ch-Ch-Changes');
);
db.replicate.to('http://example.com/mydb');db.replicate.from('http://example.com/mydb');// orPouchDB.sync(db, 'http://example.com/mydb');
![Page 28: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/28.jpg)
PILLOW NOTESMarkdown Editor built with PouchDB
![Page 29: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/29.jpg)
Pillow Notes
• Yet Another Markdown Editor Thing
• JSON looks like:
– “_id”: “…title of the note…”,
– “markdown”: “…the note…”
– “created”: “…iso8601…”
– “updated”: “…iso8601…”
• http://bigbluehat.github.io/pillow-notes
![Page 30: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/30.jpg)
Pillow Notes
![Page 31: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/31.jpg)
Pillow Notes Implementation
• HTML5, CSS, JS
• PouchDB– Persistence in browser
– Replication out to CouchDB, Cloudant, etc• For backup, sharing, publication?
• Vue.js– Interaction
• HTML5 App Manifest (soon)– Fully offline (once added…)
![Page 32: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/32.jpg)
Static Hosting Pillow Notes
• On GitHub Pages–
– http://bigbluehat.github.io/pillow-notes/
• On Cloudant–
– http://bigbluehat.cloudant.com/pillow-notes/_design/pillow-notes/_rewrite/
• On CouchDB locally–
• Apache server…of course ;)
![Page 33: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/33.jpg)
Pillow Notes & Replication
Username, Password, URL of DatabaseClick “Sync”
Bi-directional Replication MAY create conflicts
![Page 34: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/34.jpg)
CORS & Single Origin Pain
• Cross Origin Resource Sharing
– Disables a core feature of the Web
– Makes moving JSON with Browsers painful
• (re?)Enable CORS
–
– Cloudant has some UI, but only works over HTTPS
• Can’t share without CORS being enabled
• OK…it’s actually the Single Origin Policy…
![Page 35: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/35.jpg)
WORK LOCALLY; SYNC GLOBALLYgetting from local to remote and back
![Page 36: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/36.jpg)
Decentralized Cloud with Friends!
• Per user database
• Per share database
– User to user
– Group to group
• Client does most of the work
![Page 37: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/37.jpg)
Federation for Alice, Bob, & Charlie
![Page 38: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/38.jpg)
Cloudant or remote
Apache CouchDB
private-user-space
alice
private-user-space(optional)
alice-bobreplicate
alice-charlie
groups
replicateshare-with-alice
private-user-space
filtered
charlie Extension / App
filtered
replication
share-with-bob
Extension / App
share-with-charlie
filtered
replication
share-with-alice
private-user-space
filtered
bob Extension / App
![Page 39: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/39.jpg)
Federation for Alice, Bob, & Charlie
• Filtered replication on the client
• Peer-to-peer replication when cloudless
• Security centered around the database(s)
• (optional) Continuous replication to the cloud
![Page 40: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/40.jpg)
Similar Projects
• http://pouch.host/
– a service that lets your PouchDB applications easily provide login and online sync functionality
– single user app scenarios (so far)
• couch-per-user
– daemon that ensures that a private per-user database exists for each document in _users
• Platforms: hood.ie, cozy.io, ddoc.me
![Page 41: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/41.jpg)
DOCUMENT DESIGNDecentralized
![Page 42: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/42.jpg)
Design for Change
• Focus on change “vector”
– Updated often?
– Can I split this out?
– Can I put it back together?
– Can I build the index I want from this?
• Mind like Paper
![Page 43: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/43.jpg)
Design for Change - _id
• Document ID
–
• Only source of uniqueness
– UUID’s by default (via )
• Primary Index range
–
–
![Page 44: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/44.jpg)
Design for Change - keys
• Informative
• Can’t be underscore prefixed
– The one thing CouchDB (& PouchDB) reserve
• JSON-LD?
– Map Strings to Things
– Bit tedious in JS vs.
– Still worth it
• Lazy (and large…) secondary index
![Page 45: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/45.jpg)
Lazy (and large…) secondary index
![Page 46: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/46.jpg)
Design for Change - values
• Values
– How nested?
– How legible?
– What type?
• String
• Number
• Object
• Array
• Dates – use ISO 8601 vs. numeric Unix epoch
![Page 47: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/47.jpg)
Other People’s JSON
• Postel’s Law > Sarte’s Plays?
– conservative in what you send
– liberal in what you accept
• Schemaless FTW!
• “normalize” at read time (not write time)
– schema on the way out
![Page 48: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/48.jpg)
DEALING WITH CONFLICTconflict happens
![Page 49: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/49.jpg)
Arbitrary but Awesome!
• CouchDB consistently picks arbitrary winner
• Winner is the current document–
• Ask for conflicts to see non-winning revision(s)––
• Pick a new winner by overwriting it––
–
![Page 50: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/50.jpg)
Map Reduce for Conflicts
![Page 51: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/51.jpg)
Map Reduce for Conflicts
• Handy for UI-level conflict notifications
•
– display them together & let the user pick
![Page 52: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/52.jpg)
BRINGING THIS TO ANNOTATIONHuman rights and all that.
![Page 53: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/53.jpg)
Ask to Annotate?!
• You bought the book
– You can scribble in it.
– You can share it.
– You can write content about it.
• You should not
– Have to ask.
– Need a “middle man.”
![Page 54: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/54.jpg)
Offline Annotator
• http://github.com/bigbluehat/annotator-pouchdb
• offline-annotator.xpi (for Firefox)
• Uses PouchDB + Annotator
• Soon:– Sync UI
– W3C Web Annotation Data Model
– Your help! ^_^
![Page 55: Decentralized Document Delivery · What I do @ hypothes.is “an integration liaison and ambassador for the people of the Open Web at Hypothes.is; a platform ombudsperson to hold](https://reader033.fdocuments.us/reader033/viewer/2022042122/5e9ca6b10c2467624e407e0b/html5/thumbnails/55.jpg)
Thanks!
• bigbluehat.com• @bigbluehat• github.com/BigBlueHat• bigbluehat on irc.freenode.net
– #couchdb #pouchdb #hypothes.is• [email protected]• [email protected]• [email protected]