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

Building Google Docs without the Google (CRDT + IPFS) #130

Open
mozfest-bot opened this Issue Jul 14, 2017 · 9 comments

Comments

@mozfest-bot
Collaborator

mozfest-bot commented Jul 14, 2017

[ UUID ] b72f82a1-441f-4036-b8a2-9f462e2a3133

[ Submitter's Name ] David Dias
[ Submitter's Affiliated Organisation ] Protocol Labs
[ Submitter's Github ] @diasdavid

[ Additional facilitators ] Pedro Teixeira (@pgte)

What will happen in your session?

The participants will build a simple text editor that allows many nodes to participate and collaborate in real-time in editing. We will extrapolate this into a system that allows collaboration on a generic data structure.

This text editor will be using CRDT (conflict-free replicated data type) and IPFS

What is the goal or outcome of your session?

Help everyone understand the importance of the distributed web and how there are tools and mechanisms to make it possible

If your session requires additional materials or electronic equipment, please outline your needs.

Just projector, good wifi (or ethernet) will be fine.

Time needed

60 mins

@diasdavid

This comment has been minimized.

Show comment
Hide comment
@diasdavid

diasdavid Jul 14, 2017

We (me and @pgte) had prepared a little bit more context which didn't fit while filling the form, but here it goes:

Moving away from centralized services into truly distributed peer-to-peer systems that are not controlled by a single entity is a necessity. Relying on a few private entities to control the the content and delivery of the web is not safe nor scalable.

Plus, real-time collaborative applications are in their infancy, but we believe that in the future they will be the norm. This in itself will be a huge challenge since, in reality, the majority of the devices are poorly connected, relying on (often mobile) networks that offer little to no reliability.

Even if the underlying network is not reliable, any node should be able to perform changes in a shared data structure and, somehow, the system should be able to converge these changes into all participating nodes. Nodes should be able to enter and leave the network (either by their own will or because of network conditions), but the system should make sure that this does not lead to losing data or threatening convergence.

What protocols and data structures will allow participating users and their nodes to form ad-hoc networks for spontaneous or planned real-time collaboration without any centralized coordination?

Peer-to-peer networks can rely on special replicated data types that are distributed and conflict-free, and were built specially for these scenarios. In this session we’ll take a look at the IPFS pub-sub protocol and how we can use Conflict-free Replicated Data Types (CRDTs) to create data structures that are shared between many peers and that require no special coordinating entity.

diasdavid commented Jul 14, 2017

We (me and @pgte) had prepared a little bit more context which didn't fit while filling the form, but here it goes:

Moving away from centralized services into truly distributed peer-to-peer systems that are not controlled by a single entity is a necessity. Relying on a few private entities to control the the content and delivery of the web is not safe nor scalable.

Plus, real-time collaborative applications are in their infancy, but we believe that in the future they will be the norm. This in itself will be a huge challenge since, in reality, the majority of the devices are poorly connected, relying on (often mobile) networks that offer little to no reliability.

Even if the underlying network is not reliable, any node should be able to perform changes in a shared data structure and, somehow, the system should be able to converge these changes into all participating nodes. Nodes should be able to enter and leave the network (either by their own will or because of network conditions), but the system should make sure that this does not lead to losing data or threatening convergence.

What protocols and data structures will allow participating users and their nodes to form ad-hoc networks for spontaneous or planned real-time collaboration without any centralized coordination?

Peer-to-peer networks can rely on special replicated data types that are distributed and conflict-free, and were built specially for these scenarios. In this session we’ll take a look at the IPFS pub-sub protocol and how we can use Conflict-free Replicated Data Types (CRDTs) to create data structures that are shared between many peers and that require no special coordinating entity.

@timcowlishaw

This comment has been minimized.

Show comment
Hide comment
@timcowlishaw

timcowlishaw Jul 17, 2017

Collaborator

Hi there @diasdavid,

This sounds really great. However, what level of skill / expertise will be needed to participate in the session? We're not against technical proposals at all, so if it's a fairly high bar that's fine, however - this sounds sufficiently important and interesting that it'd be great to make it as accessible as possible given the material :-)

Thanks!

Tim

Collaborator

timcowlishaw commented Jul 17, 2017

Hi there @diasdavid,

This sounds really great. However, what level of skill / expertise will be needed to participate in the session? We're not against technical proposals at all, so if it's a fairly high bar that's fine, however - this sounds sufficiently important and interesting that it'd be great to make it as accessible as possible given the material :-)

Thanks!

Tim

@diasdavid

This comment has been minimized.

Show comment
Hide comment
@diasdavid

diasdavid Jul 17, 2017

Hi @timcowlishaw o/

Thanks for reviewing the proposal. We are happy to provide prep material, the requirement is a basic JavaScript base, we will go through giving a quick intro to CRDTs, why they excel in distributed scenarios and why it is important. The whole workshop will be prepared so that folks can follow a set of steps in which they can pair to work through :)

