SlideShare uma empresa Scribd logo
1 de 66
Baixar para ler 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

Mais conteúdo relacionado

Destaque

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
 

Destaque (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
 

Semelhante a 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
 

Semelhante a 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
 

Último

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 

Último (20)

Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 

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