MozillaFoundation / mozfest-program-2017

Mozilla Festival proposals for 2017
https://mozillafestival.org
81 stars 14 forks source link

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

Open mozfest-bot opened 7 years ago

mozfest-bot commented 7 years ago

[ 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

daviddias commented 7 years ago

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 commented 7 years ago

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

daviddias commented 7 years ago

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 :)

daviddias commented 7 years ago

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

The outline for this session is:

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

pgte commented 7 years ago

@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 commented 7 years ago

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

maboa commented 7 years ago

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

nkhine commented 7 years ago

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

pgte commented 7 years ago

Slides:

https://www.slideshare.net/pgte/building-decentralised-realtime-collaborative-applications-building-google-docs-without-google

code:

https://github.com/ipfs-shipyard/p2p-flipchart

Zaynex commented 4 years ago

@pgte hi, slides failed. Can you provide valid slides source ?

pgte commented 4 years ago

@Zaynex Here it is: p2p-flipchart-171028110010.pdf

Zaynex commented 4 years ago

@Zaynex Here it is: p2p-flipchart-171028110010.pdf

Thanks