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