SlideShare une entreprise Scribd logo
1  sur  45
ShareJS
Collaborative Anything
Ace



           ShareJS Client
      OT




           ShareJS Server   Redis
      OT
Ace


[{i:"H", p:0}]
                        ShareJS Client
[{i:"i", p:1}]
                   OT




                        ShareJS Server   Redis
                   OT
Ace


[{i:"H", p:0}]
                        ShareJS Client
[{i:"i", p:1}]
                   OT




                        ShareJS Server   Redis
                   OT
Other
             Ace                         Editor


[{i:"H", p:0}]
                        ShareJS Client
[{i:"i", p:1}]
                   OT




                        ShareJS Server            Redis
                   OT
Other
             Ace                         Editor


[{i:"H", p:0}]
                        ShareJS Client
[{i:"i", p:1}]
                   OT




                        ShareJS Server            Redis
                   OT
Other
             Ace                         Editor


[{i:"H", p:0}]
                        ShareJS Client
[{i:"i", p:1}]
                   OT

                 Socket.io


                        ShareJS Server            Redis
                   OT
Other
             Ace                         Editor


[{i:"H", p:0}]
                        ShareJS Client
[{i:"i", p:1}]
                   OT

                 Socket.io
                                REST

                        ShareJS Server            Redis
                   OT
Other
             Ace                         Editor


[{i:"H", p:0}]
                        ShareJS Client
[{i:"i", p:1}]
                   OT

                 Socket.io          No stre
                                REST       aming


                        ShareJS Server            Redis
                   OT
[{i:"H", p:0}]    Client   Server
      [{i:"i", p:1}]

Ace
       ShareJS Client



Socket.io


       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace
       ShareJS Client



Socket.io


       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client



Socket.io


       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client
                        open:true, v:10


Socket.io


       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client
                        open:true, v:10
                                          open:true, v:10
Socket.io


       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client
                        open:true, v:10
                                          open:true, v:10
Socket.io                        op:[{i:‘Hi’, p:0}], v:10




       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client
                        open:true, v:10
                                          open:true, v:10
Socket.io                        op:[{i:‘Hi’, p:0}], v:10

                        op:[{d:"i", p:1}], v:11

       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client
                        open:true, v:10
                                          open:true, v:10
Socket.io                        op:[{i:‘Hi’, p:0}], v:10

                        op:[{d:"i", p:1}], v:11
                                            op:null, v:11
       ShareJS Server
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client
                        open:true, v:10
                                          open:true, v:10