diasdavid commented Jul 17, 2017

Hi @timcowlishaw o/

Thanks for reviewing the proposal. We are happy to provide prep material, the requirement is a basic JavaScript base, we will go through giving a quick intro to CRDTs, why they excel in distributed scenarios and why it is important. The whole workshop will be prepared so that folks can follow a set of steps in which they can pair to work through :)

@diasdavid

This comment has been minimized.

Show comment
Hide comment
@diasdavid

diasdavid Oct 24, 2017

Hi all, sharing an update here from me and @pgte.

The outline for this session is:

  • Intro and Goals
  • Describe issues with Centralized Applications and present the motivations for Decentralized Apps
  • Workshop/Tutorial on how to build a simple Flipchart app
  • Intro to Peerpad
  • QA/Buffer time

People will work in groups for the Workshop/Tutorial part and instructions will be provided. As for requirements, we kindly ask everyone to:

diasdavid commented Oct 24, 2017

Hi all, sharing an update here from me and @pgte.

The outline for this session is:

  • Intro and Goals
  • Describe issues with Centralized Applications and present the motivations for Decentralized Apps
  • Workshop/Tutorial on how to build a simple Flipchart app
  • Intro to Peerpad
  • QA/Buffer time

People will work in groups for the Workshop/Tutorial part and instructions will be provided. As for requirements, we kindly ask everyone to:

@pgte

This comment has been minimized.

Show comment
Hide comment
@pgte

pgte Oct 25, 2017

@vigneshwerd is it possible to have 2 projectors in this session?
(This way we could have me conducting and @diasdavid following along, minimising the confusion of going back and fourth between presentation, code and app.)

pgte commented Oct 25, 2017

@vigneshwerd is it possible to have 2 projectors in this session?
(This way we could have me conducting and @diasdavid following along, minimising the confusion of going back and fourth between presentation, code and app.)

@cubicgarden

This comment has been minimized.

Show comment
Hide comment
@cubicgarden

cubicgarden Oct 25, 2017

Collaborator

adding @maboa, I think this might be tricky to do... Made a note and see what we can do about this.

Collaborator

cubicgarden commented Oct 25, 2017

adding @maboa, I think this might be tricky to do... Made a note and see what we can do about this.

@maboa

This comment has been minimized.

Show comment
Hide comment
@maboa

maboa Oct 25, 2017

Collaborator

All I can say is that we'll do our best, but please plan for a single projector as well.

Collaborator

maboa commented Oct 25, 2017

All I can say is that we'll do our best, but please plan for a single projector as well.

@nkhine

This comment has been minimized.

Show comment
Hide comment
@nkhine

nkhine Oct 30, 2017

@diasdavid do you have links to the presentation and code as this was a session i missed. thanks

nkhine commented Oct 30, 2017

@diasdavid do you have links to the presentation and code as this was a session i missed. thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment