Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

decentralized storage of annotations #777

Closed
csillag opened this issue Sep 23, 2013 · 10 comments
Closed

decentralized storage of annotations #777

csillag opened this issue Sep 23, 2013 · 10 comments

Comments

@csillag
Copy link
Contributor

csillag commented Sep 23, 2013

Inspired by some ideas of @tilgovi.

Currently, we rely on a central backend. (In the future, we plan to implement some kind of federation, so that we can simultaneously connect to multiple backends, but it will still be basically a client-server architecture.)

This is a vulnerability, backend is a single point if failure. If it goes down, or is taken out, or access is severed, then the annotations are gone. (At least temporarily.)

Therefore, it would be great if (at some point in future) we could eliminate this SPOF, and migrate to a fully decentralized architecture.

Level 1 of this could be using a self-replicating, auto-spanning, P2P network of server nodes, which would provide redundant data storage. (Think BitTorrent or BitCoin.) At this level, the client would still depend on a server, but there would be many of them to choose from.

Level 2 of this would be to do the same thing in a completely server-less way. Using WebRTC, browsers could build their own P2P network. Available data storage place would probably be more limited than with dedicated server nodes, but on the other hand, the number of available nodes would be higher, so this might compensate this limitation. In theory, we could store all the annotations in this P2P network, created and hosted by the web browser themselves.

Of course when designing this, eventual consistency, and delays in message propagation must be taken into account. The user experience would most certainly be less comfortable. (At least until generally available network bandwidth grows again, by at least 1 or 2 magnitudes.)

Because if the tremendous difficulty, and the inherent limitations, I guess this change is only worth is we conclude that we need to plan

  • for unreliable backends (which could be solved by applying redundancy locally, at the server), or
  • for a generally unreliable Internet infrastructure (which is not so bad nowadays), or
  • for a completely hostile network environment (which is definitely in the cards, but hopefully does not yet crystallizes in the next 1-2 years)

Just entering this into the tracker for record.

@tilgovi
Copy link
Contributor

tilgovi commented Oct 11, 2013

Level 0: Annotations are stored on the web as documents. Either servers act as just an index / search service and the data is retrieved from other URLs, or the browser itself remembers URLs where annotations have been seen and maintains that index. Or both. Issues include cross-origin restrictions on fetching the annotation data from third parties, or authentication issues when third party services are used as annotation storage providers require auth.

@csillag
Copy link
Contributor Author

csillag commented Oct 14, 2013

@tilgovi: for this Level 0, what kind of mechanism do you envision for automatically propagating the information about available storages, and eventually achieving eventual consistency among the participants?

@tilgovi
Copy link
Contributor

tilgovi commented Oct 18, 2013

Automatic? Nothing. No need.

Eventual consistency? There's no redundancy. I don't see what could be inconsistent. I'm not talking about federation where changes have to propagate. I'm talking about annotations just being in places. Like images today.

@almereyda
Copy link

To leave some ideas on that topic, I like projects like

but others are also working in the field, of course. Have you checked the Alternative Internet list for interesting emerging standards that possibly might be useful?

Real federation is also already working today within the Smallest Federated Wiki and we'd desperately need an annotation layer over there. Maybe it'd be wise to join forces to (a) have Wiki follow the Open Annotation Standard and (b) find suitable federation paradigms.

@tilgovi
Copy link
Contributor

tilgovi commented Jul 9, 2014

@almereyda I've seen the alt Internet list and I love it, but I'm not familiar with NDN, so I'll check that out.

I actually had a conversation with Ward about fedwiki and annotator at OSBridge two years ago. I'm not sure he'd remember. It was way to early for both of us to think about collaborating.

Thank you so much for bringing it up on the issues over there. I just subscribed myself to that issue.

@almereyda
Copy link

A pretty p2p and nice thing could be an abstracted (NDN? Check out their browser to browser chat example.) WebRTC swarm of nodes. That would even deliver some kind of online presence service, the hard way.

@tilgovi
Copy link
Contributor

tilgovi commented Aug 20, 2014

All fascinating stuff but doesn't belong in this tracker. It should be a project of its own which we might optional pull into some future build of Hypothesis.

@tilgovi tilgovi closed this as completed Aug 20, 2014
@almereyda
Copy link

I see. Maybe first the W3C Social WG should publish their results on recommendations for easy federation, i.e. via Activity Streams 2.0.

@tilgovi
Copy link
Contributor

tilgovi commented Aug 20, 2014

That would be great. Although, no one should feel they need to wait for that unless they want to. I'm simply trying to pull lots of feature requests from this repository and suggest that we spin off projects where it's relevant and start to split hypothesis/h up where it makes sense so that there's a manageable amount of stuff here and we can effectively triage bugs.

@almereyda
Copy link

That's what an issue tracker is actually there for. Why not spinning up a Discourse or NodeBB site for community discussions?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants