Google Wave: Under the hood

Author: Casey Whitelaw, Dan Danilatos, Alex Mah, David Wang. Link to original: (English).
Tags: Google, Google I-O, Google Wave, internet, subtitles, video, Wave, web Submitted by ruguevara 08.07.2009. Public material.
We will explore the technology stack underlying Google Wave, from the bottom up. Google Wave's real-time collaboration is based on operational transformation algorithms, which we extended to support our data model of structured data and annotations. Our AJAX editor renders wave content and sends and receives fine-grained changes down to the level of keystrokes. Our context-sensitive spelling system shows how this stack enables new kinds of interactivity.

Translations of this material:

into Russian: Google Wave: Под капотом. Translation complete.
Submitted for translation by ruguevara 08.07.2009 Published 9 years, 3 months ago.


Hannon: Welcome.

Thank you for coming
to our session,

Google Wave: Under the Hood.

We hope you enjoyed
the demo this morning

And we're really excited
to tell you

about the technology
that makes this all possible.

We have four amazing engineers
coming up here to talk to you

starting with David Wang,
then Alex Mah,

then Dan Danilatos,
then Casey Whitelaw.

They're going to show you
those algorithms and technology

that make the real time
collaboration possible.

They're going to talk
about the extensibility

of our editor,
and--and how we built it,

and what's special about it.

And finally, you saw
our spell checker this morning.

And, um, Casey will come
and talk about,

uh, the technology

and--and what makes that

And we just really, really
appreciate you being here

and for all your interest
and excitement

about Google Wave.

I just want to remind you
before I turn it over to them

that you can give feedback
at haveasecond--


feedback about this sessions,
any of the other Wave sessions,

and we really look forward
to hearing from you.

So here's David.

Wang: Thank you,

All right.

So by now
you're probably thinking

what are Waves in terms
of a technology perspective?

Waves are essentially
hosted XML documents.

Um, they can be used
to represent rich text content

and system data as well.

Waves also support
live collaboration,

which you've seen
in Lars' demos.

And that means being able
to look at the same Wave

on multiple clients.

And in one client,
being able to type.

And on the other clients,

being able to see those typing
coming out

character by character
and in real time as well.

Wave is also a robust
and extendable platform

which allows you to build
extensions on top.

And I hope that you visited

the, uh, Extensions talk

Okay. So in this talk,
we'll first talk

about concurrency control,

which makes the live,
collaborative editing possible.

And then we'll talk
about the editor,

which actually allows you
to input and display

the live characters.

And at the very end
of the talk,

uh, we'll tell you
about our cool spelling agent,

um, which is enabled
by this web technology.

All right,
so let me start off

by talking
about concurrency control.

So some of you guys
who's, um, familiar

with concurrent editors,

the real--you'll realize
there's actually a number

of concurrent editors
on a--um, out there already.

There's, uh, EtherPad
and there's Subetha Edit.

They support live,
concurrent editing,

but they don't support
rich text.

There are other
rich text editors

like Google Documents.

But it doesn't really support
live and concurrent editing.

For Google Wave,
we wanted both.

And so we looked
to this technology

called Operational

And our starting point
was the paper called

Low-Bandwith Windowing

in the Jupiter
Collaboration System."

Two of these two--
um, two of the four authors,

uh, Mike--uh, Michael Dixon
and John Lamping,

actually worked for Google

and they've been very helpful
to us in the early establishment

of our concurrency control.

So how does Operational
Transformation work?

So let me explain it
through a very simple example.

Imagine there is
a client and server

who wants to concurrently modify
a single piece of text ABCDE.

Now imagine the client
wants to delete character four.

Uh, in this case,
um, you want to delete D.

So the client deletes
the character

and sends the operation
on the wire.

And the client
is now at a state ABCE.

Now the client sends
an operational wire

because it's much cheaper
than sending the entire document

on the wire.

Um, the server,
on the other hand,

wants to actually delete
character two.

So it goes ahead
and deletes it.

Ends up in a state A, C,
uh, D and E.

And now those two operations
cross on the wire.

If the server goes
and naively executes

the client operation
"delete character four,"

the server ends up
in a state A, C and D.

It didn't actually perform
the correct operation

at the end of the day
because it deleted

Pages: ← previous Ctrl next
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

© Google Inc.. License: Creative Commons