SlideShare une entreprise Scribd logo
1  sur  66
Télécharger pour lire hors ligne
Google Wave



Monday, August 31, 2009
Google Wave for Developers
                                  A Quick Overview


                           Google Wave Hackfest STL
                                       William J. Edney
                          bedney@technicalpursuit.com


                                               © 2007 William J. Edney
                                               Last updated 20090824
                             You are free to use this work, with certain restrictions.
                           For full licensing information, please see the last slide/page.




Monday, August 31, 2009
What is Wave?


                           Email re-imagined
              A unification of email, IM, blogs
                         and wikis
                  A new collaborative platform




Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
But wait… there’s more…




Monday, August 31, 2009
But wait… there’s more…
                          A lot more for developers…
                                A real platform




Monday, August 31, 2009
But wait… there’s more…
                          A lot more for developers…
                                A real platform
                                    Client




Monday, August 31, 2009
But wait… there’s more…
                          A lot more for developers…
                                A real platform
                                    Client
                                   Server




Monday, August 31, 2009
But wait… there’s more…
                          A lot more for developers…
                                A real platform
                                    Client
                                   Server
                      Protocols (several, in fact)



Monday, August 31, 2009
Monday, August 31, 2009
Terminology


Monday, August 31, 2009
A Wave
                            What the user sees in
                          the ‘email-like’ Web client
                           A threaded discussion
                A logical grouping of wavelets




Monday, August 31, 2009
A Wavelet
                           A container for 1..n blips
                      Can have 1..n participants
                             Entity that is hosted
                           Manages access control




Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
A Blip
                           A single message
            Uses a Document to hold content
            Blips can be nested in other blips
         Uses Annotations to hold metadata




Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
A Document
                      Holds the content of a blip




Monday, August 31, 2009
An Annotation
              Holds metadata, like formatting
                  Unlike HTML, formatting
              information is not embedded in a
                      Wave Document




Monday, August 31, 2009
A Participant
              An entity that can create or edit
                           waves
                              Can be a human
                           Can be a robot (agent)




Monday, August 31, 2009
Architecture


Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
Monday, August 31, 2009
Multi-client / single-server




Monday, August 31, 2009
Multi-client / single-server




               GWT protocol




Monday, August 31, 2009
Multi-client / single-server




               GWT protocol




              Google protobuf




Monday, August 31, 2009
Multi-client / single-server




               GWT protocol




              Google protobuf                  Google protobuf




Monday, August 31, 2009
Multi-client / single-server




               GWT protocol                    JSON-RPC




              Google protobuf                  Google protobuf




Monday, August 31, 2009
Multi-client / multi-server




Monday, August 31, 2009
Multi-client / multi-server




Monday, August 31, 2009
Multi-client / multi-server




Monday, August 31, 2009
Multi-client / multi-server




                    Wave
                Federation
              Protocol (XMPP-
                   based)




Monday, August 31, 2009
Operational
                Transformation


Monday, August 31, 2009
Wave is a multi-user, real-time
                            environment
                How do we keep things in sync?




Monday, August 31, 2009
Changes to a document can be
                     modeled as operations
        Operations can be transformed into
                 other operations
                Operations can be composed
             (condensed) into other operations




Monday, August 31, 2009
Operations Example
                                Skip 8

                             ElementStart
                            tagName: “li”

                                Insert
                               “hello”

                             ElementEnd
Monday, August 31, 2009
Operations are how changes are
                          modeled
        Operations can be transformed into
                 other operations
                Operations can be composed
             (condensed) into other operations




Monday, August 31, 2009
Concurrency (naive)




Monday, August 31, 2009
Concurrency (correct)




Monday, August 31, 2009
Editors do not produce HTML
          Editors extract operations against
         documents and store ‘metadata’ like
              formatting in annotations
         Editors perform operations against
          documents and, using formatting
        metadata in annotations, produce the
                    visible result



Monday, August 31, 2009
API


Monday, August 31, 2009
Embed API
        Embed the Wave ‘editor’ GUI into a
                   web page

                           loadWave(waveId:String,
                          opt_loadCallback:Function)
                               addParticipant()
                                 addReply()




Monday, August 31, 2009
Embed API tips
           For now, you must be logged in to
           Wave in order to view a Wave on a
                       web page
                   The Wave ID can only be
                determined from the full client -
                    see the “Debug” menu
         The Wave being viewed must have
       the ‘public@a.gwave.com’ user added


