SlideShare a Scribd company logo
1 of 66
Download to read offline
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

More Related Content

Viewers also liked (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
 

Similar to Wave Presentation

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 Presentation
quirkey
 

Similar to 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
 

Recently uploaded

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
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
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...
 
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
 
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?
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
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
 
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
 
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...
 
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
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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...
 
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
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

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