Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Does the network seem thin up here? Collaborating with Mountaintop Mesh Networks

Does the network seem thin up here? Collaborating with Mountaintop Mesh Networks

Code, blogs, videos and more: https://jonathanleemartin.com/

Digital nomads can now work anytime, anywhere—but often with **no WiFi.** Despite the explosion of feature-rich web apps, offline editors like Microsoft Word remain their tool of choice, leaving them out in the cold when it comes to realtime collaboration.

With the help of *Operational Transforms* + *Conflict-Free Replicated Data Types,* peer-to-peer web apps can enable writers, musicians and other creators to collaborate *off-the-grid* and climb up to the writer’s ultimate dream: **collaborative writing atop Half Dome.**

LSEQ implementation: https://github.com/nybblr/LSEQTree/
P2P experiments: https://github.com/nybblr/p2p-experiments

Jonathan Lee Martin

October 08, 2016
Tweet

More Decks by Jonathan Lee Martin

Other Decks in Programming

Transcript

  1. C O L L A B O R AT I N G O V E R
    M O U N TA I N T O P N E T W O R K S .
    D O E S T H E N E T W O R K S E E M T H I N U P H E R E ?

    View Slide

  2. I ’ M J O N AT H A N M A R T I N .
    @ N Y B B L R

    View Slide

  3. View Slide

  4. I ’ M F R O M AT L A N TA .
    @ N Y B B L R

    View Slide

  5. I ’ M F R O M M O B I L E .
    @ N Y B B L R

    View Slide

  6. I ’ M F R O M D A L L A S .
    @ N Y B B L R

    View Slide

  7. I ’ M F R O M A N Y W H E R E .
    @ N Y B B L R

    View Slide

  8. I ’ M A D I G I TA L N O M A D .
    @ N Y B B L R

    View Slide

  9. T H E O F F I C E O F
    D I G I TA L N O M A D S .
    W E L C O M E T O M Y C U B I C L E .

    View Slide

  10. View Slide

  11. • Last-minute flights
    • Live out of a backpack
    • Translate road signs at 60 mph
    • Live like the locals

    View Slide

  12. H O T E L W I F I D O E S N ’ T C O U N T.
    is the WiFi of nomads.

    View Slide

  13. • Bloggers, journalists, or software devs
    • Primarily writing + collaborating on the go
    • Poor connectivity outside the cities
    • Offline a lot of the time

    View Slide

  14. A L E X B E T H
    F O O D I E J O U R N A L I S T

    View Slide

  15. A L E X A N D B E T H A R E
    S A N D W I C H H I S T O R I A N S .
    S O B A S I C A L LY…

    View Slide

  16. T H E Y WA N T T O W R I T E
    C O L L A B O R AT I V E LY.
    N O M AT T E R T H E I R L O C AT I O N …

    View Slide

  17. View Slide

  18. I O N LY C H A N G E D O N E W O R D …

    View Slide

  19. W H AT A R E A L L T H E S E F L A G S ? !

    View Slide

  20. R E A LT I M E . Y E P.

    View Slide

  21. G O O G L E D O C S

    View Slide

  22. View Slide

  23. E T H E R PA D

    View Slide

  24. View Slide

  25. A L E X A N D B E T H WA N T T O
    C O L L A B O R AT E U P H E R E .
    D O E S T H E N E T W O R K S E E M T H I N U P H E R E ?

    View Slide

  26. • Conflict resolution algorithm
    • Network for propagating changes to peers
    • Slick editor

    View Slide

  27. M E R G I N G C H A N G E S F O R
    E V E N T U A L C O N S I S T E N C Y
    A L E X A N D B E T H M A K E C H A N G E S A T T H E S A M E T I M E .

    View Slide

  28. W E C A N ’ T TA K E T U R N S .
    T H E S P E E D O F L I G H T I S S L O W.

    View Slide

  29. L E T ’ S B E C O N S I S T E N T.
    E V E N T U A L LY.

    View Slide

  30. A L E X & B E T H A R E
    G R O C E RY S H O P P I N G .
    M E A N W H I L E I N A N A L P I N E V I L L A G E …

    View Slide

  31. View Slide



  32. A L E X
    B E T H

    View Slide

  33. {,,}∪{,} = {,,,}
    {,,}∩{,} = {}
    {,,}

    View Slide

  34. ?

    View Slide



  35. A L E X
    B E T H

    View Slide



  36. A L E X
    B E T H

    {,,,} {}
    =
    or ?

    View Slide

  37. A L E X
    B E T H

    =
    DEL()
    INS()
    DEL()

    {DEL(),INS(),DEL()}

    View Slide

  38. {,,}
    {DEL(),INS(),DEL()} = {,}

    View Slide

  39. A L E X & B E T H A R E B L O G G I N G
    A B O U T S A N D W I C H E S .
    W I T H L U N C H TA K E N C A R E O F…

    View Slide

  40. Sandwiches are a popular type of lunch
    food, taken to work, school, or picnics
    to be eaten as part of a packed lunch.


    View Slide

  41. “sandwich”

    View Slide

  42. “sandwich”
    A L E X “sandwich”
    ⁰¹² ³⁴⁵⁶
    B E T H “sandwhich”
    ⁰¹²³⁴⁵⁶⁷⁸
    ⁰¹²³⁴⁵⁶⁷

    View Slide

  43. B E T H
    A L E X
    “sandwich”
    DEL(3)
    INS(5,“h”)
    ⁰¹²³⁴⁵⁶⁷
    “sandwihch”
    ⁰¹² ³⁴⁵⁶⁷

    View Slide

  44. “sanwihch”

    View Slide

  45. B E T H
    A L E X
    “sandwich”
    DEL(3)
    INS(5 =4,“h”)
    ⁰¹²³⁴⁵⁶⁷
    “sanwhich”
    ⁰¹²³⁴⁵⁶⁷
    ⁰¹²-³⁴⁵⁶
    ⁰¹²³⁴⁵⁶⁷
    “sandwich”
    -1

    View Slide

  46. “sanwhich”

    View Slide

  47. A TA L E O F T W O T I P I S
    O P E R AT I O N A L T R A N S F O R M S

    View Slide

  48. op1 ∘ T(op2, op1) ≡ op2 ∘ T(op1, op2)
    T(op3, op1 ∘ T(op2, op1)) =
    T(op3, op2 ∘ T(op1, op2))
    T P 2
    T P 1

    View Slide

  49. B E T H
    A L E X
    “abc” “abc”
    op1: INS(3,“x”) op2: DEL(2)
    “abxc” “ac”
    “axc” “acx”

    View Slide

  50. B E T H
    A L E X
    “abc” “abc”
    op1: INS(2,“x”) op2: DEL(2)
    “axbc” “ac”
    C H R I S
    “abc”
    op3: INS(3,“y”)
    “abyc”
    “axyc” “ayxc”
    or ?

    View Slide

  51. – G ´ E R A L D O S T E R E T A L .
    “…currently there are no correct
    transformation functions…”

    View Slide

  52. – G ´ E R A L D O S T E R E T A L .
    “…OT cannot be used to build a safe
    decentralized collaborative [editor].”

    View Slide

  53. M E E T D O C S .

    View Slide

  54. P R E C O N D I T I O N S &
    T O M B S T O N E S
    I D O N ’ T F O L L O W. C O U L D Y O U G I V E M E M O R E C O N T E X T ?

    View Slide

  55. s≺a≺n

    View Slide

  56. s≺a≺n a≻s,a≺n

    View Slide

  57. “sandwich”
    ⁰¹²³⁴⁵⁶⁷

    View Slide

  58. INS(d≺y≺w)
    INS(d≺e≺w)
    s≺a≺n≺d≺w≺i≺c≺h
    DEL(n≺d≺w)

    View Slide

  59. INS(d≺y≺w)
    INS(d≺e≺w)
    s≺a≺n≺w≺i≺c≺h

    View Slide

  60. “sandwich”
    ⁰¹²-³⁴⁵⁶

    View Slide

  61. INS(d≺y≺w)
    INS(d≺e≺w)
    s≺a≺n≺d≺w≺i≺c≺h

    View Slide

  62. INS(d≺e≺w)
    s≺a≺n≺d≺y≺w≺i≺c≺h

    View Slide

  63. s≺a≺n≺d≺e≺y≺w≺i≺c≺h

    View Slide

  64. “saneywich”

    View Slide

  65. “sandwich”
    ⁰¹²-³⁴⁵⁶

    View Slide

  66. “sandywhiddwich”
    ⁰¹²-------³⁴⁵⁶

    View Slide

  67. C R D T: C O N F L I C T- F R E E
    R E P L I C AT E D D ATA T Y P E
    W E C A N D O ( M U C H ) B E T T E R .

    View Slide

  68. L S E Q : L I N E A R
    S E Q U E N C E
    A N E F F I C I E N T T R E E - B A S E D C R D T S E Q U E N C E

    View Slide

  69. “sandwich”
    ⁰¹²³⁴⁵⁶⁷

    View Slide

  70. s
    a
    n
    d
    w
    i
    c
    h

    View Slide

  71. n
    a
    d
    s
    w
    i
    c
    h
    root
    begin end
    0 9
    3
    5
    7 8
    3 7 4
    3

    View Slide

  72. d
    3
    7
    7
    n
    a
    s
    w
    i
    c
    h
    root
    begin end
    0 9
    5
    8
    3 4
    3

    View Slide

  73. d
    3
    7
    7
    a
    s
    root

    View Slide

  74. [3.7.7]

    View Slide

  75. INS([3.7.7],“y”,[3.8])
    [3.7.7] [3.8]

    View Slide

  76. INS( ,“y”, )
    d w
    [3.7.7] [3.8]

    View Slide

  77. INS( ,“y”, ) =
    d w
    [3.7.7] [3.8]
    y
    [3.7.9]

    View Slide

  78. [3.7.9]

    View Slide

  79. n
    a
    d
    s
    w
    i
    c
    h
    root
    begin end
    0 9
    3
    5
    7 8
    3 7 4
    3

    View Slide

  80. n
    a
    d
    s
    w
    i
    c
    h
    root
    begin end
    0 9
    3
    5
    7 8
    3
    7
    4
    3
    y
    9

    View Slide

  81. INS( )
    y
    [3.7.9]
    INS( )
    h
    [3.8.2]
    B E T H
    A L E X

    View Slide

  82. n
    a
    d
    s
    w
    i
    c
    h
    root
    begin end
    0 9
    3
    5
    7 8
    3 7 4
    3

    View Slide

  83. n
    a
    d
    s
    w
    i
    c
    h
    root
    begin end
    0 9
    3
    5
    7 8
    3
    7
    4
    3
    y
    9

    View Slide

  84. n
    a
    d
    s
    w
    h
    c
    h
    root
    begin end
    0 9
    3
    5
    7 8
    3
    7 2
    3
    y
    9
    i
    4

    View Slide

  85. “sandywhich”

    View Slide

  86. • No master peer
    • Works with any number of peers
    • No tombstones
    • Memory usage grows slowly
    • Operations can be applied quickly
    • Resilient to long offline spells

    View Slide

  87. github.com/Chat-Wane/LSEQTree
    L S E Q J A VA S C R I P T I M P L E M E N TA T I O N

    View Slide

  88. arxiv.org/abs/1608.03960
    J S O N C R D T

    View Slide

  89. P 2 P N E T W O R K S
    A L E X A N D B E T H N E E D T O E X C H A N G E O P E R A T I O N S .

    View Slide

  90. • Connection (WiFi, socket, BLE, sound)
    • Topology (Spray)
    • Discovery (mDNS)
    • Transport (TCP, UDP, SCTP)
    • Protocol (HTTP, HTTPS, stream)
    • Resolver (ICE, STUN, TURN)
    • Signaling (WebRTC)
    • Security (SSL, DTLS)

    View Slide

  91. • Topology
    • Discovery
    • Transport
    • Security

    View Slide

  92. C
    E
    H
    I
    B
    A
    D
    F
    G
    J

    View Slide

  93. C
    E
    H
    I
    B
    A
    D
    F
    G
    J

    View Slide

  94. C
    E
    H
    I
    B
    A
    D
    F
    G
    J

    View Slide

  95. C
    E
    H
    I
    B
    A
    D
    F
    G
    J
    “hi”

    View Slide

  96. C
    E
    H
    I
    B
    A
    D
    F
    G
    J
    “hi”
    “hi”
    “hi”
    “hi”
    “hi” “hi”
    “hi”

    View Slide

  97. B
    A
    “hi”
    “hi”
    “hi”
    “hi”
    “hi”
    “hi”

    View Slide

  98. W E ’ R E R E I N V E N T I N G
    T H E I N T E R N E T.
    S O B A S I C A L LY…

    View Slide

  99. • Scuttlebutt
    • Gossip
    • Hyperlog
    • libp2p

    View Slide

  100. github.com/kgryte/awesome-peer-to-peer
    A L L T H E P 2 P A W E S O M E N E S S

    View Slide

  101. R I C H C O N T E N T E D I TA B L E
    M A R K D O W N E D I T O R
    A L E X A N D B E T H N E E D A N A W E S O M E E D I T O R .

    View Slide

  102. github.com/nybblr/p2p-experiments

    View Slide

  103. • WebRTC
    • WiFi Direct
    • LTE Direct
    • BLE
    • Bonjour

    View Slide

  104. View Slide

  105. T H E I R F U T U R E I S H I D I N G
    I N A C A D E M I C PA P E R S .
    A L E X A N D B E T H A R E C O U N T I N G O N Y O U .

    View Slide

  106. Y E L L O W S C A L E . C O M
    L A N D S C A P E P H O T O G R A P H Y & D I G I TA L N O M A D I S M

    View Slide

  107. T H A N K S !
    @nybblr
    yellowscale.com

    View Slide