Monday, August 31, 2009
Gadget API
        Write Wave gadgets to use inside of
                     a Wave
         Similar to writing a Google Gadget


                  setStateCallback(callback:Function,
                          opt_context:Object)
               setParticipantCallback(callback:Function,
                          opt_context:Object)
                            wave.getState()
                       submitDelta(delta:Object)


Monday, August 31, 2009
Gadget API tips/caveats
           If you want to know when your
        gadget is loaded, register an ‘onload’
                       handler
                   The full OpenSocial API isn’t
                    supported, but its coming
              The security model is still being
             worked out - submitDelta() has no
                       restrictions.



Monday, August 31, 2009
Robot (Agent) API
                 Write your own ‘automated
               participant’ for the Wave system
        Two supported languages: Java and
                     Python
                    Runs on Google App Engine
                  Has full access to a wave - its
                      wavelets, blips, etc.



Monday, August 31, 2009
Robot (Agent) API tips/caveats
        Only runs on Google App Engine for
                       now
                   Think ‘events’ - wave events
                     received from the wave:
                          Wavelet Created/Removed
                            Participants Changed
                           Blip Deleted/Submitted
                             Document Changed



Monday, August 31, 2009
Robot (Agent) API tips/caveats
       If you’re writing in Java, you need to
      manually create your capabilities.xml
                         file
         Don’t forget to include the Wave
      client libraries as part of your project!




Monday, August 31, 2009
Conclusion


Monday, August 31, 2009
Thank you!


        Email: bedney@technicalpursuit.com




Monday, August 31, 2009
Licensing of this work
          This work is licensed under the Creative Commons Attribution-ShareAlike
          License.

          To view a copy of this license, visit
             http://creativecommons.org/licenses/by-sa/1.0
          or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford,
          California 94305, USA.

          In addition to the rights and restrictions common to all Creative Commons
          licenses, the Attribution-ShareAlike License features the following key
          conditions:

          Attribution. The licensor permits others to copy, distribute, display, and
          perform the work. In return, licensees must give the original author credit.

          Share Alike. The licensor permits others to distribute derivative works under a
          license identical to the one that governs the licensor’s work.

                           Questions? Email bedney@technicalpursuit.com




Monday, August 31, 2009

Contenu connexe

En vedette

Collaborative Mapping with Google Wave
Collaborative Mapping with Google WaveCollaborative Mapping with Google Wave
Collaborative Mapping with Google WavePamela Fox
 
Google Wave 20/20: Product, Protocol, Platform
Google Wave 20/20: Product, Protocol, PlatformGoogle Wave 20/20: Product, Protocol, Platform
Google Wave 20/20: Product, Protocol, PlatformPamela Fox
 
Waves of Innovation: Using Google Wave in the ESL Classroom
Waves of Innovation: Using Google Wave in the ESL ClassroomWaves of Innovation: Using Google Wave in the ESL Classroom
Waves of Innovation: Using Google Wave in the ESL ClassroomDavid Bartsch
 
What Is Google Wave?
What Is Google Wave?What Is Google Wave?
What Is Google Wave?Mark Fidelman
 
Email Is So 1973
Email Is So 1973Email Is So 1973
Email Is So 1973Red Magma
 

En vedette (8)

Google Wave
Google WaveGoogle Wave
Google Wave
 
Collaborative Mapping with Google Wave
Collaborative Mapping with Google WaveCollaborative Mapping with Google Wave
Collaborative Mapping with Google Wave
 
Google Wave 20/20: Product, Protocol, Platform
Google Wave 20/20: Product, Protocol, PlatformGoogle Wave 20/20: Product, Protocol, Platform
Google Wave 20/20: Product, Protocol, Platform
 
Waves of Innovation: Using Google Wave in the ESL Classroom
Waves of Innovation: Using Google Wave in the ESL ClassroomWaves of Innovation: Using Google Wave in the ESL Classroom
Waves of Innovation: Using Google Wave in the ESL Classroom
 
Google wave
Google wave Google wave
Google wave
 
What Is Google Wave?
What Is Google Wave?What Is Google Wave?
What Is Google Wave?
 
Email Is So 1973
Email Is So 1973Email Is So 1973
Email Is So 1973
 
Google Wave
Google WaveGoogle Wave
Google Wave
 

Similaire à Wave Presentation

