wave presentation

Post on 17-Oct-2014

3.266 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

Google Wave

Monday, August 31, 2009

© 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

bedney@technicalpursuit.com

A Quick OverviewGoogle Wave for Developers

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

Google protobuf Google protobuf

JSON-RPC

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

OperationalTransformation

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

ElementStarttagName: “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)Concurrency (the naive way)

Monday, August 31, 2009

Concurrency (correct)Concurrency (the correct way)

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

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

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 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 bedney@technicalpursuit.com

Monday, August 31, 2009

top related