wave presentation

66
Google Wave Monday, August 31, 2009

Post on 17-Oct-2014

3.269 views

Category:

Technology


2 download

DESCRIPTION

A presentation on Google Wave (well, at least what was known as of Aug 25th, 2009 ;-) )

TRANSCRIPT

Page 1: Wave Presentation

Google Wave

Monday, August 31, 2009

Page 2: Wave Presentation

© 2007 William J. EdneyLast updated 20090824

You are free to use this work, with certain restrictions.For full licensing information, please see the last slide/page.

Google Wave Hackfest STLWilliam J. Edney

[email protected]

A Quick OverviewGoogle Wave for Developers

Monday, August 31, 2009

Page 3: Wave Presentation

What is Wave?

Email re-imagined A unification of email, IM, blogs

and wikis A new collaborative platform

Monday, August 31, 2009

Page 4: Wave Presentation

Monday, August 31, 2009

Page 5: Wave Presentation

Monday, August 31, 2009

Page 6: Wave Presentation

Monday, August 31, 2009

Page 7: Wave Presentation

Monday, August 31, 2009

Page 8: Wave Presentation

Monday, August 31, 2009

Page 9: Wave Presentation

Monday, August 31, 2009

Page 10: Wave Presentation

Monday, August 31, 2009

Page 11: Wave Presentation

But wait… there’s more…

Monday, August 31, 2009

Page 12: Wave Presentation

But wait… there’s more…A lot more for developers…

A real platform

Monday, August 31, 2009

Page 13: Wave Presentation

But wait… there’s more…A lot more for developers…

A real platform Client

Monday, August 31, 2009

Page 14: Wave Presentation

But wait… there’s more…A lot more for developers…

A real platform Client Server

Monday, August 31, 2009

Page 15: Wave Presentation

But wait… there’s more…A lot more for developers…

A real platform Client Server

Protocols (several, in fact)

Monday, August 31, 2009

Page 16: Wave Presentation

Monday, August 31, 2009

Page 17: Wave Presentation

Terminology

Monday, August 31, 2009

Page 18: Wave Presentation

A Wave What the user sees in

the ‘email-like’ Web client A threaded discussion

A logical grouping of wavelets

Monday, August 31, 2009

Page 19: Wave Presentation

A Wavelet A container for 1..n blips Can have 1..n participants

Entity that is hosted Manages access control

Monday, August 31, 2009

Page 20: Wave Presentation

Monday, August 31, 2009

Page 21: Wave Presentation

Monday, August 31, 2009

Page 22: Wave Presentation

Monday, August 31, 2009

Page 23: Wave Presentation

Monday, August 31, 2009

Page 24: Wave Presentation

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

Page 25: Wave Presentation

Monday, August 31, 2009

Page 26: Wave Presentation

Monday, August 31, 2009

Page 27: Wave Presentation

A Document Holds the content of a blip

Monday, August 31, 2009

Page 28: Wave Presentation

An Annotation Holds metadata, like formatting

Unlike HTML, formatting information is not embedded in a

Wave Document

Monday, August 31, 2009

Page 29: Wave Presentation

A Participant An entity that can create or edit

waves Can be a human

Can be a robot (agent)

Monday, August 31, 2009

Page 30: Wave Presentation

Architecture

Monday, August 31, 2009

Page 31: Wave Presentation

Monday, August 31, 2009

Page 32: Wave Presentation

Monday, August 31, 2009

Page 33: Wave Presentation

Monday, August 31, 2009

Page 34: Wave Presentation

Monday, August 31, 2009

Page 35: Wave Presentation

Monday, August 31, 2009

Page 36: Wave Presentation

Monday, August 31, 2009

Page 37: Wave Presentation

Monday, August 31, 2009

Page 38: Wave Presentation

Monday, August 31, 2009

Page 39: Wave Presentation

Multi-client / single-server

Monday, August 31, 2009

Page 40: Wave Presentation

Multi-client / single-server

GWT protocol

Monday, August 31, 2009

Page 41: Wave Presentation

Multi-client / single-server

GWT protocol

Google protobuf

Monday, August 31, 2009

Page 42: Wave Presentation

Multi-client / single-server

GWT protocol

Google protobuf Google protobuf

Monday, August 31, 2009

Page 43: Wave Presentation

Multi-client / single-server

GWT protocol

Google protobuf Google protobuf

JSON-RPC

Monday, August 31, 2009

Page 44: Wave Presentation

Multi-client / multi-server

Monday, August 31, 2009

Page 45: Wave Presentation

Multi-client / multi-server

Monday, August 31, 2009

Page 46: Wave Presentation

Multi-client / multi-server

Monday, August 31, 2009

Page 47: Wave Presentation

Multi-client / multi-server

Wave Federation

Protocol (XMPP-based)

Monday, August 31, 2009

Page 48: Wave Presentation

OperationalTransformation

Monday, August 31, 2009

Page 49: Wave Presentation

Wave is a multi-user, real-time environment

How do we keep things in sync?

Monday, August 31, 2009

Page 50: Wave Presentation

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

Page 51: Wave Presentation

Operations Example

Skip 8

ElementStarttagName: “li”

Insert“hello”

ElementEnd

Monday, August 31, 2009

Page 52: Wave Presentation

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

Page 53: Wave Presentation

Concurrency (naive)Concurrency (the naive way)

Monday, August 31, 2009

Page 54: Wave Presentation

Concurrency (correct)Concurrency (the correct way)

Monday, August 31, 2009

Page 55: Wave Presentation

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

Page 56: Wave Presentation

API

Monday, August 31, 2009

Page 57: Wave Presentation

Embed API Embed the Wave ‘editor’ GUI into a

web page

loadWave(waveId:String,opt_loadCallback:Function)

addParticipant()

addReply()

Monday, August 31, 2009

Page 58: Wave Presentation

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 ‘[email protected]’ user added

Monday, August 31, 2009

Page 59: Wave Presentation

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

Page 60: Wave Presentation

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

Page 61: Wave Presentation

Robot (Agent) APIWrite 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

Page 62: Wave Presentation

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 ChangedBlip Deleted/Submitted

Document Changed

Monday, August 31, 2009

Page 63: Wave Presentation

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

Page 64: Wave Presentation

Conclusion

Monday, August 31, 2009

Page 65: Wave Presentation

Thank you!

Email: [email protected]

Monday, August 31, 2009

Page 66: Wave Presentation

Licensing of this workThis 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.0or 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 [email protected]

Monday, August 31, 2009