wave presentation
Post on 17-Oct-2014
3.269 views
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
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 ‘[email protected]’ 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
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