google wave
DESCRIPTION
High level overview of Google Wave technologyTRANSCRIPT
Monika Adamczyk
Software Architect, MACO TECH INC
http://www.maco-tech.com
AGENDA
Google Wave Overview
Wave Embed API
Wave Extensions
Wave Gadgets API
Wave Robots API
Google Wave Sandbox Demo
Q&A
WHAT IS GOOGLE WAVE
New tool for communication and collaboration on web
A wave is equal parts conversation and document
It combines email with instant messaging and real-time collaborations
HOW WAVE WORKS
Wave is created by one participant
Other participants are added to the wave
Everyone can use richly formatted text, photos, gadgets etc.
Participants can insert a reply or edit the wave directly
Participants can see on screen nearly instantly what others are typing in the wave
Participants can use “playback” capabilities to rewind the wave and see how it evolved
BASIC WAVE ENTITIES
Participants – human participants and robots
Wave – threaded conversation with one or more participants
Wavelet – threaded conversation that is spawned from a wave
Blip – basic unit of conversation which consists a single message
GOOGLE WAVE API
Embedded Waves – developers can enhance existing web applications by embedding Google Wave directly in their applications
Extensions – developers can enhance Google Wave by authoring mini-applications that interact with wave Robots
Gadgets
Extension Installers which bundle up Backend (robots and gadgets) and Frontend UI elements into an integrated package (currently supported only in Google Wave client)
WAVE EMBED ARCHITECTURE
<script include…/>
Web Page
Wave Client Wave Server
WAVE EMBED API
Methods
LoadWave
SetUIConfig
Add Reply
Follow
SAMPLE FOR EMBEDDED WAVE<html >
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>Google Wave Embed API Example: Simple Wave</title>
<script src="http://wave-api.appspot.com/public/embed.js"
type="text/javascript"></script>
<script type="text/javascript">
function initialize() {
var wavePanel = new WavePanel('http://wave.google.com/a/wavesandbox.com/');
wavePanel.loadWave('wavesandbox.com!w+waveID');
wavePanel.init(document.getElementById('waveframe'));
}
</script>
</head>
<body onload="initialize()">
<div id="waveframe" style="width: 500px; height: 100%"></div>
</body>
</html>
EMBEDDED WAVE EXAMPLE
EXTENSION TYPES
Robots
Software backed wave participants
Commonly used for automated tasks
Can interact with the conversation based on their capabilities
Gadgets
Shared programs which run within the wave
All participants of the wave have access to it
ROBOT VS. GADGET COMPARISONRobot Gadget
Runs on application servers and interact with the wave over a protocol
Only one instance of each robot per wave
Robots can modify a wave and perform the same operations as human participant
Robots can modify a Gadget
Runs within the wave client itself
A gadget can have multiple instances, one per participant interacting with it
Gadgets can’t modify a wave and have limited visibility into the wave
Gadgets don’t know that a robot exists and can’t modify it
WAVE GADGET ARCHITECTURE
Multiple clients talking to the Wave Server using Wave XML
John’s client
Gadget in iFrame
Wave HXML
Jane’s client
Bill’s client
Wave Server
HELLO WORLD GADGET
<?xml version="1.0" encoding="UTF-8" ?>
<Module><ModulePrefs title="Hello Wave"><Require feature="wave" />
</ModulePrefs><Content type="html"><![CDATA[
Hello, Wave!]]>
</Content></Module>
declares that the gadget has access to the Wave Gadgets API
WAVE GADGET API
Wave
getParticipants(), getState(), getMode(), getTime(), getViewer(), getHost(), setParticipantCalback(), setStateCallback()
State
getKeys(), submitDelta(delta), submitValue(delta), getKey(kep, opt_default)
Participant
getId(), getDisplayName(), getThumbnailUrl()
GADGET EXAMPLES
WAVE ROBOT ARCHITECTUREJohn’s client
Wave Server
SpellyRobot Proxy
Linky
App Engine
*Currently all robots run on App Engine
WAVE ROBOT API
Model
TextView,
GadgetView
FormView
Events
Wavelets (BlipCreate, ParticipantChange, TitleChanged
Blips (ContributorsChanged, BlipDeleted, BlipSubmitted, DocumentChanged)
Form (ButtonClicked)
WAVE ROBOT API (cont.)
Operations
Wavelet (AppendBlip, AddParticipant, Create, RemoveSelf, SetDataDoc, SetTitle, CreateBlip)
Blip (CreateChild, Delete)
Annotation (Delete, Set)
Document (Append, AppendStyleId, Insert, Delete, Replace, Elements, InlineBlip
ROBOT EXAMPLES
Polly
Handles the flow of polling
Uses input forms within wave
Bloggy
Publishes waves to a blog
Linky
Generates URL links in blips
Tweety
Synch between waves and Twitter
GOOGLE WAVE RESOURCES
Google Wave Main Hub http://wave.google.com/
Wave Account Signup: Developer - https://services.google.com/fb/forms/wavesignupfordev/ Non-developer - https://services.google.com/fb/forms/wavesignup/
Google Wave API http://code.google.com/apis/wave/
Google Wave Protocol http://www.waveprotocol.org/
Google Wave Developer Blog http://googlewavedev.blogspot.com/
Google Wave Discussion Groups Google Wave API – http://groups.google.com/group/google-wave-api Google Wave Protocol - http://groups.google.com/group/wave-protocol