-
man: Ladies and gentlemen,
-
please welcome Vice President, Engineering, Vic Gundotra.
-
[cheers and applause]
-
Gundotra: Well, good morning, everyone.
-
Welcome to day two of Google I/O.
-
I hope you all had a great time yesterday.
-
I hope you enjoyed your sessions,
-
and I hope you enjoyed those Android phones.
-
[audience whoos]
-
[cheers and applause]
-
Yesterday, we promised you a surprise for this morning.
-
And this morning, Google will surprise you.
-
We are about to unveil
-
a personal communication and collaboration tool
-
in a very early form.
-
We decided to do this at this forum
-
for a couple of reasons.
-
This unbelievable product,
-
one that I'm very, very excited about,
-
will be open-sourced.
-
It's open-sourced for many reasons.
-
Not only do we want to contribute to the Internet,
-
but frankly, we need developers
-
to help us complete this product,
-
and we need your support.
-
So we hope after you see this
-
you're as excited about it as we are.
-
And number two,
-
we decided to unveil this product
-
in its early form at this conference
-
because it is an unbelievable, powerful demonstration
-
of what is possible in the browser.
-
I guarantee you that over the next hour and a half,
-
as you see this product, you will forget
-
that you are looking at the browser.
-
And I want you to repeat after me.
-
"I am looking at an HTML 5 app.
-
I am looking at what's possible in the browser."
-
And I hope you are as excited and delighted as I was
-
when I first saw the thinking behind this product.
-
Now, it shouldn't have surprised me
-
that this product would be magical.
-
After all, the engineering leadership
-
had already produced a magical product.
-
The engineering leadership behind what you're about to see
-
is the work of two brothers,
-
and an amazing engineering team with them.
-
Those two brothers are Lars and Jens Rasmussen.
-
You might remember those names,
-
because those were the same amazing people
-
that did another magical app called Maps--Google Maps.
-
And so you'll see what they've been working on
-
unveiled for the first time today.
-
So why don't we go ahead and get started?
-
Remember, this is an early developer preview
-
for this audience.
-
Everyone in this room will get accounts to give us feedback,
-
and we'll talk about that a little bit later.
-
We have your email addresses, so you will get those passwords
-
a little bit later on, likely tomorrow.
-
With that, let me just go ahead and get started.
-
Let me introduce Lars Rasmussen and Stephanie Hannon.
-
Thank you.
-
[cheers and applause]
-
Lars Rasmussen: Thank you.
-
Thank you. Thank you.
-
Thank you very much.
-
I shall wake up my laptop.
-
Good morning, everyone.
-
Thank you very much for coming early.
-
I know you've been here partying all night.
-
Uh, we're going to show a demo today
-
of a product that we've been working on
-
for a couple of years down in Sydney, Australia.
-
It's called Google Wave,
-
and it's a communication and collaborations tool
-
that we're launching later in the year.
-
Uh, like Vic said, it's a little unusual for us
-
to be showing it to the world this early.
-
The reason we're doing it is very simple.
-
We're starting a developer preview today.
-
You guys will all get accounts
-
on a sandbox build of the system.
-
You are the first outside of Google to see this,
-
and you'll be the first to get accounts on the system.
-
And we're doing that because as you will see from the demo,
-
Google Wave comes with a set of really nice APIs,
-
and we're hoping we can persuade you guys
-
to start building cool things with those APIs
-
while we're getting the product ready for launch,
-
which is going to happen later this year.
-
Because that way, when we do launch,
-
our users and your users can enjoy both Google Waves
-
and all the cool things that we hope you'll build
-
at the same time.
-
Let me introduce Stephanie Hannon.
-
She's quite possibly the best PM in the world.
-
[cheers and applause]
-
Hannon: [laughs]
-
Good morning, I/O.
-
Thank you, Vic, for the invitation to be here.
-
We couldn't imagine a better audience
-
to show our product to first.
-
Lars Rasmussen: I second that.
-
Hannon: Our presentation today is in three parts.
-
First, we're going to show you a demo of the product.
-
Second, we'll show you the APIs that Lars talked about.
-
You can use Waves to enhance your Web site
-
and you can build extensions to Wave itself.
-
Third, we'll show you that Wave is also a protocol.
-
We are very passionate about this being
-
an open system of communication.
-
We hope other people build Wave services
-
that interoperate with ours
-
so users have choice in their provider.
-
We affectionately call this the three Ps.
-
Product, platform, protocol.
-
And we'll talk about them all today.
-
Lars Rasmussen: Okay, so communication.
-
Um, email today is by far the most popular way
-
for us to communicate on the Internet,
-
which is remarkable,
-
because email was invented more than 40 years ago.
-
before the Internet, before the Web,
-
and it was done without the experience
-
of things like SMS, and instant messenging,
-
and blogs, and Wikis, and bulletin boards,
-
and discussion groups, and social networks, and Wikis,
-
and media sharing sites, and collaborative editors--
-
All of these different kinds of communication
-
that we take for granted today.
-
Also, of course, computers and networks
-
have dramatically improved in those four decades,
-
and so when we started this project--
-
and it's been more than two years--
-
we asked ourselves the question,
-
"what might email look like if it was invented today?"
-
And needless to say, there is about a million
-
different ways you can answer that question.
-
What you're going to see today, Google Wave, is our attempt.
-
And so let me start by briefly contrasting
-
email from Wave.
-
Email essentially mimics snail mail.
-
The basic metaphor is you write a message
-
and you send it to one or more recipients,
-
and then email systems--
-
and we like to think Gmail does this particularly well--
-
can collate related messages into conversations or threads.
-
Wave, by contrast, starts out
-
with the definition of a conversation,
-
which is simply a lightweight tree structure of messages
-
and a set of users participating in that conversation.
-
And then instead of thinking of individual messages
-
as being sent back and forth,
-
we think of the entire conversation object
-
as being a shared object hosted on a server somewhere.
-
And users that participate can open up that wave,
-
leave their replies, go away,
-
and then when the next user comes,
-
she can open up that same shared object,
-
see those replies, and add her own.
-
That's how the wave grows.
-
That's how the conversation builds up.
-
And you'll recognize that this is a model
-
that came to how bulletin boards work.
-
We found that with a tight enough implementation,
-
you can use that to build a single communication tool
-
that has functionality spanning quite a lot further
-
than what you can do with email today.
-
And so we'll show you a demo.
-
It'll take you through a series of usage scenarios
-
that you'll be familiar with,
-
but where today we would use different tools for each one,
-
and we'll show you how it all fits neatly
-
in this one metaphor of hosted conversations.
-
Stephanie.
-
Hannon: So what you are looking at is an HTML 5 app
-
that we built with the Google Web Toolkit.
-
On the left side is Lars running Chrome.
-
On the right side, I'm running Safari.
-
And a little bit later we're going to throw in Firefox.
-
So the same thing is being shown on each pair of screens,
-
you can just choose one to look at.
-
Lars Rasmussen: Okay, so we'll start
-
with plain vanilla-type email conversations,
-
and we'll show you how it looks in Wave.
-
We're planning a boat trip.
-
And I'm going to start by clicking "New Wave" here,
-
and then I'll type my title in the first line.
-
Hannon: Watch your spelling, Lars.
-
There's a lot of people.
-
Lars Rasmussen: [laughs] There is a lot of people.
-
They can't see what I'm typing anyway.
-
"Are you ready for the boat trip?
-
Hey, Steph."
-
Did you guys like the spell-checker?
-
[applause]
-
You do.
-
We'll talk more about that later.
-
Since you don't want to watch me type for an hour,
-
we put canned messages in there.
-
We'll try hard to pull them out before we launch.
-
I click "Done," it asks me for more users.
-
I'll add Stephanie.
-
And since she is offline,
-
I'm going to go stare at a blank page.
-
Hannon: So I will open Wave.
-
And you'll see in my Search panel, the middle panel,
-
will be an unread message from Lars.
-
He's asking me if I want to go shopping,
-
uh, before this boat trip,
-
so I'll do something very email like,
-
which is hit "Reply,"
-
and say, "I looove shopping."
-
Lars Rasmussen: I wrote the script.
-
Hannon: "I need new fins. Let's go."
-
The first benefit I want to show you
-
of this being a hosted conversation
-
is it's easier to keep track of structure.
-
If this was email and I wanted to reply
-
to the middle part of Lars's message
-
where he asked which bus to take,
-
I would hit "Reply," the email client would copy the message,
-
and I'd hand-edit in the response.
-
Because this is a hosted conversation
-
that lives in one place,
-
I can just instruct the server to split the message apart
-
and say, "You never wake up early,"
-
which is true.
-
"Let's take the late bus."
-
Okay, Lars isn't online; I'm going to close this wave.
-
Lars Rasmussen: So a little bit later I come back online,
-
and you'll see, for starters, that that wave is now bold
-
to show me there is new material in it.
-
When I open it up, Stephanie's first message gets the highlight
-
and I can navigate the conversation with my keyboard,
-
and of course, continue her thread here.
-
"You know me too well."
-
Like that.
-
And that's how plain vanilla email-type conversations
-
work in Wave.
-
So you've noticed that we have carefully avoided
-
having the wave open on both screens.
-
When we do have the wave open at the same time,
-
my message bounces right off the server
-
into Stephanie's browser.
-
The effect is that you can also
-
do Instant Messaging-type conversations in Wave.
-
In fact in the same wave you can switch back and forth
-
between these different ways of communicating.
-
I'll show you that now.
-
Shiny. You must know a good store.
-
[cheers and applause]
-
Hannon: There is a new one over on George Street.
-
Lars Rasmussen: Cool. Let's go at 7:00.
-
Hannon: "Sounds good. Let's invite Jens too."
-
Lars Rasmussen: "Okay."
-
So you noticed that it didn't wait for me to hit "Done"
-
before showing Stephanie the message,
-
but rather--and this was difficult to do--
-
we transmit live almost character by character
-
what I'm typing.
-
Why did we do that?
-
It's because with today instant messaging tools
-
you spend half of your time looking at it saying,
-
"Stephanie is typing, she's typing, she's typing,
-
she's typing," and then you see what she said.
-
Thank you. [laughs]
-
But because in general you can start formulating your own reply
-
before Stephanie is done typing hers,
-
by doing this live transmission,
-
you end up spending 100% of your time either reading or writing,
-
which dramatically speeds up the conversation.
-
Now needless to say, there are times
-
you don't want everyone to see every keystroke,
-
in particular if you spell like I do.
-
Um, and so we have this checkbox here.
-
All you have to do is check it
-
and now no one can see what you're typing
-
until you hit that "Done" button.
-
This is one of the features we haven't implemented quite yet.
-
[laughter]
-
Okay, so that's how email conversations,
-
or rather email-type conversations
-
and instant messaging-type conversations
-
no longer require two separate tools.
-
Next thing we want to show you is how easy it is
-
to add a new person to an ongoing conversation.
-
Can I just introduce my brother Jens, by the way?
-
Give him a hand, please.
-
[cheers and applause]
-
So we want to--
-
We want to add Jens to the conversation.
-
If this was email, I would take the last message here,
-
reply to it and add Jens to the recipient list.
-
There's two problems with that.
-
For starters,
-
because we branched the conversation up here,
-
that last email message
-
would not contain the entire conversation.
-
But also, if Stephanie then later
-
went and replied to an earlier message of mine,
-
Jens wouldn't get that anyway.
-
You end up with these cat and mouse games.
-
In the Wave model, all you have to do
-
is make Jens a participant in the wave like that.
-
And now I'll switch over to Firefox here
-
where Jens is already signed in.
-
Jens Rasmussen: So now that I'm on the wave,
-
um, I'm going to open it,
-
and, of course, everything is going to be marked
-
as unread for me.
-
But because I was added late,
-
I didn't get to see Lars's message in one piece,
-
and by the time I'm added they could be arbitrarily far apart.
-
So we added a feature called Playback.
-
So I get to see Lars's original message,
-
Lars asks Stephanie, Stephanie replies,
-
Steph does in-line reply, and so on, and so on.
-
[applause]
-
Thank you.
-
So Playback turns out to be a really useful feature,
-
particularly when the wave
-
starts picking up more structure,
-
and we'll show you more of that later.
-
But now that I've caught up on this wave,
-
I'm going to just add my reply.
-
"Me too."
-
Oh, I think I crashed.
-
Lars Rasmussen: Did I mention that it's a developer preview?
-
[laughter]
-
So we made sure to inject a few bugs
-
so that you wouldn't have too high expecta--
-
I'm just kidding.
-
Jens Rasmussen: Did you notice how quickly it reloads?
-
[laughter]
-
Did we mention we used GWT?
-
All right, so I'm going to add my reply.
-
"Me too.
-
Don't forget your keys."
-
And then I'll hand it back to Lars.
-
Lars Rasmussen: Thank you.
-
So that's how easy it is to add a new person
-
to an ongoing conversation.
-
And so often we end up having
-
very nice group conversations in Wave.
-
And then occasionally you want to say something
-
in a wave that's not visible to all the participants.
-
We call that a "Private Reply,"
-
and I'll add one down here at the bottom,
-
and I'll say,
-
"Let's buy Steph a reeeally nice present."
-
Hannon: I wrote this part.
-
Lars Rasmussen: And then I will add just Jens,
-
and you will see,
-
if I just quickly flip over to Jens's browser,
-
and scroll down,
-
he sees that private reply,
-
but if you look at Stephanie's screen,
-
she doesn't see it.
-
If you remember, I've explained
-
that a wave is a tree structure of messages.
-
Essentially you can take any sub-tree of the wave
-
and restrict access to a subset of the participants.
-
Okay, I switch back to my own account, here.
-
The next thing we want to show you
-
is how attachments work in Wave.
-
So we've been on a boat trip--
-
It was very nice, thank you--
-
And we all got pictures.
-
I have six of them sitting here on my desktop,
-
and I'm going to drag them onto the wave like this.
-
[applause]
-
Hannon: You might not have noticed,
-
but the thumbnails appeared on my screen
-
long before the full images were uploaded from Lars's computer.
-
I'll show you that again
-
by dragging in my own photos from iPhoto.
-
Ready? Here we go.
-
Lars Rasmussen: And you can see them show up over on my screen.
-
audience member: Yeah.
-
[applause]
-
Lars Rasmussen: Don't be shy, you guys.
-
If you like what you see, don't be shy letting us know.
-
[cheers and applause]
-
We can--we can handle pretty much any amount of applause.
-
[laughter]
-
Hannon: This feature--
-
drag and drop from the desktop to the browser--
-
is the one part of Wave that HTML 5 can't support yet.
-
We're working on a proposal to add it to the standard.
-
In the meantime, you need to download Gears
-
for this specific feature to work.
-
It's the only part of Wave that you need Gears for.
-
When Lars dropped in his images,
-
you might've noticed at the bottom of the Wave panel
-
there's an Image menu
-
with actions you'd probably do on images,
-
like upload or download.
-
What's important is these actions
-
apply to all the images in the wave,
-
not just the ones I dropped in,
-
which makes Wave really an easy, lightweight way
-
to create a group photo album together,
-
which is surprisingly hard to do with today's tools.
-
Lars Rasmussen: And so here's the photo album.
-
This is Captain Athena.
-
Here's the hard life down under.
-
And as advertised, you'll see over here
-
Stephanie's images show up in my slideshow
-
so that I can show you
-
just how much fun life down under is.
-
And that's images.
-
So that's how easy it is to share photos in Wave.
-
This was a group trip.
-
We'll all throw our photos in here.
-
We'd probably share it with the rest of the office
-
to make them envious.
-
In this particular case, it's not clear
-
that we want everyone to know that we went shopping together.
-
And so one of the features down here
-
lets me copy just the images
-
from this wave into a fresh wave.
-
"Boating in January.
-
Enjoy all, here and yonder."
-
And then I'll add Stephanie to this.
-
I could now share that with the rest of the office.
-
Now, this feature here of extracting images
-
from a wave and putting them in a new one
-
is actually part of a very important
-
design principle for us.
-
Namely that we care just as much
-
about the product of the wave as we do the wave itself.
-
And we'll show you more examples of that later.
-
Yes, we will.
-
Um, I forgot what's next.
-
Hannon: How 'bout we show them the embedding APIs?
-
Lars Rasmussen: Excellent idea.
-
Okay, thank you. So...
-
[laughter]
-
She's right.
-
We should've rehearsed this before coming this morning.
-
Just kidding.
-
So the first--
-
The first category of, um, APIs that we want to show you
-
are APIs that let you embed waves onto your webpage.
-
It is very similar to the Maps API,
-
which, by the way, um, thank you, everyone who used it.
-
We consider your enthusiasm for that API
-
an enormous factor in that product's success,
-
and we're hoping, obviously, to repeat that with Wave.
-
Hannon: Give a round of applause to themselves.
-
Lars Rasmussen: Oh, yeah, a round of applause to yourself.
-
Well done. [applause]
-
Lars Rasmussen: Okay, so... Hannon: Yay, developers!
-
Lars Rasmussen: Here's an example application.
-
It's a little blogging site we've built.
-
It's over on Google App Engine,
-
but you could build it anywhere you host your website.
-
And this blogging site--
-
In addition to embedding waves on its pages,
-
it provides me with this robotic participant
-
that we affectionately call Bloggy.
-
All I have to do is add Bloggy to the wave,
-
and now you'll see--
-
You can probably not read that,
-
but on that yellow banner,
-
all users on the wave is now warned that Bloggy,
-
this new participant, has published the blog
-
on a page which we built over an app engine.
-
Can I just introduce Gregory Delasander?
-
He's another PM on the team.
-
[cheers and applause]
-
And he's going to show you the blog site now.
-
Delasander: Hi, I'm Greg,
-
and I'm a huge fan of Lars's blog,
-
just like everybody on the team is told they should be.
-
I'm going to show you... Hannon: He makes us read it.
-
Lars Rasmussen: It's a good blog. Come on.
-
Delasander: Oh, hold on just a second.
-
Did we lose...
-
Hannon: Did we lose VPN?
-
Delasander: Yes, I think we might have.
-
Hannon: Lars, this is where you do the dance.
-
Delasander: Lars, dance a little bit.
-
Lars Rasmussen: Everyone look at me.
-
Don't look at his screen.
-
[humming]
-
The Wave dance.
-
Delasander: I think we lost all connectivity.
-
Lars Rasmussen: Neener, neener. Neener, neener.
-
There's not a-- Delasander: And then...
-
Lars Rasmussen: There's not a lot of people in the world
-
that can have their demos as spectacularly fail
-
in front of 4,000 people and not break a sweat.
-
Hannon: It wasn't the demo, it was the network.
-
Lars Rasmussen: We wish we were one of them.
-
Delasander: Excellent.
-
Lars Rasmussen: I think your proxy server might be missing.
-
Oh, there we go. Hannon: All right, we're back.
-
Delasander: So as I was saying...
-
The blog.
-
So in the blog, one of the cool things you'll s--
-
you can see is that we're not just embedding the images,
-
we're actually embedding the whole wave
-
with all of its UI.
-
This means that I can respond.
-
"Hey, that looks fun. Why wasn't I invited?"
-
[cheers and applause]
-
The same way we embed--
-
And we--we do--
-
You can respond in the same way you do in the Wave client.
-
Lars Rasmussen: Exactly.
-
And so now, I can see, obviously, uh,
-
Greg's question from inside my Wave client.
-
I can answer from in here.
-
I don't have to go to the blog site to do that.
-
I could if I wanted to, but I can stay here.
-
"Um, I lost the phone with your number."
-
I really, truly can't spell.
-
Here we go.
-
Delasander: So one of the things you just saw
-
is that I happened to be online when Lars was online,
-
and I saw his response coming in live on his blog.
-
That's not always going to be the case.
-
Since I responded to this blog,
-
it'll show up in my Wave client.
-
Right after I refresh my Wave client.
-
Um, it will show up in my Wave client
-
and I can continue the conversation in there.
-
"But, Lars, I live next door."
-
[laughter]
-
And, um-- And then we can--
-
That response shows up on the blog,
-
we can continue the conversation from there,
-
and anyone else can join in that conversation.
-
Lars Rasmussen: Thank you, Greg. Delasander: No problem.
-
[applause]
-
Lars Rasmussen: Thank you.
-
And so this, again, is an example
-
of how to use our embedding APIs to put blogs on your web pages,
-
and here we showed you with a blogging site,
-
but you could imagine discussion group sites,
-
community forums--
-
if you have a rich-media site
-
you can let your users discuss that using waves.
-
The benefit for developers, of course,
-
is you get to provide this very live, rich experience
-
with very little code.
-
For your users, for starters, they get to use a familiar UI,
-
but for those of your users that have Wave accounts,
-
they get to walk around the Web
-
and aggregate the conversations they're interested in
-
into the Wave client so that they don't
-
have to go check back on 10,000 different pages
-
whether someone responded to them.
-
Which will make flame wars so much more effective.
-
[laughter]
-
She hates that joke.
-
Hannon: I hate it. [laughs]
-
Lars Rasmussen: Okay.
-
So that was an example of how to embed waves.
-
The embedding APIs can do other things,
-
and Stephanie will show you that now.
-
Hannon: So we invited some of our colleagues
-
from Brazil and India to Sydney
-
who work on one of our social networks called Orkut.
-
We wanted to build a demo of what it could look like
-
to put waves inside of Orkut.
-
Obviously, it's a place where lots of discussions happen.
-
It demonstrates three important principles,
-
or features, of our embed API.
-
Let me load up the demo.
-
So here's my Orkut account.
-
And you can see there's a Wave panel in the middle.
-
And the first thing is I can create a wave on Orkut.
-
So I'm starting a new wave, and I'll say, "Brazil trip?
-
Wonder when Lars will let me go."
-
The second important feature is that you can
-
use contacts other than your Wave contacts.
-
In this case, the authors of the site
-
chose to use the Orkut contacts,
-
so I can add some of my Orkut friends
-
like Sid, Torston, and Rodrigo,
-
who all helped build this demo.
-
The third principle is that I can embed a "Search" panel
-
inside of Orkut using the embed API.
-
I'll show you that now.
-
I can search for all my waves from here.
-
And so on. And look at them.
-
So that's waves embedded in Orkut.
-
What's important is that our embed API
-
is powerful enough for you to build your own Wave client.
-
In this case, the Orkut team
-
chose to focus on waves created inside of Orkut.
-
But just like in the blog example,
-
I can go back to my Wave client,
-
and I can see the wave I started there.
-
"Wonder when Lars will let me go to Brazil."
-
So that's the embed API.
-
Lars Rasmussen: You guys-- [applause]
-
Thank you.
-
Are you guys feeling inspired yet?
-
So remember that we're all going to give you accounts
-
on a sandbox build,
-
which is in fact the build that we're demo-ing from later today,
-
and this is all sample applications
-
that we're hoping you'll pick up
-
and build much, much cooler things with.
-
Okay, so the next thing I want to show is
-
of course you're going to want Wave on your mobile devices,
-
and I have an Android and an iPhone here,
-
and I was going to show you how well it works communicating
-
from mobile devices to the desktop,
-
but you guys are all on Facebook, aren't you?
-
Because I can't get on the wireless.
-
[laughter]
-
So if it doesn't work, it's your fault.
-
Okay, so you can see my inbox over here.
-
This is on the Android device.
-
Here's an open--
-
uh, the same open wave we saw before.
-
You see the pretty pictures here.
-
And then I can click the "Reply" button like this,
-
and you'll see over on Stephanie's screen,
-
which I can't see.
-
You will see a reply.
-
Imagine I was actually on a network,
-
and then I could type in, "I am on the boat."
-
Done.
-
Notice again my spelling.
-
And nothing is going to show up over there
-
because we haven't yet figured out
-
squeezing this through without a connection.
-
Maybe we'll show you that.
-
[laughter]
-
Hannon: As long as it's your fault that it's not working.
-
Lars Rasmussen: We are--
-
Hannon: I just don't want to screw up the--
-
Lars Rasmussen: We are working on it.
-
Okay, so that's mobile.
-
Hannon: How 'bout we talk about editing?
-
Lars Rasmussen: Oh, that's a brilliant idea.
-
Thank you.
-
Okay, so the next thing we're going to show.
-
Again because, um, there's only--
-
Back to my desktop. Thank you.
-
There is only one copy of the wave out there.
-
Even though we put these pictures on my blog,
-
I discussed them with Greg,
-
uh, we had them on my mobile device.
-
Now I notice that some of the captions
-
are kind of wonky.
-
And all I have to do is click this "Edit" button here,
-
and then I can fix that.
-
Kayaks. Beer Man.
-
Thank you. [applause]
-
Hannon: And as you notice,
-
the captions are updating on the blog.
-
Lars Rasmussen: Yes, hopefully you saw that the captions
-
were actually updating live on the blog as I was typing.
-
So, here I edited my own message,
-
but we actually let users edit each other's messages as well,
-
which is a very nice effect that in addition
-
to everything we showed you already,
-
you can use waves
-
to collaboratively author documents,
-
which we'll show you now.
-
So let's leave the boat behind, and let's go to work.
-
Stephanie.
-
Hannon: As Lars mentioned, I'm a product manager,
-
and I often have to take notes in a meeting.
-
Today I have to decide if I want to send those notes
-
out on email because I want people to discuss them,
-
or if I'm going to put them in a dock or a Wiki,
-
'cause I want other people to help me edit them.
-
With Wave you don't have to make that choice.
-
You can do both discussion and content collaboration
-
in one tool.
-
So these are our meeting notes.
-
I'm going to add Lars,
-
Jens, Greg, and ACD.
-
[Lars Rasmussen and Hannon speak over each other]
-
Lars Rasmussen: Pardon me.
-
Hannon: Then you open it.
-
Lars Rasmussen: Then I open it.
-
And even though this is Stephanie's message,
-
I can click that same "Edit" button
-
and change this to "glorious."
-
And then I can add an action item.
-
"AI. Make more better AIs, already."
-
Whoo, like that.
-
Thank you.
-
[applause]
-
Thank you.
-
And so that's how easy it is
-
for me to edit Stephanie's message.
-
We want to show you now how it looks
-
to the other participants on the wave--
-
the fact that I edited her message.
-
We'll start with Stephanie.
-
Hannon: So you can see the wave pop back into my inbox
-
because there's new material.
-
If I open it, I see the markups.
-
So I see the changes that Lars made.
-
Lars Rasmussen: Thank you.
-
[applause]
-
Hannon: We haven't implemented it yet,
-
but we'll also have a little description at the top
-
that says Lars edited this message.
-
What's important is I see these markups
-
not because I wrote the original message,
-
but because I saw the original message.
-
Anyone who saw my original message
-
would see these same markups
-
the next time they visited the wave
-
after Lars made his edits.
-
Jens Rasmussen: All right, now,
-
I didn't get to see the original message,
-
so when I open up this wave,
-
I just see the current version of it.
-
But I do get to see
-
that both Stephanie and Lars wrote this message.
-
Most of the time I'm not going to care,
-
but if I do care, then Playback is my friend again.
-
So I see Stephanie's original message,
-
she adds Lars,
-
and then I get to see Lars's edits.
-
[applause]
-
Thank you.
-
So now that we have accountability--
-
accountability in place,
-
we're going to allow everybody on a wave
-
to edit everything by default.
-
When something is changed,
-
the author is notified immediately,
-
and, if needed, can take action.
-
and everybody who's on the wave can find out who did what.
-
So Stephanie promised that we were going to do
-
collaboration and communication using the same tool.
-
Hannon: I did. Jens Rasmussen: So I'm going--
-
Now that I know that Lars made this--the request for more AIs,
-
I'm going to use the in-line reply tool we showed earlier,
-
um, to add my reply here.
-
"No, enough AIs already."
-
My spelling is not doing well either.
-
Lars Rasmussen: It's hard when 4,000 people are watching.
-
Jens Rasmussen: Typing and talking?
-
It's a little bit too much.
-
There we go. So I'll hand it back to Lars.
-
Lars Rasmussen: Okay, thank you.
-
So notice--
-
Notice that we never said, "Let's start a document, here."
-
These are all just waves.
-
The only thing different here
-
is that we chose to think of that opening message
-
more like a document we're collaborating about
-
than a message that starts a conversation.
-
And then we're choosing to think about that in-line reply
-
more like the beginning of a conversation
-
about the point in that document.
-
But to the system, they're all just waves,
-
and in fact, you can collaboratively edit
-
any message in the tree.
-
Doesn't have to be, uh, document-like at all.
-
Stephanie often comes and very friendly fixes
-
all of my spelling errors.
-
And so we think this combination of collaborative editing
-
and in-line discussion
-
makes for a very powerful collaboration tool.
-
And I want to show you that with a design document
-
that the team wrote a while back.
-
Let me just reconfigure my client, here.
-
I'm going to go do a safe search, find the document here,
-
Let me make some more space for it.
-
And you'll see here that it's a RISTEX document.
-
It's got headlines, it's got bullet points.
-
It's got illustrations, different types of fonts.
-
And then it's interrupted
-
by these little snippets of conversation
-
that help facilitate the collaboration.
-
And as always, the best way to see how this happened
-
is to play back the wave.
-
And you'll see Steven, our trusted server guy,
-
started out with a terse draft.
-
He added the rest of the team
-
Lars the manager says, "Please do more work."
-
Steven grudgingly adds another paragraph.
-
He says, "Yeah, whatever."
-
Then Stephanie the PM makes an edit here.
-
She adds a comment there,
-
starts a discussion there, and so on.
-
I can use the slider here to drag it
-
to anywhere in the history of the wave.
-
And we're planning a bunch of power tools
-
that come with Playback.
-
For example, I might ask it
-
only to play back Stephanie's contribution.
-
So I might ask it to only play back a single message
-
or even a single paragraph inside a message.
-
we're definitely going to let you take
-
one change in the history
-
and revert it at the end of the history.
-
Maybe name aversion so that you can find it again and so on.
-
Playback is going to be a really powerful tool
-
for investigating and manipulating
-
the entire history of the wave.
-
Thank you.
-
[applause]
-
And so now imagine we're done with the design document.
-
Or we find we're in a good state;
-
we want to share it with a wider audience.
-
You'll notice it's not super comfortable reading a document
-
interrupted by all this discussion,
-
so we added this widget here
-
that lets you hide and show some discussions,
-
but also, just like we extracted images from a wave earlier,
-
we let you extract the current version
-
of any message in a tree into a fresh wave.
-
Like this.
-
And now I have a fresh wave
-
with the pristine product of our work,
-
which I can now submit to the server
-
and share with whomever I like,
-
put on a mailing list internal blog or even keep working on.
-
And in fact, we're planning more features here
-
for document production.
-
Imagine you go back and do more work
-
in the original wave.
-
Then you'll be able to merge just those changes
-
into that same product wave.
-
The product wave will just have a two-step history now,
-
where each step is attributed to whoever did the copy.
-
In fact, and you guys will recognize this as, um,
-
inspired by source-controlled systems.
-
We'll have you--
-
We'll let you have a whole string of work waves,
-
all pointing to the same product wave.
-
You can have different themes
-
working on different parts of a wave,
-
and then when one team merges
-
and that changes into the product wave,
-
the other teams can pull that down,
-
merge it with the local changes, and so on.
-
So this is going to become
-
a very powerful document production tool.
-
Thank you.
-
[applause]
-
We showed you this, of course, with, um,
-
with, uh, rich text documents.
-
There's no reason we shouldn't
-
later add spreadsheet-type functionality in there,
-
or presentation building-type functionality in there.
-
In fact as we'll show you later, we've taken great care
-
to make the content model inside Wave extendable,
-
both by us and by you.
-
Okay, the next thing I want--
-
Hannon: Why don't you just talk for a minute
-
before you open it?
-
Lars Rasmussen: Talk for a minute...
-
Hannon: You know.
-
Lars Rasmussen: Before I open it.
-
Hannon: 30 seconds.
-
Lars Rasmussen: We could do a little interpretive dance
-
while we open it.
-
It's not that there's anything wrong
-
with the thing I was about to open,
-
it's just that--
-
How're you guys doing?
-
[laughter]
-
Are you having a good time?
-
I know it's a long demo. Thank you.
-
Don't be shy if you like it.
-
Hannon: All right, we're ready.
-
Lars Rasmussen: There's a whole bunch of people
-
in blue shirts working feverishly over there.
-
[chuckles] And we're ready.
-
Okay, so here is a wave, um...
-
Here is a wave. That's right.
-
So my little introduction here is the following:
-
We're going to show you now
-
the thing we had the most fun working on.
-
As in this was the hardest thing we did.
-
Um, which is to let more than one person
-
edit the same message at the same time
-
and still transmitting the characters live on the wire.
-
So we have a set of pictures here,
-
and Stephanie is going to start
-
at the top-left editing the captions.
-
You can see on my screen
-
I can see exactly where that orange label--where she is,
-
and I'm going to start from the lower-right.
-
Hannon: "Thumbs up."
-
Lars Rasmussen: "Spelling Google."
-
Hannon: "Lars in the lead."
-
Lars Rasmussen: "Smiley David."
-
Hannon: "Wave crew hiking." Lars Rasmussen: "Kapow."
-
[applause]
-
Thank you.
-
Now we're very close to each other.
-
I'll add some styling here.
-
I'll make this italic.
-
Oh, boy, if someone can add some color.
-
We can do this.
-
Notice how close we can edit to each other.
-
You can see we've got a couple of--
-
of our team has joined us.
-
We've got three people here.
-
Casey, Steph, Ophir and Dan.
-
We have four people now,
-
editing the same document right next to each other.
-
[applause]
-
Thank you.
-
Thank you.
-
And so apart from hours and hours of fun
-
just chasing each other's carrots around on the screen...
-
[laughter]
-
Hannon: It's a lot of fun. Lars Rasmussen: A lot of fun.
-
Um, the--the--this sort of live, concurrent editing
-
opens up a whole set of new ways of using the tool.
-
We're actually still discovering some.
-
Imagine you're in the same room,
-
you're taking notes from a meeting.
-
Oftentimes people don't even come to the meeting,
-
they just open up the wave, see the notes being taken,
-
they just pop their questions in the wave, and so on.
-
I want to-- while I'm showing off our edit,
-
I want to make sure you see
-
that it supports right-to-left languages.
-
This is Ophir speaking in Hebrew.
-
Thank you.
-
[applause]
-
You see up at the top-left that the editor supports languages
-
that require international input method editors as well.
-
I'm pretty sure that's Chinese.
-
Okay. That's collaborative editing.
-
And now...
-
Man, this is a long demo.
-
You guys want to stand up a little?
-
Stretch. Hannon: Any stretching?
-
Lars Rasmussen: Stretch a little.
-
Hug the person next to you.
-
[laughter]
-
You don't have to do that.
-
Hannon: A hug break. Make some friends.
-
Lars Rasmussen: Um, I want to take a little break.
-
We have lots more to show you,
-
but I want to take a little break,
-
and I want to, um, call out to our friends and colleagues
-
on the Google Web Toolkit team.
-
So--Thank you.
-
[applause]
-
Thank you.
-
So Google Wave is 100% built with the Google Web Toolkit
-
from the first line of code we wrote in a prototype
-
back in early 2007.
-
And as I'm sure you know, the Google Web Toolkit
-
lets you write HTML 5 applications in Java.
-
And then GWT, as we call it,
-
automatically translates that into HTML, JavaScript, CSS,
-
all of those things that then run
-
in all of the modern browsers.
-
And I think that we couldn't possibly have built
-
something this rich without the Google Web Toolkit.
-
In fact, I don't think we would even have thought to do that.
-
I think using modern tools like this
-
changes your way of thinking.
-
When I was still hand rolling JavaScript for Google Maps,
-
I found too much of my brain cycles
-
were used worrying about the constraints of programming
-
in a scripting language in a browser.
-
But by using GWT, I get to write in Java
-
and have this amazing set of tools
-
that come with writing in Java,
-
and we found that our programmers
-
can now spend most of their time
-
thinking about the amazing potential of the Web.
-
And by the way, this is both if you're on a desktop
-
or if you're on a mobile device,
-
when I showed you on the Android and iPhone here,
-
Wave was running in the browser in both of those phones.
-
GWT makes that fairly easy to do.
-
It's actually the same code
-
that runs in those mobile devices,
-
it's just a different layout.
-
We estimate that the extra requirement of serving this
-
both into desktop browsers and mobile browsers
-
only adds about 5% extra engineering effort,
-
which I find remarkable.
-
Okay.
-
Hannon: And that graph from yesterday.
-
Lars Rasmussen: Pardon me.
-
Oh, the graph from yesterday. Did you see that?
-
How we built 1.4 megs of code and then all of a sudden
-
it went down to 200k?
-
We like GWT for that.
-
[applause]
-
Hannon: All right. So back to the demo.
-
Let's talk about organization.
-
We learned from our own use of Wave
-
that you get a lot of waves, which is great,
-
but you need tools to organize them.
-
We have things you're familiar with
-
like folders and saved searches.
-
We also have tags and they're shared
-
by all the participants on the wave.
-
So you have just as much incentive
-
to put a great tag on a wave as a great subject.
-
For example, Lars is way too lazy
-
to organize his own stuff.
-
Lars Rasmussen: Oh, yeah.
-
Hannon: So we have a team help him do it.
-
Lars Rasmussen: Thank you. Hannon: [laughs]
-
But the most powerful way to organize waves
-
is with waves themselves.
-
Let me open a wave we used to organize this demo.
-
You can see it has links to other waves in it
-
and you can combine, uh, them in sections, formatting.
-
You can discuss them.
-
And if I click on one of these links,
-
it'll take me to that wave
-
and I can use the back button to go back.
-
So let me show you how easy it is
-
to create one of these wave links.
-
If I missed one, I can just pick it up
-
from the search panel and drop it in.
-
[applause]
-
I'll do that one more time 'cause I think it's cool.
-
Drop it in.
-
So we found on our own team
-
links--wave links are good for more than just lists.
-
We're actually interlinking a lot of waves on our site
-
almost like a Wiki, uh, on our team.
-
Before we get to Wave extensions,
-
which I know this audience is really excited about,
-
I want to show you one more thing
-
that we worked really hard on.
-
I'm going to go up here and search for Google Wave.
-
Lars Rasmussen: I have a feeling, uh, you're going
-
to want to refresh your browser before we do this.
-
Hannon: Just like my inbox, when a wave matches this search,
-
it will pop into the panel.
-
Lars Rasmussen: And so Stephanie has a search
-
for Google Wave over there.
-
I'm teeing up a new wave here.
-
Said, "Wow.
-
I am finally demo-ing Google Wave."
-
Now the reason this hasn't showed up
-
in Stephanie's search yet is I didn't type the E.
-
So what I'm going to do, I'm going to count to three,
-
then I'm going to hit the E,
-
and you guys can count how many seconds it takes
-
before it shows up in Stephanie's browser.
-
One, two, three.
-
[applause]
-
You guys want to-- you guys want to see that again?
-
[laughter]
-
Hey, Stephanie, can you open up that wave for me?
-
Hannon: All right, let me go over there.
-
Lars Rasmussen: Backspace.
-
Hannon: [laughs]
-
[laughter and applause]
-
Lars Rasmussen: E, backspace, E,
-
backspace, E, backspace, E, backspace.
-
We call that the Wave dance.
-
So we've worked really hard on this.
-
We're pretty proud of the result.
-
I should just say after we started using it,
-
we found this is almost too fast.
-
Sometimes, uh, it draws your attention
-
to unfinished work.
-
And we're actually looking for the right balance
-
between speed and not being interrupted too often.
-
Okay, what's next?
-
Hannon: Extensions. Lars Rasmussen: Extensions.
-
The reasons you guys came here.
-
Okay. So the next thing we want to show
-
is the other category of APIs
-
that we're making available today,
-
which is about extending the functionality of Wave.
-
So we have tried hard to maintain a discipline
-
on the team that even significant offerings
-
of our own should be built with our own extension APIs
-
so that your extensions will live
-
as first-class citizens inside Wave.
-
It's similar, actually, to how browsers like Firefox
-
let you extend them.
-
This is just the web site you're extending
-
instead of the browser.
-
So let me show you some examples.
-
You've undoubtedly noticed how all morning,
-
I've been pretending my spelling is bad
-
just so that we could show off our spell-checker.
-
So normally spell-checkers work
-
by matching words up against a dictionary.
-
If they find there's-- if they don't find a word
-
that is in error,
-
the problem is that oftentimes
-
spelling mistakes hits other dictionary words.
-
And so our spell-checker actually takes the context
-
of the word into account
-
and then it matches it up
-
against an enormous language model
-
that we've built from the entire web.
-
Let me show you how powerful that is.
-
We call this the "Bean Soup Demo."
-
"Can I have some been soup?"
-
It puts a red on the line
-
and it knows that I meant "bean soup."
-
Thank you.
-
[applause]
-
Okay, now watch carefully.
-
"It has bean so long."
-
Did you see that?
-
So it is--it has become so good at spell-checking
-
that often, it has enough confidence
-
that we let it automatically correct my errors.
-
Let me show you that again.
-
"Icland is an icland."
-
[applause]
-
"You are to kind."
-
Pretty cool, huh? [laughs]
-
You didn't see that last one.
-
Okay, so that's our spell-checker,
-
or Spelly as we affectionately call it.
-
Let me show you another simpler one
-
that detects links in what you're typing.
-
And we call it Linky.
-
"I love google.com."
-
It immediately puts an underline--.a--
-
ooh, that's not a link-- .u--now it's a link again.
-
[applause]
-
You're wondering what's this all got to do
-
with extensions and let me explain that.
-
So you remember we showed you a robot earlier
-
called "Bloggy."
-
All that one did was publish a blog
-
that let you use the embedding API.
-
But robots are really powerful ways
-
of extending Wave's functionality.
-
They're server-side programs that participate in Wave
-
with all the power of the human participants.
-
You can see from your robot the live changes in the wave.
-
You can make live changes to the wave
-
including adding and removing messages,
-
collaboratively edited messaging,
-
adding and removing participants.
-
You can even start new waves from robots.
-
And the way Spelly works
-
is that it uses our robot APIs to watch what I'm typing.
-
It sits on the server. It watches what I'm typing.
-
It takes every so many words and matches it up
-
against a language model.
-
And then when it finds an error,
-
it uses collaborative editing to edit the content.
-
And in fact, when it doesn't have enough confidence
-
and it put that red underline,
-
if Steph and I were editing the message at the same time,
-
she would also see the red underline
-
and she could be the one taking the suggestion.
-
Linky works in the same way.
-
But who wants to be typing in links all day?
-
We had a very good friend of ours
-
from the Google Search Team build this extension for us here
-
called Searchy.
-
Let's search for Australia.
-
Hannon: We have a really clever naming convention.
-
Lars Rasmussen: And here you can do a Google search
-
from right inside Wave and add the link like that.
-
[applause]
-
You guys want to see that again?
-
I search for Bora Bora. It's so pretty there.
-
I add an image to the wave just like that.
-
Thank you.
-
[applause]
-
Let me just quickly return to our friend Linky.
-
I've got a video sitting here.
-
Let me copy the URL.
-
And inside my wave,
-
I'm going to type "Check this out."
-
And then I'm going to copy the link in there.
-
And then I'm going to dance a little bit
-
while the system spectacularly fails.
-
[laughter]
-
Maybe we'll return to that later.
-
Okay, so that's extensions that we built
-
with internal APIs.
-
And what we're doing today as part of the developer preview
-
is--is make external versions of these APIs
-
available to you guys.
-
The external APIs have almost all the power
-
of the internal APIs.
-
There is a few things we haven't quite figured out
-
how to secure the export.
-
We're working very hard to close the gap.
-
We're going to show you now a series of examples
-
of things that are built with the external APIs.
-
These are all sample codes
-
that are going to be on code.google.com
-
where we'll host the API.
-
Stephanie.
-
Hannon: Any open social gadget can sit inside a wave.
-
In fact, we were about to show you one
-
which might come a little bit later.
-
But we also make an additional API available
-
that lets you the developer make your gadget
-
live and collaborative.
-
I want to show you that.
-
But before I do, I'll digress and tell you a little story.
-
Even though we on this team have been building Wave
-
and thinking about Wave for a year and a half,
-
when we first started using it ourselves,
-
it took awhile for us to discover all the ways
-
Wave can make you more productive
-
because we were so used to older tools.
-
In fact, we're still discovering new ways all the time.
-
I'll show you that by opening a wave
-
and using Playback to tell you what happened.
-
Uh, someone on our team wanted to create a movie outing
-
and we should all go see the Transformers.
-
So he sent a wave out and people did something
-
very email-like and responded.
-
"I'm interested." "What place are you going to?"
-
"Is that really a good movie?" And so on.
-
I tried to get them to see Confessions of a Shopaholic.
-
Nobody went for that.
-
Lars Rasmussen: She's still trying.
-
Hannon: Still trying.
-
So when you look at this wave,
-
it's sort of hard to parse out the important information
-
of who wants to go.
-
So somebody suggested we should all edit
-
the opening message instead of putting it
-
in individual messages.
-
And we cleaned up the wave.
-
Everyone started editing the opening message and so on.
-
This was a much better way to construct this RSVP list.
-
And we could still have discussions
-
about which car to take and so on.
-
Now, we're all engineers,
-
and you can look at this workflow
-
and think there are better ways
-
or there are ways to make this even better
-
using our extensions.
-
So another engineer on our team wrote a gadget.
-
We call this the "yes-no-maybe gadget."
-
Hey. [laughs]
-
[applause]
-
So if you--it's hard to see for you guys, I know.
-
But I'm currently in "No" in the middle column
-
and I'm to change it to "Maybe."
-
And you see it update on Lars' screen.
-
[applause]
-
Lars Rasmussen: And I'm currently
-
in the "Maybe" column.
-
And I click the "Yes" over here.
-
And you'll see it quickly updates
-
on both our screens.
-
Hannon: So you the gadget developer
-
only have to worry about two things.
-
When I click the button,
-
update the state of the gadget in XML and the wave,
-
then we automatically transmit through the server
-
to Lars' client where your gadget
-
has to update the UI to reflect the new state.
-
Now, of course we did all this--
-
ooh, it's a secret though--
-
I, um, uh, don't tell anyone,
-
but we did all this so we could build
-
impossibly fun, addictive games.
-
And we'll show you a few of those now.
-
Lars and I are going to open Sudoku.
-
Lars Rasmussen: Hmm. Hmm.
-
Hannon: And we intended for this to be a collaborative game
-
so we could solve the puzzle together,
-
but somehow it turned competitive.
-
[laughter]
-
And, uh, you get a point for making a good move
-
and a negative point for doing something wrong.
-
You can see Lars' score is going negative.
-
Lars Rasmussen: How can you play Sudoku
-
in front of 4,000 people?
-
Come on.
-
Hannon: Then, uh, back in 1851,
-
Lars and I played this chess game
-
that became very famous.
-
It ended in 23 moves.
-
And it illustrates how well Playback works with gadgets.
-
So if I go into playback and I click forward,
-
you can actually step through the whole game.
-
[applause]
-
So as we mentioned in the beginning,
-
we come from the Maps team.
-
So probably wouldn't be a good demo
-
if we didn't do a Maps gadget as well.
-
It's been a lot of work to prepare for this demo.
-
So I'm going to send Lars a wave about taking a vacation.
-
Lars Rasmussen: Stephanie's favorite topic.
-
She wants to go on vacation in Bora Bora.
-
She's asking me for recommendations.
-
I highlight the term Bora Bora here.
-
And then I click this button that's provided
-
by an extension that you guys could've written
-
that inserts a map to Bora Bora.
-
Thank you. [applause]
-
Hannon: Now, the important thing
-
is my hands are off of my computer,
-
but my screen is still on the right.
-
Lars Rasmussen: And now I click the satellite button
-
and it changes on both screens.
-
And I go zoom, zoom, zoom, zoom, zoom, zoom.
-
[applause]
-
[laughs] Thank you.
-
[applause]
-
And now, Stephanie loves swimming with sharks.
-
And I happen to know that the lemon sharks hang
-
over here.
-
And you can see that I put that marker on.
-
Shows up live over on Stephanie's screen.
-
Now my hands are off.
-
Hannon: And I'll pick up the polygon tool
-
and I'll tell Lars, actually, I want to stay in this area.
-
Lars Rasmussen: And you see that showing up on my screen too.
-
And so again, all you guys have to do with your gadgets
-
is to store updates to the state
-
in the local XML.
-
And then we transmit on the wire
-
and then the other instance of your gadget
-
just updates its state when it gets notified
-
of that change.
-
And so those are client-side, um, extensions.
-
I want to just show you, actually,
-
the team in blue over here is scrambled.
-
And they brought back up Linky.
-
And I wanted to show you what happened
-
when I dropped that YouTube URL into the old extension wave.
-
So you'll see that Linky didn't just recognize
-
it was a link,
-
but it recognized it was a link to a video.
-
It puts this little friendly light bulb
-
on my screen where I can open up
-
a set of suggestions for what I might want to do.
-
Like, for example, I might want to embed the video
-
right inside my wave
-
and play it for you guys.
-
[wobbling noise]
-
Dah nah. Pretty cool, huh?
-
[applause]
-
Thank you.
-
Okay. What's next?
-
So Stephanie showed you a bunch of gadgets.
-
They're all client-side extensions.
-
We want to show you next what you can do
-
on a server side with robots.
-
And we're going to show you three examples.
-
The first one is an application--
-
a collaborative application built entirely within Wave
-
with our extension API.
-
So let me just open up my inbox again.
-
And instead of clicking "new wave,"
-
I'm going to hit this drop-down button here.
-
And I'm going to hit this item
-
called a "new poll."
-
New poll is just a new wave,
-
but with a special robot that comes from an extension
-
that you guys could build called Polly the Pollster.
-
I'll add Steph to the wave as well.
-
Polly added a form to the wave.
-
Yes. And so this is not a gadget.
-
Forms are native to wave.
-
You can put them in there.
-
And now I can fill out the form
-
starting with the title of the poll
-
that I want to conduct.
-
And you'll see as I'm typing in the form,
-
Polly sits on the server side.
-
She saw that letter by letter,
-
and she updated the title of the wave.
-
Now the really cool thing about having forms in waves
-
is that you can fill them out collaboratively.
-
So Stephanie's going to fill in the choices
-
while I add the question here.
-
"Which movie is the best ever?"
-
And you see that Stephanie's filling in the options
-
in the field below.
-
Hannon: Star Wars.
-
Lars Rasmussen: Star Wave. [laughs]
-
Hannon: Not on purpose. [laughs]
-
Lars Rasmussen: Confessions of a Shopaholic.
-
So now Stephanie's going to fill out a number of people
-
that we're going to send the poll to
-
in the recipient list there.
-
She's putting in--
-
Hannon: Done.
-
Lars Rasmussen: Putting in six of them.
-
Now I'll hit the button here that says "distribute poll."
-
Now, what happens is that Polly sees
-
that I hit that button.
-
She fills in a results section
-
in that same wave here.
-
And then she sends out fresh waves
-
with the questions we specified
-
to all the recipients we specified.
-
And Stephanie's one of them.
-
Hannon: So I'm going to answer the poll
-
that Star Trek's my favorite.
-
Lars Rasmussen: And you'll see that Polly updates the results
-
live in the admin wave.
-
With a bit of luck-- thank you.
-
[applause]
-
Okay. So that's the-- an example of an extension
-
built exclusively inside of Wave.
-
The next type of extension we want to demonstrate for you
-
are extensions that integrate Wave
-
with existent communication systems.
-
In this case, we'll show you with everyone's favorite
-
microblogging service, Twitter.
-
Hannon: So at this point, you're probably wondering
-
how to install these extensions.
-
So let me open a wave.
-
And you probably won't be surprised to hear
-
that extensions can live inside a wave.
-
Here's their--a bunch of puzzle pieces
-
showing some of the things we're using today.
-
All I have to do if I want to use one of these inst--
-
extensious--is--
-
Sorry. Click the "install" button.
-
And you can see over here, there's a new drop-down menu.
-
And I have the option to create a new twave.
-
Lars Rasmussen: A wave, of course--twave, of course,
-
is a wave of tweets.
-
Hannon: You can describe as a developer
-
how your extensions hook into Wave.
-
It could be a keyboard shortcut,
-
a button on the tool bar.
-
It could be something like a new twave button.
-
There'll be a confirmation page
-
that tells the users how you're going to interact.
-
We haven't quite implemented that yet.
-
So let me log in here.
-
I have to tell you that Lars created my Twitter account.
-
Lars Rasmussen: I made her Twiffanie.
-
She hates that.
-
Hannon: [laughs]
-
Lars Rasmussen: She's Twiffanie at Twitter.
-
Hannon: I think that tab button should be implemented, you guys.
-
[laughs]
-
I feel like all sorts of bad stuff is about to happen.
-
[laughs]
-
All right, so I'll sign in to Twitter.
-
And you can see tweets
-
from all the famous people I follow.
-
And down here at the bottom, Lars.
-
Lars Rasmussen: No.
-
Hannon: I'm just going to close it.
-
We still haven't, uh, uh...
-
I wanted to get the contacts out.
-
Um, it's important you can see that each of these avatars,
-
they're not necessarily Wave users.
-
Through our APIs, you can be a proxy
-
for contacts on a different system.
-
So I have Lance Armstrong, Ryan Seacrest,
-
lots of different people.
-
If I go down here and I look for Lars' tweet,
-
I can respond to it.
-
He says, "The demo's going pretty well."
-
And I'll say, "It ain't over yet."
-
[laughs]
-
Lars Rasmussen: And now I've logged in
-
to Twiffanie at Twitter over here.
-
And if I refresh the page,
-
you'll see that the extension took Stephanie's wave reply
-
and tweeted it.
-
Thank you.
-
[applause]
-
Hannon: Now Tweety also lets you search
-
over the public timeline of Twitter.
-
For example, for a phrase like "Google Wave."
-
So I'm going to start a new twave.
-
Lars Rasmussen: You're going to search for Google Wave now?
-
Hannon: Gonna do it.
-
Lars Rasmussen: How brave it that?
-
Hannon: [laughs] I'm not afraid.
-
So try again.
-
I'm going to log in.
-
And then I'm going to type Google Wave.
-
So we did this yesterday and there are only two tweets.
-
One of them was a woman interviewing at a company
-
called Wave so she said, "I should google Wave
-
before my interview."
-
So now let's sign in. See what happens.
-
Lars Rasmussen: * Doo doo * Hannon: A lot more than two.
-
Lars Rasmussen: Oh! [laughs]
-
Hannon: And we can go down to the bottom
-
and see tweets still coming in.
-
Lars Rasmussen: Oh, my God, you guys, thank you.
-
[laughs] Wow. Thank you.
-
[applause]
-
Hannon: So that was a example of an integration
-
between Wave and another communication system.
-
Lars Rasmussen: I'll just add to the search functionality
-
here, actually, that you can-- you can have Tweety
-
continuously search over in Twitter
-
and update the wave as they come.
-
So you can use them like "twit alerts"
-
for whatever you're interested in.
-
It'll just pop into your inbox.
-
Buggy. Hannon: Buggy.
-
We were reading the tweets.
-
Lars Rasmussen: We were reading the tw--
-
Hannon: Totally threw us off.
-
[laughs]
-
Lars Rasmussen: Okay, the last example
-
of a robot extension we want to show
-
is an example of how you can use Wave extension APIs
-
to integrate Wave within existent workflows.
-
You guys are programmers like us.
-
You probably deal with filing bugs.
-
I want to show you an integration
-
between Wave and the issue tracker--
-
the bugs database over on code.google.com.
-
But this could be any issue tracker Bugzilla could host,
-
whichever is your favorite.
-
So I'll just conjure up a canned message here.
-
And I'll tell you a little bit
-
about how we do bugs on my team.
-
So a programmer has built some code.
-
They send it for code review.
-
They also send a demo to the PMs and the UI people
-
and Jens and I.
-
And then we sit in the room and we test it.
-
And you can't read the text here.
-
But there's a bunch of bullet points
-
with observations we made.
-
We, of course, edited this collaboratively.
-
Some of them are bugs.
-
Some of them are observations for discussion later.
-
Some of them are notes for the UI designers.
-
And, of course, we should now go and file bugs.
-
Um, but instead of doing that manually,
-
we run an extension that lets me just select a bullet point,
-
click this button here,
-
and now a robot enters the fray called Buggy,
-
takes that text, and files it as a bug for me.
-
[applause] Thank you.
-
Hannon: Hey, Lars, why don't you add me?
-
Lars Rasmussen: Yes. Excellent.
-
And I'll add Steph to the wave.
-
The bug--the, uh--the--the-- sorry, the robot
-
also grabs a little summary from issue tracker
-
and puts it right inside the wave.
-
There's a link there to the bug
-
will Stephani--which Stephanie will now click
-
so that you can see the bug sitting over on issue tracker.
-
Hannon: All right, so I'm going to open this bug,
-
number 11.
-
Lars Rasmussen: And while she does that,
-
I'll file a bunch more.
-
You can see how easy it is.
-
And I just triple click here. There's another one.
-
And I'll file that bug too.
-
Okay. And so now, we might send this wave--
-
we might share this wave with our bug triage team.
-
I'll just do that myself.
-
All I have to do is change the assignee here.
-
I'll give this to Stephanie. I'll take this myself.
-
And then this one goes to Lars.
-
Ooh, I'm sorry. Was that Greg?
-
Like this.
-
And now you'll see-- Stephanie will refresh the bug
-
and you'll see the robot change the assignee over
-
in the issue tracker.
-
Hannon: On the left-hand panel where it says "owner."
-
Lars Rasmussen: And also, most issue trackers
-
or bug databases lets you debate bugs--
-
endlessly if I recall-- inside the database.
-
Which is normally not the strength
-
of the database.
-
But it is the strength of Wave.
-
And so instead of debating them over on issue tracker,
-
you can debate the bug from inside Wave.
-
I'll just use the inline reply tool here.
-
And I'll say,
-
"That is so not my fault!"
-
Hannon: And I'll refresh. You can see the update there.
-
[applause]
-
Lars Rasmussen: And so now we can continue
-
the endless debate inside of Wave,
-
which would be much more efficient.
-
We could also build--
-
We haven't done this in the sample here--
-
that if someone wanted to go make a comment
-
over on issue tracker,
-
the robot would see that and update the wave as well.
-
And just like we did a search through Twitter
-
into a-a wave,
-
we could also have the robot start a new wave of bugs
-
and just pull in all of the bugs assigned to you
-
so that you could track them from within a wave.
-
It's remarkable--thank you-- how much more effective
-
this sort of thing makes you.
-
Okay. That's extensions for you.
-
You guys feeling--
-
Hannon: And I think that's two of our Ps.
-
Lars Rasmussen: Those are two Ps.
-
Are you guys feeling inspired yet?
-
Good. Yeah. Thank you. [applause]
-
Thank you.
-
Okay, let's talk a little bit about the protocols
-
and algorithms, um, underlying Wave.
-
So we want Wave, as Stephanie said in the beginning,
-
to be an open system.
-
Obviously, it's an enormous reason
-
behind the success of email that it's an open protocol.
-
Anyone can build an email system.
-
Anyone can email with each other
-
regardless of where they got their accounts from.
-
We want Wave to work the same way.
-
And so we've designed the algorithms--
-
we've designed the protocol to, um, uh, to support
-
what we call "federation."
-
Which means that any organization
-
could build their own Wave system,
-
give accounts to their users even in competition with Google,
-
and then the system will still ensure
-
that we can share waves with each other
-
across these boundaries.
-
And we want to-- we want to first show you
-
how that's going to look.
-
And then we'll talk a little bit
-
about how far along we are with that.
-
So let me--so this is very much work in progress.
-
Everything we've shown you is work in progress.
-
I'm going to sign in to, um, a different version
-
of the system that sits inside our corporate network
-
that has an open port on it for this sort of federation.
-
And we're going to imagine two separate wave systems.
-
One is the one Google has built
-
that you've been looking at all morning.
-
The other one is from Acme Wave,
-
which you'll see over on Stephanie's screen.
-
They have built a separate system.
-
They're actually giving out accounts
-
in competition with Google.
-
You'll realize that their client looks very similar to ours.
-
That's because we're intending to open source
-
the lion's share of the code that we used to build our system
-
so that organizations can get started quickly.
-
And that's how Acme Wave built their system.
-
So I'll start a wave over on my account here.
-
And I will say "Project.
-
You want to work with me on that thing?"
-
And then I will add-- what's your account
-
over on Acme Wave?
-
Hannon: It's Stephanie. Lars Rasmussen: Stephanie.
-
Stephanie on Acme Wave.
-
So Stephanie momentarily has her account--
-
Hannon: Actually, it's Steph. Lars Rasmussen: There we go.
-
Hannon: Sorry.
-
Lars Rasmussen: Stephanie is now a user
-
over on Acme Wave.
-
And I'm going to add her to the wave.
-
Hannon: So I'm going to open up the wave.
-
And he says, "You want to work with me on that thing?"
-
And I said, "I think the guys over at Initech can help too."
-
Lars Rasmussen: [laughs] And so...
-
And so even though Steph and I have accounts
-
on different wave systems,
-
you still get that live
-
character by character interaction.
-
The way it works is that from our two clients,
-
these fine-grained operations
-
travel to our respective servers,
-
then it crosses over and goes back up to our client.
-
And all of the liveness and concurrency control
-
and live--um, sorry, and real-time resolution
-
of conflicts happen in an algorithm
-
that supports this sort of federation.
-
Let's bring a third wave system into the system.
-
So we have a couple of friends, Peter and Milton,
-
that work for a company called Initech.
-
They have chosen to run their own wave server
-
in their server closet.
-
These guys didn't take our code.
-
Milton is the kind of engineer who prefers building stuff
-
from scratch.
-
Hannon: I'm not sure I want to show this, Lars.
-
Lars Rasmussen: Oh, come on. You show it.
-
I'm going to add Peter and I'm going to add Milton.
-
Why don't you want me to show it?
-
Hannon: I'm afraid this crowd might like their UI
-
better than ours and it would break my heart.
-
Lars Rasmussen: Don't break her heart.
-
[cheers and applause]
-
Do you have the wave? Do you have the wave?
-
Hannon: No, 'cause-- Lars Rasmussen: Hmm?
-
Hannon: Just make another edit.
-
So now I have the wave.
-
Lars Rasmussen: So she opens-- Hannon: And if I go into it...
-
[cheers and applause]
-
Lars Rasmussen: Thank you.
-
Hannon: Now I want to show you an important principle
-
of--an important feature of the protocol.
-
So I go back to Acme Wave
-
and I'm going to make a private reply
-
just like you saw earlier in the demo.
-
But I'm going to add everyone except Lars.
-
So I'll say, "What do you think of that Google guy?"
-
So I'll add all of my friends Peter and Milton.
-
Even though this wave is owned at Google
-
and there's copies on Acme Wave and Initech servers,
-
this private reply is never seen by Google
-
and cannot be discovered by Lars in any way.
-
In fact, if Peter and Milton made a private reply
-
between themselves,
-
that wave would never leave their server closet.
-
[applause]
-
Lars Rasmussen: Thank you.
-
Hannon: And I just want to go back over to Milton
-
for a second.
-
You can see the private reply came in there as well.
-
Lars Rasmussen: Okay, so let me just say this,
-
um, federation...
-
that was hard.
-
So we're building this thing
-
with live concurrent editing, and chatting,
-
and instant messaging, and email, and pictures,
-
and all that stuff.
-
And then we throw federation into the mix,
-
which vastly complicates things.
-
It would be so much easier, frankly,
-
from an engineering point of view.
-
If we could just keep this proprietary,
-
then we'd control all the servers,
-
we'd control all the update schedules,
-
and so on.
-
But we think it's worth the effort--
-
and we hope you guys will help us with this.
-
We think the world will be a much better place
-
if this is an open system that everyone can build
-
wave services with it.
-
And so--thank you.
-
[applause]
-
Thank you.
-
[applause]
-
And so let me tell you, um, where we're at with it.
-
So later today, there's a web site--
-
I'll show you the URL later-- that's going to launch,
-
which will have-- it's a very early draft
-
of this protocol.
-
It'll have, I think, four whitepapers
-
describing how the system works.
-
It's going to have, of course,
-
a public discussion forum
-
so that we can start debating how this hopefully bright future
-
of Wave will look.
-
And then like I said, later,
-
we're going to open source the lion's share of our code,
-
which will serve both as a reference implementation
-
of the protocol,
-
but also essentially a production ready system
-
like you saw Acme Wave do.
-
I'm obviously vastly simplifying it here.
-
But essentially, you could take that code,
-
you could put it on top of your own database,
-
and you would have a simple wave server
-
and you would be up and running.
-
Okay. So that's federation.
-
[laughs]
-
Hannon: I'm excited about our next demo.
-
Lars Rasmussen: The next demo is very, very nice.
-
This is something, um, to end off our demo with.
-
It's something, uh, a friend of ours
-
on the Google research team has been building
-
over the past month.
-
I saw it myself the first time just a few days ago.
-
Um, and it blew me away.
-
So, um, let's see.
-
I'm going to make sure I'm on the right system here.
-
I'm back on the sandbox.
-
So again, we've been doing this demo
-
on a system where we'll get you guys accounts.
-
Now, Stephanie is going to log into, um, an account
-
of one of our colleagues, Alexi.
-
And then I'm going to start a new wave.
-
I want to make sure you guys can see
-
what we're typing.
-
I'm making this a little bigger like this.
-
Do you make your font bigger there, Steph?
-
Hannon: Yeah, I was going to wait
-
till you started the wave.
-
Lars Rasmussen: And then I'll start a new wave here.
-
And I'll add Alexi, one of our colleagues.
-
And then I'll add my all-time favorite robot
-
called Rosy.
-
Yes.
-
So, um, Alexi is from France.
-
His English is not terribly good.
-
Hannon: Aww!
-
Lars Rasmussen: For the purposes of this demo.
-
[laughter]
-
And Rosy is a robot that very kindly translates
-
what I'm typing.
-
"Hello, world!"
-
[applause]
-
"What do you think
-
"of this demo--
-
of this demo?"
-
And now Alexi's typing in France.
-
And I get to see him saying, "Ah, yes...
-
since new--we are in can--use--used--"
-
Translates word by word, character by character
-
as he's typing.
-
Rosy speaks, I believe, 40 languages.
-
She can translate between any pair of them.
-
Um, she's quite the thing.
-
Okay. That finishes our demo.
-
Oh, thank you.
-
[cheers and applause] Thank you. Thank you.
-
Thank you. Thank you. Thank you.
-
Thank you.
-
Thank you. Thank you. Thank you. Thank you.
-
[cheers and applause] Thank you. Thank you.
-
Hannon: I think they like it. Lars Rasmussen: They like it.
-
You guys like it? Okay. Thank you.
-
Hannon: Thank you. Wow. Thank you. [laughs]
-
[cheers and applause] Lars Rasmussen: Thank you.
-
Thank you. [whistling and cheers]
-
Hannon: They have a lot of skills.
-
[applause]
-
I think... Lars Rasmussen: Thank you.
-
Hannon: If they really liked it...
-
[man shouting indistinctly]
-
If you guys--you guys really liked it,
-
you could do a wave.
-
Lars Rasmussen: So, so, so-- Hannon: Anyone?
-
It's time to do the wave. Lars Rasmussen: So--
-
So, um, what do you guys think?
-
Okay. [laughs]
-
So just-- Hannon: Thank you for filming.
-
Lars Rasmussen: Just to summarize,
-
um, what we like to think we've built here
-
is really quite a simple communication object
-
called a wave.
-
And we've showed how you can use it
-
for quite a lot of different types
-
of communication and collaboration.
-
We showed you how plain vanilla email-type conversations
-
could be done.
-
We showed you how instant messaging conversations
-
could be done.
-
We showed you how easy it is to share photos
-
and other rich media types with it.
-
We introduced a platform that we're hoping you guys
-
will pick up
-
that will let you build things like blogging sites,
-
discussion groups, uh, letting your users
-
discuss images on your web site.
-
With the editing functionality,
-
you can see you can build Wiki-like sites
-
with that as well.
-
We showed you how you can use waves
-
to collaboratively edit documents.
-
We showed you a rich set of extension APIs
-
that could let you build everything from games,
-
through collaborative applications inside a wave,
-
through integrations with other communication systems.
-
We showed you Twitter.
-
We're hoping you guys will build gateways
-
from Wave to email, to Facebook,
-
to instant messaging, and so on.
-
We showed you how you can use these extension APIs
-
to also integrate waves into work flows.
-
Whew. Okay.
-
And now...
-
Hannon: Just going to bring up...
-
Lars Rasmussen: For the administrativia
-
at the end,
-
I want to-- I want to just point out--
-
I forgot that earlier
-
that we have three breakout sessions
-
that I don't believe has been in the program so far.
-
Um, the first one at noon is about, um, the API.
-
If you can only come to one of our breakout sessions,
-
please make it that one.
-
The next one is a little run-through
-
of some of the more exciting pieces of technology
-
under the hood.
-
We're going to show you from the top of the--
-
top of the stack how our amazing spell-checker works,
-
how the rich text editor in the browser works,
-
and the algorithms that we used underneath
-
to do all the concurrency, control,
-
and conflict resolution and so on.
-
And then at 2:30,
-
one of our client team tech leads
-
are going to explain how we build
-
the web application with the Google Web Toolkit,
-
why we love it so much,
-
and what some other future plans are.
-
We also have in Room B4
-
from noon till 4:30 office hours
-
where you guys can come talk to the team in blue here.
-
They love talking.
-
And then I wanted to show you,
-
um, three important URLs here.
-
So for starters, wave.google.com
-
is going to be the home of Google Wave
-
when we launch it later in the year.
-
If you go there now or when the site goes live
-
in a little bit,
-
um, there is a sign-up form there
-
where you can sign up for notifications
-
when we launch it.
-
There's also going to be a beautifully edited video
-
of today's keynote.
-
Um, the API site is going to go live...
-
man: Already live.
-
Lars Rasmussen: The API site is already live.
-
No wonder I couldn't-- couldn't get a connection
-
to my mobile phone before.
-
It's at code.google.com/apis/wave.
-
It's got the API. It's got the documentation.
-
It's got the code samples we showed before.
-
Actually, I should just mention really quickly
-
the bug--the--the issue tracker integration
-
we showed at the end,
-
we have to cheat ever slow slightly
-
by using, uh, using an internal API
-
to the issue tracker.
-
I think they're working really hard
-
making APIs available.
-
So that particular sample is not going to be there
-
for--for a wee while.
-
Lastly, at waveprotocol.org,
-
you'll find the protocol draft,
-
the whitepapers, the discussion forum,
-
and so on if you guys are interested
-
in helping us, um, build that wave
-
to be an open system.
-
Hannon: You should tell them about the email.
-
Lars Rasmussen: Yes.
-
And the way you're going to get an account
-
is you'll receive an email later today
-
that explains where you can go and sign up
-
for an account,
-
which you will get shortly.
-
Okay. So, look, the last thing I want to say,
-
um, you can probably imagine it felt kind of nice
-
that you guys seemed to like what we built.
-
Um, one of the-- one of the best times
-
in my professional life
-
was after we launched Google Maps back in 2005
-
and developers started doing all kinds of crazy things
-
with Google Maps.
-
I hope some of you are here.
-
This was even before we had an API on Maps.
-
We scrambled to put an API on Maps.
-
And it's, uh, it's-- it's become very popular
-
and it's a huge driving force of success.
-
We learned a very important lesson
-
that--that you guys, developers,
-
are incredibly important to the success
-
of the kind of products that we build.
-
And so I can't wait to see what you guys
-
are gonna come up with.
-
Um, please, please, please, check it out.
-
Build cool stuff. Surprise us.
-
I just can't wait to see what you come up with.
-
Thank you very much.
-
[cheers and applause]