Non-Relational Databases & Key/Value Stores
Non-Relational Databases & Key/Value StoresNon-Relational Databases & Key/Value Stores
Non-Relational Databases & Key/Value StoresJoël Perras
 
Agile Development with PHP in Practice
Agile Development with PHP in PracticeAgile Development with PHP in Practice
Agile Development with PHP in PracticeLars Jankowfsky
 
ATA 2009 Seminar U Dierk Seeburg
ATA 2009 Seminar U Dierk SeeburgATA 2009 Seminar U Dierk Seeburg
ATA 2009 Seminar U Dierk SeeburgDierk Seeburg
 
Code Quality in Ruby and Java
Code Quality in Ruby and JavaCode Quality in Ruby and Java
Code Quality in Ruby and JavaSteve Hayes
 
Introducing Ext GWT 3
Introducing Ext GWT 3Introducing Ext GWT 3
Introducing Ext GWT 3Sencha
 
Intro Agile Software Development with Scrum for Campus Party 2009
Intro Agile Software Development with Scrum for Campus Party 2009Intro Agile Software Development with Scrum for Campus Party 2009
Intro Agile Software Development with Scrum for Campus Party 2009Antonio Silveira
 
Scaling websites with RabbitMQ A(rlvaro Videla)
Scaling websites with RabbitMQ   A(rlvaro Videla)Scaling websites with RabbitMQ   A(rlvaro Videla)
Scaling websites with RabbitMQ A(rlvaro Videla)Ontico
 
Aaron Quint - Ruby Kaigi Presentation
Aaron Quint - Ruby Kaigi PresentationAaron Quint - Ruby Kaigi Presentation
Aaron Quint - Ruby Kaigi Presentationquirkey
 

Similaire à Wave Presentation (8)

Non-Relational Databases & Key/Value Stores
Non-Relational Databases & Key/Value StoresNon-Relational Databases & Key/Value Stores
Non-Relational Databases & Key/Value Stores
 
Agile Development with PHP in Practice
Agile Development with PHP in PracticeAgile Development with PHP in Practice
Agile Development with PHP in Practice
 
ATA 2009 Seminar U Dierk Seeburg
ATA 2009 Seminar U Dierk SeeburgATA 2009 Seminar U Dierk Seeburg
ATA 2009 Seminar U Dierk Seeburg
 
Code Quality in Ruby and Java
Code Quality in Ruby and JavaCode Quality in Ruby and Java
Code Quality in Ruby and Java
 
Introducing Ext GWT 3
Introducing Ext GWT 3Introducing Ext GWT 3
Introducing Ext GWT 3
 
Intro Agile Software Development with Scrum for Campus Party 2009
Intro Agile Software Development with Scrum for Campus Party 2009Intro Agile Software Development with Scrum for Campus Party 2009
Intro Agile Software Development with Scrum for Campus Party 2009
 
Scaling websites with RabbitMQ A(rlvaro Videla)
Scaling websites with RabbitMQ   A(rlvaro Videla)Scaling websites with RabbitMQ   A(rlvaro Videla)
Scaling websites with RabbitMQ A(rlvaro Videla)
 
Aaron Quint - Ruby Kaigi Presentation
Aaron Quint - Ruby Kaigi PresentationAaron Quint - Ruby Kaigi Presentation
Aaron Quint - Ruby Kaigi Presentation
 

Dernier

UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7DianaGray10
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Commit University
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 

Dernier (20)

201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7UiPath Studio Web workshop series - Day 7
UiPath Studio Web workshop series - Day 7
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 

