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 English
lady3140
 
CLOrox fy05_q3_spmt
CLOrox   fy05_q3_spmtCLOrox   fy05_q3_spmt
CLOrox fy05_q3_spmt
finance48
 
Disobedience Invitation
Disobedience InvitationDisobedience Invitation
Disobedience Invitation
tianvh
 
autozone Bylaws4
autozone  Bylaws4autozone  Bylaws4
autozone Bylaws4
finance46
 
omnicare annual reports 2000
omnicare annual reports  2000omnicare annual reports  2000
omnicare annual reports 2000
finance46
 
liz claiborne AR_2004
liz claiborne  AR_2004liz claiborne  AR_2004
liz claiborne AR_2004
finance48
 
molson coors brewing COORS_AR2001
molson coors brewing  COORS_AR2001molson coors brewing  COORS_AR2001
molson coors brewing COORS_AR2001
finance46
 
Fetish Furniture Portfolio
Fetish Furniture  PortfolioFetish Furniture  Portfolio
Fetish Furniture Portfolio
Charles Powers
 
autozone CorporateGovernancePrinciples1208
autozone  CorporateGovernancePrinciples1208autozone  CorporateGovernancePrinciples1208
autozone CorporateGovernancePrinciples1208
finance46
 
molson coors brewing ProxyStatement1
molson coors brewing   ProxyStatement1molson coors brewing   ProxyStatement1
molson coors brewing ProxyStatement1
finance46
 

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

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Dernier (20)

Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

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