Socket.io                        op:[{i:‘Hi’, p:0}], v:10

                        op:[{d:"i", p:1}], v:11
                                            op:null, v:11
       ShareJS Server
                        op:[{d:"H”, p:0}], v:12
[{i:"H", p:0}]    Client                       Server
      [{i:"i", p:1}]
                        doc:‘hello’, snapshot:null
Ace                        doc:‘hello’, v:10, snapshot:‘’
       ShareJS Client
                        open:true, v:10
                                          open:true, v:10
Socket.io                        op:[{i:‘Hi’, p:0}], v:10

                        op:[{d:"i", p:1}], v:11
                                            op:null, v:11
       ShareJS Server
                        op:[{d:"H”, p:0}], v:12
                                            op:null, v:12
Ace



           ShareJS Client
      OT

  Socket.io
                   REST

           ShareJS Server   Redis
      OT
Ace



           ShareJS Client
      OT

  Socket.io
                   REST
                             Redis
           ShareJS Server
      OT                    Memory
Ace



           ShareJS Client
      OT

  Socket.io
                   REST
                             Redis
           ShareJS Server
      OT                    Memory


  % bin/sharejs
Ace



           ShareJS Client
      OT

  Socket.io
                   REST

           ShareJS Server    Memory
      OT


              Your Web App
Ace



           ShareJS Client
      OT




           ShareJS Server
      OT
Operational
OT   =
         Transformation
{
Operational
OT   =
         Transformation
{
                =
          What happens if 2 people
           edit at the same time?
Operational
               OT   =
                        Transformation
{
                               =
Set of types
                         What happens if 2 people
                          edit at the same time?
Operational
                 OT     =
                            Transformation
{
                                   =
               • Text
Set of types
                             What happens if 2 people
                              edit at the same time?
Operational
                 OT      =
                             Transformation
{
                                    =
               • Text
Set of types
                              What happens if 2 people
               • Rich text     edit at the same time?
Operational
                 OT      =
                             Transformation
{
                                    =
               • Text
Set of types
                              What happens if 2 people
               • Rich text     edit at the same time?
               • JSON
Operational
                 OT     =
                             Transformation
{
                                    =
               • Text
Set of types
                              What happens if 2 people
               • Rich text     edit at the same time?
               • JSON
               • Your data
Operational
                 OT     =
                             Transformation
{
                                    =
               • Text
Set of types
                              What happens if 2 people
               • Rich text     edit at the same time?
               • JSON
               • Your data

                             Only type right now
Operational
                  OT     =
                               Transformation
Client                                                   Server

 v10
                             ‘ACD’
                                                         v10
        op:[{d:‘AC’, p:0}]           op:[{i:‘B’, p:1}]



                   ‘D’               ‘ABCD’

         op:[{i:‘B’, p:0}]
  v11
Operational
                  OT     =
                               Transformation
Client                                                   Server

 v10
                             ‘ACD’
                                                         v10
        op:[{d:‘AC’, p:0}]           op:[{i:‘B’, p:1}]



                   ‘D’               ‘ABCD’
                                     op:[{d:‘A’, p:0},
         op:[{i:‘B’, p:0}]
  v11                                    {d:‘C’, p:1}]
                                                         v11
Operational
                  OT     =
                               Transformation
Client                                                   Server

 v10
                             ‘ACD’
                                                         v10
        op:[{d:‘AC’, p:0}]           op:[{i:‘B’, p:1}]



                   ‘D’               ‘ABCD’
                                     op:[{d:‘A’, p:0},
         op:[{i:‘B’, p:0}]
  v11                                    {d:‘C’, p:1}]
                             ‘BD’                        v11
Ace



           ShareJS Client
      OT

  Socket.io
                   REST
                             Redis
           ShareJS Server
      OT                    Memory
Ace



src/client          ShareJS Client
               OT

             Socket.io
               Socket.io
                                 REST
                                           Redis
                         ShareJS Server
                    OT                    Memory
Ace



src/client          ShareJS Client
               OT

             Socket.io




             Socket.io         REST
src/server                             Redis
                    ShareJS Server
               OT                     Memory
Ace



src/client             ShareJS Client


              Socket.io

                            Operational
src/types         OT     =
                           Transformation

              Socket.io           REST
src/server                                Redis
                       ShareJS Server
                                         Memory
Really beta warning
Really beta warning
• No authentication
• Need a rich text OT type
• Could be way faster
 • Saves a snapshot with every op
 • O(N ) with the number of people typing in a
         2

    doc at the same time
• Redis requires history to all fit in RAM. Mongodb?
• Faye > SocketIO?
• No undo support, even though thats really easy.
Really beta warning
• No authentication
• Need a rich text OT type
• Could be way faster
 • Saves a snapshot with every op
 • O(N ) with the number of people typing in a
         2

    doc at the same time
• Redis requires history to all fit in RAM. Mongodb?
• Faye > SocketIO?
• No undo support (should be easy!)
Really beta warning
• No authentication
• Need a rich text OT type
• Could be way faster
 • Saves a snapshot with every op
 • O(N ) with the number of people typing in a
         2

    doc at the same time
• Redis requires history to all fit in RAM. Mongodb?
• Faye > SocketIO?
• No undo support (should be easy!)
Really beta warning
• No authentication
• Need a rich text OT type
• Could be way faster
 • Saves a snapshot with every op
 • O(N ) with the number of people typing in a
         2

    doc at the same time
• Redis requires history to all fit in RAM. Mongodb?
• Faye > SocketIO?
• No undo support (should be easy!)
Help out!

• http://sharejs.org/
• Join the mailing list (link from the website)
• ShareJSLib on twitter
• Most importantly: Contribute code!
 • https://github.com/josephg/ShareJS

Contenu connexe

En vedette

Everyday English
Everyday EnglishEveryday English
Everyday Englishlady3140
 
CLOrox fy05_q3_spmt
CLOrox   fy05_q3_spmtCLOrox   fy05_q3_spmt
CLOrox fy05_q3_spmtfinance48
 
BNZ, hoe wordt je vrienden met Google presentation 13-05-2015
BNZ, hoe wordt je vrienden met Google  presentation 13-05-2015BNZ, hoe wordt je vrienden met Google  presentation 13-05-2015
BNZ, hoe wordt je vrienden met Google presentation 13-05-2015John Meijering ✔
 
PM processing 03 2015(eng)
PM processing 03 2015(eng)PM processing 03 2015(eng)
PM processing 03 2015(eng)Vadim Andreev
 
Mahabharat Winning Strategies
Mahabharat Winning StrategiesMahabharat Winning Strategies
Mahabharat Winning StrategiesRajesh Goyal
 
広島アニメ関連イベントカレンダー(仮)はじめました
広島アニメ関連イベントカレンダー(仮)はじめました広島アニメ関連イベントカレンダー(仮)はじめました
広島アニメ関連イベントカレンダー(仮)はじめましたYoshitake Takata
 
Disobedience Invitation
Disobedience InvitationDisobedience Invitation
Disobedience Invitationtianvh
 
autozone Bylaws4
autozone  Bylaws4autozone  Bylaws4
autozone Bylaws4finance46
 
omnicare annual reports 2000
omnicare annual reports  2000omnicare annual reports  2000
omnicare annual reports 2000finance46
 
liz claiborne AR_2004
liz claiborne  AR_2004liz claiborne  AR_2004
liz claiborne AR_2004finance48
 
molson coors brewing COORS_AR2001
molson coors brewing  COORS_AR2001molson coors brewing  COORS_AR2001
molson coors brewing COORS_AR2001finance46
 
Fetish Furniture Portfolio
Fetish Furniture  PortfolioFetish Furniture  Portfolio
Fetish Furniture PortfolioCharles Powers
 
autozone CorporateGovernancePrinciples1208
autozone  CorporateGovernancePrinciples1208autozone  CorporateGovernancePrinciples1208
autozone CorporateGovernancePrinciples1208finance46
 
molson coors brewing ProxyStatement1
molson coors brewing   ProxyStatement1molson coors brewing   ProxyStatement1
molson coors brewing ProxyStatement1finance46
 

En vedette (16)

Everyday English
Everyday EnglishEveryday English
Everyday English
 
CLOrox fy05_q3_spmt
CLOrox   fy05_q3_spmtCLOrox   fy05_q3_spmt
CLOrox fy05_q3_spmt
 
BNZ, hoe wordt je vrienden met Google presentation 13-05-2015
BNZ, hoe wordt je vrienden met Google  presentation 13-05-2015BNZ, hoe wordt je vrienden met Google  presentation 13-05-2015
BNZ, hoe wordt je vrienden met Google presentation 13-05-2015
 
PM processing 03 2015(eng)
PM processing 03 2015(eng)PM processing 03 2015(eng)
PM processing 03 2015(eng)
 
Mahabharat Winning Strategies
Mahabharat Winning StrategiesMahabharat Winning Strategies
Mahabharat Winning Strategies
 
2009 Lenca Update
2009 Lenca Update2009 Lenca Update
2009 Lenca Update
 
広島アニメ関連イベントカレンダー(仮)はじめました
広島アニメ関連イベントカレンダー(仮)はじめました広島アニメ関連イベントカレンダー(仮)はじめました
広島アニメ関連イベントカレンダー(仮)はじめました
 
Disobedience Invitation
Disobedience InvitationDisobedience Invitation
Disobedience Invitation
 
autozone Bylaws4
autozone  Bylaws4autozone  Bylaws4
autozone Bylaws4
 
omnicare annual reports 2000
omnicare annual reports  2000omnicare annual reports  2000
omnicare annual reports 2000
 
liz claiborne AR_2004
liz claiborne  AR_2004liz claiborne  AR_2004
liz claiborne AR_2004
 
molson coors brewing COORS_AR2001
molson coors brewing  COORS_AR2001molson coors brewing  COORS_AR2001
molson coors brewing COORS_AR2001
 
Fetish Furniture Portfolio
Fetish Furniture  PortfolioFetish Furniture  Portfolio
Fetish Furniture Portfolio
 
Clipagem
ClipagemClipagem
Clipagem
 
autozone CorporateGovernancePrinciples1208
autozone  CorporateGovernancePrinciples1208autozone  CorporateGovernancePrinciples1208
autozone CorporateGovernancePrinciples1208
 
molson coors brewing ProxyStatement1
molson coors brewing   ProxyStatement1molson coors brewing   ProxyStatement1
molson coors brewing ProxyStatement1
 

Dernier

Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integrationmarketing932765
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 

Dernier (20)

Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS:  6 Ways to Automate Your Data IntegrationBridging Between CAD & GIS:  6 Ways to Automate Your Data Integration
Bridging Between CAD & GIS: 6 Ways to Automate Your Data Integration
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 

ShareJS launch talk

  • 2. Ace ShareJS Client OT ShareJS Server Redis OT
  • 3. Ace [{i:"H", p:0}] ShareJS Client [{i:"i", p:1}] OT ShareJS Server Redis OT
  • 4. Ace [{i:"H", p:0}] ShareJS Client [{i:"i", p:1}] OT ShareJS Server Redis OT
  • 5. Other Ace Editor [{i:"H", p:0}] ShareJS Client [{i:"i", p:1}] OT ShareJS Server Redis OT
  • 6. Other Ace Editor [{i:"H", p:0}] ShareJS Client [{i:"i", p:1}] OT ShareJS Server Redis OT
  • 7. Other Ace Editor [{i:"H", p:0}] ShareJS Client [{i:"i", p:1}] OT Socket.io ShareJS Server Redis OT
  • 8. Other Ace Editor [{i:"H", p:0}] ShareJS Client [{i:"i", p:1}] OT Socket.io REST ShareJS Server Redis OT
  • 9. Other Ace Editor [{i:"H", p:0}] ShareJS Client [{i:"i", p:1}] OT Socket.io No stre REST aming ShareJS Server Redis OT
  • 10. [{i:"H", p:0}] Client Server [{i:"i", p:1}] Ace ShareJS Client Socket.io ShareJS Server
  • 11. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace ShareJS Client Socket.io ShareJS Server
  • 12. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client Socket.io ShareJS Server
  • 13. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client open:true, v:10 Socket.io ShareJS Server
  • 14. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client open:true, v:10 open:true, v:10 Socket.io ShareJS Server
  • 15. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client open:true, v:10 open:true, v:10 Socket.io op:[{i:‘Hi’, p:0}], v:10 ShareJS Server
  • 16. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client open:true, v:10 open:true, v:10 Socket.io op:[{i:‘Hi’, p:0}], v:10 op:[{d:"i", p:1}], v:11 ShareJS Server
  • 17. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client open:true, v:10 open:true, v:10 Socket.io op:[{i:‘Hi’, p:0}], v:10 op:[{d:"i", p:1}], v:11 op:null, v:11 ShareJS Server
  • 18. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client open:true, v:10 open:true, v:10 Socket.io op:[{i:‘Hi’, p:0}], v:10 op:[{d:"i", p:1}], v:11 op:null, v:11 ShareJS Server op:[{d:"H”, p:0}], v:12
  • 19. [{i:"H", p:0}] Client Server [{i:"i", p:1}] doc:‘hello’, snapshot:null Ace doc:‘hello’, v:10, snapshot:‘’ ShareJS Client open:true, v:10 open:true, v:10 Socket.io op:[{i:‘Hi’, p:0}], v:10 op:[{d:"i", p:1}], v:11 op:null, v:11 ShareJS Server op:[{d:"H”, p:0}], v:12 op:null, v:12
  • 20. Ace ShareJS Client OT Socket.io REST ShareJS Server Redis OT
  • 21. Ace ShareJS Client OT Socket.io REST Redis ShareJS Server OT Memory
  • 22. Ace ShareJS Client OT Socket.io REST Redis ShareJS Server OT Memory % bin/sharejs
  • 23. Ace ShareJS Client OT Socket.io REST ShareJS Server Memory OT Your Web App
  • 24. Ace ShareJS Client OT ShareJS Server OT
  • 25. Operational OT = Transformation {
  • 26. Operational OT = Transformation { = What happens if 2 people edit at the same time?
  • 27. Operational OT = Transformation { = Set of types What happens if 2 people edit at the same time?
  • 28. Operational OT = Transformation { = • Text Set of types What happens if 2 people edit at the same time?
  • 29. Operational OT = Transformation { = • Text Set of types What happens if 2 people • Rich text edit at the same time?
  • 30. Operational OT = Transformation { = • Text Set of types What happens if 2 people • Rich text edit at the same time? • JSON
  • 31. Operational OT = Transformation { = • Text Set of types What happens if 2 people • Rich text edit at the same time? • JSON • Your data
  • 32. Operational OT = Transformation { = • Text Set of types What happens if 2 people • Rich text edit at the same time? • JSON • Your data Only type right now
  • 33. Operational OT = Transformation Client Server v10 ‘ACD’ v10 op:[{d:‘AC’, p:0}] op:[{i:‘B’, p:1}] ‘D’ ‘ABCD’ op:[{i:‘B’, p:0}] v11
  • 34. Operational OT = Transformation Client Server v10 ‘ACD’ v10 op:[{d:‘AC’, p:0}] op:[{i:‘B’, p:1}] ‘D’ ‘ABCD’ op:[{d:‘A’, p:0}, op:[{i:‘B’, p:0}] v11 {d:‘C’, p:1}] v11
  • 35. Operational OT = Transformation Client Server v10 ‘ACD’ v10 op:[{d:‘AC’, p:0}] op:[{i:‘B’, p:1}] ‘D’ ‘ABCD’ op:[{d:‘A’, p:0}, op:[{i:‘B’, p:0}] v11 {d:‘C’, p:1}] ‘BD’ v11
  • 36. Ace ShareJS Client OT Socket.io REST Redis ShareJS Server OT Memory
  • 37. Ace src/client ShareJS Client OT Socket.io Socket.io REST Redis ShareJS Server OT Memory
  • 38. Ace src/client ShareJS Client OT Socket.io Socket.io REST src/server Redis ShareJS Server OT Memory
  • 39. Ace src/client ShareJS Client Socket.io Operational src/types OT = Transformation Socket.io REST src/server Redis ShareJS Server Memory
  • 41. Really beta warning • No authentication • Need a rich text OT type • Could be way faster • Saves a snapshot with every op • O(N ) with the number of people typing in a 2 doc at the same time • Redis requires history to all fit in RAM. Mongodb? • Faye > SocketIO? • No undo support, even though thats really easy.
  • 42. Really beta warning • No authentication • Need a rich text OT type • Could be way faster • Saves a snapshot with every op • O(N ) with the number of people typing in a 2 doc at the same time • Redis requires history to all fit in RAM. Mongodb? • Faye > SocketIO? • No undo support (should be easy!)
  • 43. Really beta warning • No authentication • Need a rich text OT type • Could be way faster • Saves a snapshot with every op • O(N ) with the number of people typing in a 2 doc at the same time • Redis requires history to all fit in RAM. Mongodb? • Faye > SocketIO? • No undo support (should be easy!)
  • 44. Really beta warning • No authentication • Need a rich text OT type • Could be way faster • Saves a snapshot with every op • O(N ) with the number of people typing in a 2 doc at the same time • Redis requires history to all fit in RAM. Mongodb? • Faye > SocketIO? • No undo support (should be easy!)
  • 45. Help out! • http://sharejs.org/ • Join the mailing list (link from the website) • ShareJSLib on twitter • Most importantly: Contribute code! • https://github.com/josephg/ShareJS

Notes de l'éditeur

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. \n
  52. \n