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

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
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 CVKhem
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
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...Neo4j
 
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 organizationRadu Cotescu
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
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 DevelopmentsTrustArc
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
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 Takeoffsammart93
 
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...DianaGray10
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024SynarionITSolutions
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 

Dernier (20)

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
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...
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
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
 
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...
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

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