Wave Presentation

  • 2. Google Wave for Developers A Quick Overview Google Wave Hackfest STL William J. Edney bedney@technicalpursuit.com © 2007 William J. Edney Last updated 20090824 You are free to use this work, with certain restrictions. For full licensing information, please see the last slide/page. Monday, August 31, 2009
  • 3. What is Wave?  Email re-imagined  A unification of email, IM, blogs and wikis  A new collaborative platform Monday, August 31, 2009
  • 11. But wait… there’s more… Monday, August 31, 2009
  • 12. But wait… there’s more… A lot more for developers… A real platform Monday, August 31, 2009
  • 13. But wait… there’s more… A lot more for developers… A real platform  Client Monday, August 31, 2009
  • 14. But wait… there’s more… A lot more for developers… A real platform  Client  Server Monday, August 31, 2009
  • 15. But wait… there’s more… A lot more for developers… A real platform  Client  Server  Protocols (several, in fact) Monday, August 31, 2009
  • 18. A Wave  What the user sees in the ‘email-like’ Web client  A threaded discussion  A logical grouping of wavelets Monday, August 31, 2009
  • 19. A Wavelet  A container for 1..n blips  Can have 1..n participants  Entity that is hosted  Manages access control Monday, August 31, 2009
  • 24. A Blip  A single message  Uses a Document to hold content  Blips can be nested in other blips  Uses Annotations to hold metadata Monday, August 31, 2009
  • 27. A Document  Holds the content of a blip Monday, August 31, 2009
  • 28. An Annotation  Holds metadata, like formatting  Unlike HTML, formatting information is not embedded in a Wave Document Monday, August 31, 2009
  • 29. A Participant  An entity that can create or edit waves  Can be a human  Can be a robot (agent) Monday, August 31, 2009
  • 40. Multi-client / single-server GWT protocol Monday, August 31, 2009
  • 41. Multi-client / single-server GWT protocol Google protobuf Monday, August 31, 2009
  • 42. Multi-client / single-server GWT protocol Google protobuf Google protobuf Monday, August 31, 2009
  • 43. Multi-client / single-server GWT protocol JSON-RPC Google protobuf Google protobuf Monday, August 31, 2009
  • 47. Multi-client / multi-server Wave Federation Protocol (XMPP- based) Monday, August 31, 2009
  • 48. Operational Transformation Monday, August 31, 2009
  • 49. Wave is a multi-user, real-time environment How do we keep things in sync? Monday, August 31, 2009
  • 50. Changes to a document can be modeled as operations  Operations can be transformed into other operations  Operations can be composed (condensed) into other operations Monday, August 31, 2009
  • 51. Operations Example Skip 8 ElementStart tagName: “li” Insert “hello” ElementEnd Monday, August 31, 2009
  • 52. Operations are how changes are modeled  Operations can be transformed into other operations  Operations can be composed (condensed) into other operations Monday, August 31, 2009
  • 55. Editors do not produce HTML  Editors extract operations against documents and store ‘metadata’ like formatting in annotations  Editors perform operations against documents and, using formatting metadata in annotations, produce the visible result Monday, August 31, 2009
  • 57. Embed API  Embed the Wave ‘editor’ GUI into a web page loadWave(waveId:String, opt_loadCallback:Function) addParticipant() addReply() Monday, August 31, 2009
  • 58. Embed API tips  For now, you must be logged in to Wave in order to view a Wave on a web page  The Wave ID can only be determined from the full client - see the “Debug” menu  The Wave being viewed must have the ‘public@a.gwave.com’ user added Monday, August 31, 2009
  • 59. Gadget API  Write Wave gadgets to use inside of a Wave  Similar to writing a Google Gadget setStateCallback(callback:Function, opt_context:Object) setParticipantCallback(callback:Function, opt_context:Object) wave.getState() submitDelta(delta:Object) Monday, August 31, 2009
  • 60. Gadget API tips/caveats  If you want to know when your gadget is loaded, register an ‘onload’ handler  The full OpenSocial API isn’t supported, but its coming  The security model is still being worked out - submitDelta() has no restrictions. Monday, August 31, 2009
  • 61. Robot (Agent) API Write your own ‘automated participant’ for the Wave system  Two supported languages: Java and Python  Runs on Google App Engine  Has full access to a wave - its wavelets, blips, etc. Monday, August 31, 2009
  • 62. Robot (Agent) API tips/caveats  Only runs on Google App Engine for now  Think ‘events’ - wave events received from the wave: Wavelet Created/Removed Participants Changed Blip Deleted/Submitted Document Changed Monday, August 31, 2009
  • 63. Robot (Agent) API tips/caveats  If you’re writing in Java, you need to manually create your capabilities.xml file  Don’t forget to include the Wave client libraries as part of your project! Monday, August 31, 2009
  • 65. Thank you! Email: bedney@technicalpursuit.com Monday, August 31, 2009
  • 66. Licensing of this work This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0 or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. In addition to the rights and restrictions common to all Creative Commons licenses, the Attribution-ShareAlike License features the following key conditions: Attribution. The licensor permits others to copy, distribute, display, and perform the work. In return, licensees must give the original author credit. Share Alike. The licensor permits others to distribute derivative works under a license identical to the one that governs the licensor’s work. Questions? Email bedney@technicalpursuit.com Monday, August 31, 2009