Seq. Time Transcript
1 00:01 man: Ladies and gentlemen,
2 00:02 please welcome Vice President, Engineering, Vic Gundotra.
3 00:07 [cheers and applause]
4 00:11 Gundotra: Well, good morning, everyone.
5 00:13 Welcome to day two of Google I/O.
6 00:16 I hope you all had a great time yesterday.
7 00:18 I hope you enjoyed your sessions,
8 00:20 and I hope you enjoyed those Android phones.
9 00:23 [audience whoos]
10 00:24 [cheers and applause]
11 00:29 Yesterday, we promised you a surprise for this morning.
12 00:33 And this morning, Google will surprise you.
13 00:37 We are about to unveil
14 00:39 a personal communication and collaboration tool
15 00:43 in a very early form.
16 00:45 We decided to do this at this forum
17 00:48 for a couple of reasons.
18 00:49 This unbelievable product,
19 00:51 one that I'm very, very excited about,
20 00:54 will be open-sourced.
21 00:57 It's open-sourced for many reasons.
22 00:59 Not only do we want to contribute to the Internet,
23 01:01 but frankly, we need developers
24 01:03 to help us complete this product,
25 01:05 and we need your support.
26 01:06 So we hope after you see this
27 01:08 you're as excited about it as we are.
28 01:11 And number two,
29 01:13 we decided to unveil this product
30 01:15 in its early form at this conference
31 01:17 because it is an unbelievable, powerful demonstration
32 01:20 of what is possible in the browser.
33 01:23 I guarantee you that over the next hour and a half,
34 01:26 as you see this product, you will forget
35 01:29 that you are looking at the browser.
36 01:31 And I want you to repeat after me.
37 01:33 "I am looking at an HTML 5 app.
38 01:36 I am looking at what's possible in the browser."
39 01:39 And I hope you are as excited and delighted as I was
40 01:43 when I first saw the thinking behind this product.
41 01:46 Now, it shouldn't have surprised me
42 01:48 that this product would be magical.
43 01:50 After all, the engineering leadership
44 01:53 had already produced a magical product.
45 01:55 The engineering leadership behind what you're about to see
46 01:59 is the work of two brothers,
47 02:01 and an amazing engineering team with them.
48 02:03 Those two brothers are Lars and Jens Rasmussen
49 02:07 You might remember those names,
50 02:09 because those were the same amazing people
51 02:12 that did another magical app called Maps--Google Maps.
52 02:16 And so you'll see what they've been working on
53 02:18 unveiled for the first time today.
54 02:20 So why don't we go ahead and get started?
55 02:21 Remember, this is an early developer preview
56 02:24 for this audience.
57 02:26 Everyone in this room will get accounts to give us feedback,
58 02:30 and we'll talk about that a little bit later.
59 02:32 We have your email addresses, so you will get those passwords
60 02:35 a little bit later on, likely tomorrow.
61 02:37 With that, let me just go ahead and get started.
62 02:39 Let me introduce Lars Rasmussen and Stephanie Hannon.
63 02:43 Thank you.
64 02:45 [cheers and applause]
65 02:47 Lars Rasmussen: Thank you.
66 02:48 Thank you. Thank you.
67 02:54 Thank you very much.
68 02:56 I shall wake up my laptop.
69 03:00 Good morning, everyone.
70 03:02 Thank you very much for coming early.
71 03:03 I know you've been here partying all night.
72 03:06 Uh, we're going to show a demo today
73 03:07 of a product that we've been working on
74 03:09 for a couple of years down in Sydney, Australia.
75 03:12 It's called Google Wave,
76 03:15 and it's a communication and collaborations tool
77 03:18 that we're launching later in the year.
78 03:20 Uh, like Vic said, it's a little unusual for us
79 03:22 to be showing it to the world this early.
80 03:25 The reason we're doing it is very simple.
81 03:27 We're starting a developer preview today.
82 03:30 You guys will all get accounts
83 03:31 on a sandbox build of the system.
84 03:33 You are the first outside of Google to see this,
85 03:36 and you'll be the first to get accounts on the system.
86 03:39 And we're doing that because as you will see from the demo,
87 03:43 Google Wave comes with a set of really nice APIs,
88 03:45 and we're hoping we can persuade you guys
89 03:47 to start building cool things with those APIs
90 03:51 while we're getting the product ready for launch,
91 03:54 which is going to happen later this year.
92 03:56 Because that way, when we do launch,
93 03:58 our users and your users can enjoy both Google Waves
94 04:01 and all the cool things that we hope you'll build
95 04:04 at the same time.
96 04:05 Let me introduce Stephanie Hannon.
97 04:07 She's quite possibly the best PM in the world.
98 04:10 [cheers and applause]
99 04:12 Hannon: [laughs]
100 04:16 Good morning, I/O.
101 04:18 Thank you, Vic, for the invitation to be here.
102 04:20 We couldn't imagine a better audience
103 04:22 to show our product to first.
104 04:24 Lars Rasmussen: I second that.
105 04:26 Hannon: Our presentation today is in three parts.
106 04:29 First, we're going to show you a demo of the product.
107 04:31 Second, we'll show you the APIs that Lars talked about.
108 04:35 You can use Waves to enhance your Web site
109 04:38 and you can build extensions to Wave itself.
110 04:41 Third, we'll show you that Wave is also a protocol.
111 04:44 We are very passionate about this being
112 04:46 an open system of communication.
113 04:49 We hope other people build Wave services
114 04:51 that interoperate with ours
115 04:53 so users have choice in their provider.
116 04:55 We affectionately call this the three Ps.
117 04:59 Product, platform, protocol.
118 05:01 And we'll talk about them all today.
119 05:04 Lars Rasmussen: Okay, so communication.
120 05:07 Um, email today is by far the most popular way
121 05:10 for us to communicate on the Internet,
122 05:11 which is remarkable,
123 05:13 because email was invented more than 40 years ago.
124 05:16 before the Internet, before the Web,
125 05:19 and it was done without the experience
126 05:21 of things like SMS, and instant messenging,
127 05:24 and blogs, and Wikis, and bulletin boards,
128 05:26 and discussion groups, and social networks, and Wikis,
129 05:29 and media sharing sites, and collaborative editors--
130 05:33 All of these different kinds of communication
131 05:35 that we take for granted today.
132 05:37 Also, of course, computers and networks
133 05:40 have dramatically improved in those four decades,
134 05:43 and so when we started this project--
135 05:45 and it's been more than two years--
136 05:47 we asked ourselves the question,
137 05:49 "what might email look like if it was invented today?"
138 05:53 And needless to say, there is about a million
139 05:54 different ways you can answer that question.
140 05:57 What you're going to see today, Google Wave, is our attempt.
141 06:01 And so let me start by briefly contrasting
142 06:04 email from Wave.
143 06:06 Email essentially mimics snail mail.
144 06:09 The basic metaphor is you write a message
145 06:11 and you send it to one or more recipients,
146 06:14 and then email systems--
147 06:15 and we like to think Gmail does this particularly well--
148 06:18 can collate related messages into conversations or threads.
149 06:24 Wave, by contrast, starts out
150 06:28 with the definition of a conversation,
151 06:29 which is simply a lightweight tree structure of messages
152 06:32 and a set of users participating in that conversation.
153 06:35 And then instead of thinking of individual messages
154 06:38 as being sent back and forth,
155 06:40 we think of the entire conversation object
156 06:42 as being a shared object hosted on a server somewhere.
157 06:46 And users that participate can open up that wave,
158 06:50 leave their replies, go away,
159 06:52 and then when the next user comes,
160 06:54 she can open up that same shared object,
161 06:57 see those replies, and add her own.
162 06:59 That's how the wave grows.
163 07:00 That's how the conversation builds up.
164 07:02 And you'll recognize that this is a model
165 07:05 that came to how bulletin boards work.
166 07:07 We found that with a tight enough implementation,
167 07:09 you can use that to build a single communication tool
168 07:12 that has functionality spanning quite a lot further
169 07:15 than what you can do with email today.
170 07:18 And so we'll show you a demo.
171 07:20 It'll take you through a series of usage scenarios
172 07:24 that you'll be familiar with,
173 07:25 but where today we would use different tools for each one,
174 07:29 and we'll show you how it all fits neatly
175 07:31 in this one metaphor of hosted conversations.
176 07:33 Stephanie.
177 07:35 Hannon: So what you are looking at is an HTML 5 app
178 07:38 that we built with the Google Web Toolkit.
179 07:40 On the left side is Lars running Chrome.
180 07:43 On the right side, I'm running Safari.
181 07:46 And a little bit later we're going to throw in Firefox.
182 07:48 So the same thing is being shown on each pair of screens,
183 07:51 you can just choose one to look at.
184 07:54 Lars Rasmussen: Okay, so we'll start
185 07:56 with plain vanilla-type email conversations,
186 07:59 and we'll show you how it looks in Wave.
187 08:02 We're planning a boat trip.
188 08:04 And I'm going to start by clicking "New Wave" here,
189 08:06 and then I'll type my title in the first line.
190 08:08 Hannon: Watch your spelling, Lars.
191 08:09 There's a lot of people.
192 08:11 Lars Rasmussen: [laughs] There is a lot of people.
193 08:12 They can't see what I'm typing anyway.
194 08:14 "Are you ready for the boat trip?
195 08:18 Hey, Steph."
196 08:20 Did you guys like the spell-checker?
197 08:22 [applause]
198 08:23 You do.
199 08:26 We'll talk more about that later.
200 08:27 Since you don't want to watch me type for an hour,
201 08:30 we put canned messages in there.
202 08:31 We'll try hard to pull them out before we launch.
203 08:35 I click "Done," it asks me for more users.
204 08:38 I'll add Stephanie.
205 08:40 And since she is offline,
206 08:42 I'm going to go stare at a blank page.
207 08:45 Hannon: So I will open Wave.
208 08:48 And you'll see in my Search panel, the middle panel,
209 08:50 will be an unread message from Lars.
210 08:53 He's asking me if I want to go shopping,
211 08:55 uh, before this boat trip,
212 08:56 so I'll do something very email like,
213 08:58 which is hit "Reply,"
214 08:59 and say, "I looove shopping."
215 09:03 Lars Rasmussen: I wrote the script.
216 09:05 Hannon: "I need new fins. Let's go."
217 09:11 The first benefit I want to show you
218 09:13 of this being a hosted conversation
219 09:15 is it's easier to keep track of structure.
220 09:18 If this was email and I wanted to reply
221 09:20 to the middle part of Lars's message
222 09:21 where he asked which bus to take,
223 09:24 I would hit "Reply," the email client would copy the message,
224 09:27 and I'd hand-edit in the response.
225 09:29 Because this is a hosted conversation
226 09:31 that lives in one place,
227 09:33 I can just instruct the server to split the message apart
228 09:37 and say, "You never wake up early,"
229 09:40 which is true.
230 09:42 "Let's take the late bus."
231 09:45 Okay, Lars isn't online; I'm going to close this wave.
232 09:49 Lars Rasmussen: So a little bit later I come back online,
233 09:51 and you'll see, for starters, that that wave is now bold
234 09:54 to show me there is new material in it.
235 09:56 When I open it up, Stephanie's first message gets the highlight
236 09:59 and I can navigate the conversation with my keyboard,
237 10:02 and of course, continue her thread here.
238 10:04 "You know me too well."
239 10:06 Like that.
240 10:08 And that's how plain vanilla email-type conversations
241 10:11 work in Wave.
242 10:13 So you've noticed that we have carefully avoided
243 10:15 having the wave open on both screens.
244 10:17 When we do have the wave open at the same time,
245 10:20 my message bounces right off the server
246 10:23 into Stephanie's browser.
247 10:24 The effect is that you can also
248 10:26 do Instant Messaging-type conversations in Wave.
249 10:29 In fact in the same wave you can switch back and forth
250 10:32 between these different ways of communicating.
251 10:34 I'll show you that now.
252 10:36 Shiny. You must know a good store.
253 10:41 [cheers and applause]
254 10:42 Hannon: There is a new one over on George Street.
255 10:48 Lars Rasmussen: Cool. Let's go at 7:00.
256 10:52 Hannon: "Sounds good. Let's invite Jens too."
257 10:56 Lars Rasmussen: "Okay."
258 10:57 So you noticed that it didn't wait for me to hit "Done"
259 11:00 before showing Stephanie the message,
260 11:02 but rather--and this was difficult to do--
261 11:04 we transmit live almost character by character
262 11:07 what I'm typing.
263 11:08 Why did we do that?
264 11:09 It's because with today instant messaging tools
265 11:11 you spend half of your time looking at it saying,
266 11:14 "Stephanie is typing, she's typing, she's typing,
267 11:16 she's typing," and then you see what she said.
268 11:21 Thank you. [laughs]
269 11:23 But because in general you can start formulating your own reply
270 11:27 before Stephanie is done typing hers,
271 11:30 by doing this live transmission,
272 11:31 you end up spending 100% of your time either reading or writing,
273 11:34 which dramatically speeds up the conversation.
274 11:37 Now needless to say, there are times
275 11:38 you don't want everyone to see every keystroke,
276 11:41 in particular if you spell like I do.
277 11:43 Um, and so we have this checkbox here.
278 11:46 All you have to do is check it
279 11:47 and now no one can see what you're typing
280 11:49 until you hit that "Done" button.
281 11:50 This is one of the features we haven't implemented quite yet.
282 11:53 [laughter]
283 11:58 Okay, so that's how email conversations,
284 12:00 or rather email-type conversations
285 12:02 and instant messaging-type conversations
286 12:04 no longer require two separate tools.
287 12:07 Next thing we want to show you is how easy it is
288 12:09 to add a new person to an ongoing conversation.
289 12:12 Can I just introduce my brother Jens, by the way?
290 12:15 Give him a hand, please.
291 12:16 [cheers and applause]
292 12:22 So we want to--
293 12:23 We want to add Jens to the conversation.
294 12:25 If this was email, I would take the last message here,
295 12:28 reply to it and add Jens to the recipient list.
296 12:31 There's two problems with that.
297 12:32 For starters,
298 12:33 because we branched the conversation up here,
299 12:36 that last email message
300 12:37 would not contain the entire conversation.
301 12:39 But also, if Stephanie then later
302 12:42 went and replied to an earlier message of mine,
303 12:44 Jens wouldn't get that anyway.
304 12:46 You end up with these cat and mouse games.
305 12:48 In the Wave model, all you have to do
306 12:51 is make Jens a participant in the wave like that.
307 12:55 And now I'll switch over to Firefox here
308 12:58 where Jens is already signed in.
309 13:01 Jens Rasmussen: So now that I'm on the wave,
310 13:03 um, I'm going to open it,
311 13:05 and, of course, everything is going to be marked
312 13:08 as unread for me.
313 13:10 But because I was added late,
314 13:11 I didn't get to see Lars's message in one piece,
315 13:14 and by the time I'm added they could be arbitrarily far apart.
316 13:17 So we added a feature called Playback.
317 13:20 So I get to see Lars's original message,
318 13:23 Lars asks Stephanie, Stephanie replies,
319 13:26 Steph does in-line reply, and so on, and so on.
320 13:29 [applause]
321 13:32 Thank you.
322 13:34 So Playback turns out to be a really useful feature,
323 13:37 particularly when the wave
324 13:38 starts picking up more structure,
325 13:39 and we'll show you more of that later.
326 13:41 But now that I've caught up on this wave,
327 13:43 I'm going to just add my reply.
328 13:48 "Me too."
329 13:50 Oh, I think I crashed.
330 13:51 Lars Rasmussen: Did I mention that it's a developer preview?
331 13:54 [laughter]
332 13:55 So we made sure to inject a few bugs
333 13:57 so that you wouldn't have too high expecta--
334 13:59 I'm just kidding.
335 14:05 Jens Rasmussen: Did you notice how quickly it reloads?
336 14:07 [laughter]
337 14:09 Did we mention we used GWT?
338 14:13 All right, so I'm going to add my reply.
339 14:16 "Me too.
340 14:17 Don't forget your keys."
341 14:22 And then I'll hand it back to Lars.
342 14:24 Lars Rasmussen: Thank you.
343 14:25 So that's how easy it is to add a new person
344 14:28 to an ongoing conversation.
345 14:30 And so often we end up having
346 14:31 very nice group conversations in Wave.
347 14:33 And then occasionally you want to say something
348 14:35 in a wave that's not visible to all the participants.
349 14:38 We call that a "Private Reply,"
350 14:40 and I'll add one down here at the bottom,
351 14:42 and I'll say,
352 14:43 "Let's buy Steph a reeeally nice present."
353 14:49 Hannon: I wrote this part.
354 14:51 Lars Rasmussen: And then I will add just Jens,
355 14:53 and you will see,
356 14:55 if I just quickly flip over to Jens's browser,
357 14:58 and scroll down,
358 14:59 he sees that private reply,
359 15:01 but if you look at Stephanie's screen,
360 15:04 she doesn't see it.
361 15:06 If you remember, I've explained
362 15:07 that a wave is a tree structure of messages.
363 15:09 Essentially you can take any sub-tree of the wave
364 15:13 and restrict access to a subset of the participants.
365 15:17 Okay, I switch back to my own account, here.
366 15:20 The next thing we want to show you
367 15:22 is how attachments work in Wave.
368 15:23 So we've been on a boat trip--
369 15:25 It was very nice, thank you--
370 15:26 And we all got pictures.
371 15:28 I have six of them sitting here on my desktop,
372 15:30 and I'm going to drag them onto the wave like this.
373 15:35 [applause]
374 15:42 Hannon: You might not have noticed,
375 15:44 but the thumbnails appeared on my screen
376 15:47 long before the full images were uploaded from Lars's computer.
377 15:50 I'll show you that again
378 15:52 by dragging in my own photos from iPhoto.
379 15:57 Ready? Here we go.
380 15:59 Lars Rasmussen: And you can see them show up over on my screen.
381 16:02 audience member: Yeah.
382 16:03 [applause]
383 16:04 Lars Rasmussen: Don't be shy, you guys.
384 16:06 If you like what you see, don't be shy letting us know.
385 16:09 [cheers and applause]
386 16:11 We can--we can handle pretty much any amount of applause.
387 16:15 [laughter]
388 16:17 Hannon: This feature--
389 16:18 drag and drop from the desktop to the browser--
390 16:20 is the one part of Wave that HTML 5 can't support yet.
391 16:25 We're working on a proposal to add it to the standard.
392 16:28 In the meantime, you need to download Gears
393 16:30 for this specific feature to work.
394 16:32 It's the only part of Wave that you need Gears for.
395 16:36 When Lars dropped in his images,
396 16:38 you might've noticed at the bottom of the Wave panel
397 16:40 there's an Image menu
398 16:41 with actions you'd probably do on images,
399 16:43 like upload or download.
400 16:46 What's important is these actions
401 16:47 apply to all the images in the wave,
402 16:50 not just the ones I dropped in,
403 16:52 which makes Wave really an easy, lightweight way
404 16:54 to create a group photo album together,
405 16:57 which is surprisingly hard to do with today's tools.
406 17:00 Lars Rasmussen: And so here's the photo album.
407 17:02 This is Captain Athena.
408 17:04 Here's the hard life down under.
409 17:06 And as advertised, you'll see over here
410 17:08 Stephanie's images show up in my slideshow
411 17:10 so that I can show you
412 17:11 just how much fun life down under is.
413 17:17 And that's images.
414 17:19 So that's how easy it is to share photos in Wave.
415 17:21 This was a group trip.
416 17:23 We'll all throw our photos in here.
417 17:24 We'd probably share it with the rest of the office
418 17:26 to make them envious.
419 17:27 In this particular case, it's not clear
420 17:30 that we want everyone to know that we went shopping together.
421 17:33 And so one of the features down here
422 17:35 lets me copy just the images
423 17:37 from this wave into a fresh wave.
424 17:39 "Boating in January.
425 17:42 Enjoy all, here and yonder."
426 17:47 And then I'll add Stephanie to this.
427 17:49 I could now share that with the rest of the office.
428 17:52 Now, this feature here of extracting images
429 17:55 from a wave and putting them in a new one
430 17:57 is actually part of a very important
431 17:59 design principle for us.
432 18:00 Namely that we care just as much
433 18:02 about the product of the wave as we do the wave itself.
434 18:06 And we'll show you more examples of that later.
435 18:11 Yes, we will.
436 18:13 Um, I forgot what's next.
437 18:16 Hannon: How 'bout we show them the embedding APIs?
438 18:19 Lars Rasmussen: Excellent idea.
439 18:20 Okay, thank you. So...
440 18:21 [laughter]
441 18:22 She's right.
442 18:24 We should've rehearsed this before coming this morning.
443 18:26 Just kidding.
444 18:27 So the first--
445 18:29 The first category of, um, APIs that we want to show you
446 18:32 are APIs that let you embed waves onto your webpage.
447 18:37 It is very similar to the Maps API,
448 18:40 which, by the way, um, thank you, everyone who used it.
449 18:43 We consider your enthusiasm for that API
450 18:46 an enormous factor in that product's success,
451 18:49 and we're hoping, obviously, to repeat that with Wave.
452 18:52 Hannon: Give a round of applause to themselves.
453 18:54 Lars Rasmussen: Oh, yeah, a round of applause to yourself.
454 18:56 Well done. [applause]
455 18:58 Lars Rasmussen: Okay, so... Hannon: Yay, developers!
456 19:01 Lars Rasmussen: Here's an example application.
457 19:02 It's a little blogging site we've built.
458 19:04 It's over on Google App Engine,
459 19:06 but you could build it anywhere you host your website.
460 19:09 And this blogging site--
461 19:10 In addition to embedding waves on its pages,
462 19:13 it provides me with this robotic participant
463 19:16 that we affectionately call Bloggy.
464 19:18 All I have to do is add Bloggy to the wave,
465 19:22 and now you'll see--
466 19:24 You can probably not read that,
467 19:25 but on that yellow banner,
468 19:27 all users on the wave is now warned that Bloggy,
469 19:30 this new participant, has published the blog
470 19:33 on a page which we built over an app engine.
471 19:36 Can I just introduce Gregory Delasander?
472 19:39 He's another PM on the team.
473 19:40 [cheers and applause]
474 19:42 And he's going to show you the blog site now.
475 19:45 Delasander: Hi, I'm Greg,
476 19:46 and I'm a huge fan of Lars's blog,
477 19:47 just like everybody on the team is told they should be.
478 19:50 I'm going to show you... Hannon: He makes us read it.
479 19:53 Lars Rasmussen: It's a good blog. Come on.
480 19:54 Delasander: Oh, hold on just a second.
481 19:59 Did we lose...
482 20:02 Hannon: Did we lose VPN?
483 20:03 Delasander: Yes, I think we might have.
484 20:05 Hannon: Lars, this is where you do the dance.
485 20:06 Delasander: Lars, dance a little bit.
486 20:07 Lars Rasmussen: Everyone look at me.
487 20:08 Don't look at his screen.
488 20:09 [humming]
489 20:11 The Wave dance.
490 20:12 Delasander: I think we lost all connectivity.
491 20:14 Lars Rasmussen: Neener, neener. Neener, neener.
492 20:19 There's not a-- Delasander: And then...
493 20:22 Lars Rasmussen: There's not a lot of people in the world
494 20:23 that can have their demos as spectacularly fail
495 20:25 in front of 4,000 people and not break a sweat.
496 20:29 Hannon: It wasn't the demo, it was the network.
497 20:31 Lars Rasmussen: We wish we were one of them.
498 20:33 Delasander: Excellent.
499 20:34 Lars Rasmussen: I think your proxy server might be missing.
500 20:36 Oh, there we go. Hannon: All right, we're back.
501 20:38 Delasander: So as I was saying...
502 20:42 The blog.
503 20:44 So in the blog, one of the cool things you'll s--
504 20:46 you can see is that we're not just embedding the images,
505 20:49 we're actually embedding the whole wave
506 20:50 with all of its UI.
507 20:52 This means that I can respond.
508 20:54 "Hey, that looks fun. Why wasn't I invited?"
509 20:57 [cheers and applause]
510 21:03 The same way we embed--
511 21:06 And we--we do--
512 21:07 You can respond in the same way you do in the Wave client.
513 21:10 Lars Rasmussen: Exactly.
514 21:11 And so now, I can see, obviously, uh,
515 21:13 Greg's question from inside my Wave client.
516 21:15 I can answer from in here.
517 21:17 I don't have to go to the blog site to do that.
518 21:19 I could if I wanted to, but I can stay here.
519 21:22 "Um, I lost the phone with your number."
520 21:28 I really, truly can't spell.
521 21:30 Here we go.
522 21:32 Delasander: So one of the things you just saw
523 21:34 is that I happened to be online when Lars was online,
524 21:36 and I saw his response coming in live on his blog.
525 21:39 That's not always going to be the case.
526 21:40 Since I responded to this blog,
527 21:42 it'll show up in my Wave client.
528 21:45 Right after I refresh my Wave client.
529 21:49 Um, it will show up in my Wave client
530 21:51 and I can continue the conversation in there.
531 21:54 "But, Lars, I live next door."
532 21:57 [laughter]
533 22:00 And, um-- And then we can--
534 22:01 That response shows up on the blog,
535 22:04 we can continue the conversation from there,
536 22:06 and anyone else can join in that conversation.
537 22:09 Lars Rasmussen: Thank you, Greg. Delasander: No problem.
538 22:11 [applause]
539 22:14 Lars Rasmussen: Thank you.
540 22:17 And so this, again, is an example
541 22:19 of how to use our embedding APIs to put blogs on your web pages,
542 22:23 and here we showed you with a blogging site,
543 22:25 but you could imagine discussion group sites,
544 22:27 community forums--
545 22:28 if you have a rich-media site
546 22:29 you can let your users discuss that using waves.
547 22:33 The benefit for developers, of course,
548 22:34 is you get to provide this very live, rich experience
549 22:38 with very little code.
550 22:39 For your users, for starters, they get to use a familiar UI,
551 22:43 but for those of your users that have Wave accounts,
552 22:46 they get to walk around the Web
553 22:48 and aggregate the conversations they're interested in
554 22:50 into the Wave client so that they don't
555 22:52 have to go check back on 10,000 different pages
556 22:55 whether someone responded to them.
557 22:57 Which will make flame wars so much more effective.
558 23:00 [laughter]
559 23:01 She hates that joke.
560 23:03 Hannon: I hate it. [laughs]
561 23:05 Lars Rasmussen: Okay.
562 23:06 So that was an example of how to embed waves.
563 23:09 The embedding APIs can do other things,
564 23:11 and Stephanie will show you that now.
565 23:13 Hannon: So we invited some of our colleagues
566 23:15 from Brazil and India to Sydney
567 23:17 who work on one of our social networks called Orkut.
568 23:20 We wanted to build a demo of what it could look like
569 23:23 to put waves inside of Orkut.
570 23:25 Obviously, it's a place where lots of discussions happen.
571 23:28 It demonstrates three important principles,
572 23:31 or features, of our embed API.
573 23:34 Let me load up the demo.
574 23:42 So here's my Orkut account.
575 23:44 And you can see there's a Wave panel in the middle.
576 23:47 And the first thing is I can create a wave on Orkut.
577 23:51 So I'm starting a new wave, and I'll say, "Brazil trip?
578 23:54 Wonder when Lars will let me go."
579 00:01 The second important feature is that you can
580 00:03 use contacts other than your Wave contacts.
581 00:06 In this case, the authors of the site
582 00:08 chose to use the Orkut contacts,
583 00:10 so I can add some of my Orkut friends
584 00:12 like Sid, Torston, and Rodrigo,
585 00:16 who all helped build this demo.
586 00:18 The third principle is that I can embed a "Search" panel
587 00:21 inside of Orkut using the embed API.
588 00:25 I'll show you that now.
589 00:27 I can search for all my waves from here.
590 00:32 And so on. And look at them.
591 00:35 So that's waves embedded in Orkut.
592 00:38 What's important is that our embed API
593 00:41 is powerful enough for you to build your own Wave client.
594 00:45 In this case, the Orkut team
595 00:46 chose to focus on waves created inside of Orkut.
596 00:49 But just like in the blog example,
597 00:52 I can go back to my Wave client,
598 00:54 and I can see the wave I started there.
599 00:57 "Wonder when Lars will let me go to Brazil."
600 00:59 So that's the embed API.
601 01:02 Lars Rasmussen: You guys-- [applause]
602 01:04 Thank you.
603 01:09 Are you guys feeling inspired yet?
604 01:11 So remember that we're all going to give you accounts
605 01:13 on a sandbox build,
606 01:15 which is in fact the build that we're demo-ing from later today,
607 01:18 and this is all sample applications
608 01:21 that we're hoping you'll pick up
609 01:22 and build much, much cooler things with.
610 01:25 Okay, so the next thing I want to show is
611 01:27 of course you're going to want Wave on your mobile devices,
612 01:31 and I have an Android and an iPhone here,
613 01:34 and I was going to show you how well it works communicating
614 01:38 from mobile devices to the desktop,
615 01:41 but you guys are all on Facebook, aren't you?
616 01:43 Because I can't get on the wireless.
617 01:46 [laughter]
618 01:47 So if it doesn't work, it's your fault.
619 01:51 Okay, so you can see my inbox over here.
620 01:53 This is on the Android device.
621 01:54 Here's an open--
622 01:56 uh, the same open wave we saw before.
623 01:58 You see the pretty pictures here.
624 02:00 And then I can click the "Reply" button like this,
625 02:05 and you'll see over on Stephanie's screen,
626 02:08 which I can't see.
627 02:11 You will see a reply.
628 02:13 Imagine I was actually on a network,
629 02:15 and then I could type in, "I am on the boat."
630 02:21 Done.
631 02:23 Notice again my spelling.
632 02:25 And nothing is going to show up over there
633 02:27 because we haven't yet figured out
634 02:28 squeezing this through without a connection.
635 02:32 Maybe we'll show you that.
636 02:33 [laughter]
637 02:35 Hannon: As long as it's your fault that it's not working.
638 02:37 Lars Rasmussen: We are--
639 02:38 Hannon: I just don't want to screw up the--
640 02:39 Lars Rasmussen: We are working on it.
641 02:40 Okay, so that's mobile.
642 02:44 Hannon: How 'bout we talk about editing?
643 02:46 Lars Rasmussen: Oh, that's a brilliant idea.
644 02:47 Thank you.
645 02:49 Okay, so the next thing we're going to show.
646 02:51 Again because, um, there's only--
647 02:53 Back to my desktop. Thank you.
648 02:54 There is only one copy of the wave out there.
649 02:57 Even though we put these pictures on my blog,
650 02:59 I discussed them with Greg,
651 03:01 uh, we had them on my mobile device.
652 03:03 Now I notice that some of the captions
653 03:05 are kind of wonky.
654 03:06 And all I have to do is click this "Edit" button here,
655 03:09 and then I can fix that.
656 03:11 Kayaks. Beer Man.
657 03:14 Thank you. [applause]
658 03:18 Hannon: And as you notice,
659 03:19 the captions are updating on the blog.
660 03:22 Lars Rasmussen: Yes, hopefully you saw that the captions
661 03:24 were actually updating live on the blog as I was typing.
662 03:28 So, here I edited my own message,
663 03:30 but we actually let users edit each other's messages as well,
664 03:34 which is a very nice effect that in addition
665 03:36 to everything we showed you already,
666 03:38 you can use waves
667 03:39 to collaboratively author documents,
668 03:41 which we'll show you now.
669 03:42 So let's leave the boat behind, and let's go to work.
670 03:45 Stephanie.
671 03:47 Hannon: As Lars mentioned, I'm a product manager,
672 03:49 and I often have to take notes in a meeting.
673 03:51 Today I have to decide if I want to send those notes
674 03:54 out on email because I want people to discuss them,
675 03:57 or if I'm going to put them in a dock or a Wiki,
676 03:59 'cause I want other people to help me edit them.
677 04:01 With Wave you don't have to make that choice.
678 04:03 You can do both discussion and content collaboration
679 04:07 in one tool.
680 04:09 So these are our meeting notes.
681 04:11 I'm going to add Lars,
682 04:13 Jens, Greg, and ACD.
683 04:17 [Lars Rasmussen and Hannon speak over each other]
684 04:18 Lars Rasmussen: Pardon me.
685 04:20 Hannon: Then you open it.
686 04:21 Lars Rasmussen: Then I open it.
687 04:22 And even though this is Stephanie's message,
688 04:24 I can click that same "Edit" button
689 04:26 and change this to "glorious."
690 04:31 And then I can add an action item.
691 04:33 "AI. Make more better AIs, already."
692 04:38 Whoo, like that.
693 04:39 Thank you.
694 04:40 [applause]
695 04:43 Thank you.
696 04:44 And so that's how easy it is
697 04:46 for me to edit Stephanie's message.
698 04:48 We want to show you now how it looks
699 04:49 to the other participants on the wave--
700 04:51 the fact that I edited her message.
701 04:52 We'll start with Stephanie.
702 04:54 Hannon: So you can see the wave pop back into my inbox
703 04:56 because there's new material.
704 04:58 If I open it, I see the markups.
705 05:01 So I see the changes that Lars made.
706 05:03 Lars Rasmussen: Thank you.
707 05:05 [applause]
708 05:09 Hannon: We haven't implemented it yet,
709 05:11 but we'll also have a little description at the top
710 05:12 that says Lars edited this message.
711 05:15 What's important is I see these markups
712 05:17 not because I wrote the original message,
713 05:20 but because I saw the original message.
714 05:23 Anyone who saw my original message
715 05:25 would see these same markups
716 05:27 the next time they visited the wave
717 05:29 after Lars made his edits.
718 05:31 Jens Rasmussen: All right, now,
719 05:32 I didn't get to see the original message,
720 05:33 so when I open up this wave,
721 05:35 I just see the current version of it.
722 05:37 But I do get to see
723 05:38 that both Stephanie and Lars wrote this message.
724 05:41 Most of the time I'm not going to care,
725 05:44 but if I do care, then Playback is my friend again.
726 05:47 So I see Stephanie's original message,
727 05:49 she adds Lars,
728 05:51 and then I get to see Lars's edits.
729 05:55 [applause]
730 05:58 Thank you.
731 06:00 So now that we have accountability--
732 06:01 accountability in place,
733 06:03 we're going to allow everybody on a wave
734 06:05 to edit everything by default.
735 06:08 When something is changed,
736 06:09 the author is notified immediately,
737 06:10 and, if needed, can take action.
738 06:12 and everybody who's on the wave can find out who did what.
739 06:17 So Stephanie promised that we were going to do
740 06:20 collaboration and communication using the same tool.
741 06:22 Hannon: I did. Jens Rasmussen: So I'm going--
742 06:24 Now that I know that Lars made this--the request for more AIs,
743 06:27 I'm going to use the in-line reply tool we showed earlier,
744 06:30 um, to add my reply here.
745 06:34 "No, enough AIs already."
746 06:40 My spelling is not doing well either.
747 06:44 Lars Rasmussen: It's hard when 4,000 people are watching.
748 06:46 Jens Rasmussen: Typing and talking?
749 06:47 It's a little bit too much.
750 06:48 There we go. So I'll hand it back to Lars.
751 06:50 Lars Rasmussen: Okay, thank you.
752 06:51 So notice--
753 06:53 Notice that we never said, "Let's start a document, here."
754 06:56 These are all just waves.
755 06:57 The only thing different here
756 06:58 is that we chose to think of that opening message
757 07:01 more like a document we're collaborating about
758 07:03 than a message that starts a conversation.
759 07:06 And then we're choosing to think about that in-line reply
760 07:09 more like the beginning of a conversation
761 07:11 about the point in that document.
762 07:13 But to the system, they're all just waves,
763 07:15 and in fact, you can collaboratively edit
764 07:17 any message in the tree.
765 07:19 Doesn't have to be, uh, document-like at all.
766 07:22 Stephanie often comes and very friendly fixes
767 07:24 all of my spelling errors.
768 07:27 And so we think this combination of collaborative editing
769 07:31 and in-line discussion
770 07:33 makes for a very powerful collaboration tool.
771 07:35 And I want to show you that with a design document
772 07:38 that the team wrote a while back.
773 07:41 Let me just reconfigure my client, here.
774 07:43 I'm going to go do a safe search, find the document here,
775 07:49 Let me make some more space for it.
776 07:51 And you'll see here that it's a RISTEX document.
777 07:54 It's got headlines, it's got bullet points.
778 07:55 It's got illustrations, different types of fonts.
779 07:58 And then it's interrupted
780 07:59 by these little snippets of conversation
781 08:02 that help facilitate the collaboration.
782 08:05 And as always, the best way to see how this happened
783 08:07 is to play back the wave.
784 08:09 And you'll see Steven, our trusted server guy,
785 08:11 started out with a terse draft.
786 08:13 He added the rest of the team
787 08:15 Lars the manager says, "Please do more work."
788 08:18 Steven grudgingly adds another paragraph.
789 08:20 He says, "Yeah, whatever."
790 08:22 Then Stephanie the PM makes an edit here.
791 08:24 She adds a comment there,
792 08:26 starts a discussion there, and so on.
793 08:29 I can use the slider here to drag it
794 08:31 to anywhere in the history of the wave.
795 08:34 And we're planning a bunch of power tools
796 08:36 that come with Playback.
797 08:38 For example, I might ask it
798 08:39 only to play back Stephanie's contribution.
799 08:41 So I might ask it to only play back a single message
800 08:44 or even a single paragraph inside a message.
801 08:47 we're definitely going to let you take
802 08:48 one change in the history
803 08:50 and revert it at the end of the history.
804 08:52 Maybe name aversion so that you can find it again and so on.
805 08:55 Playback is going to be a really powerful tool
806 08:57 for investigating and manipulating
807 09:00 the entire history of the wave.
808 09:04 Thank you.
809 09:05 [applause]
810 09:10 And so now imagine we're done with the design document.
811 09:13 Or we find we're in a good state;
812 09:15 we want to share it with a wider audience.
813 09:17 You'll notice it's not super comfortable reading a document
814 09:19 interrupted by all this discussion,
815 09:21 so we added this widget here
816 09:23 that lets you hide and show some discussions,
817 09:27 but also, just like we extracted images from a wave earlier,
818 09:31 we let you extract the current version
819 09:33 of any message in a tree into a fresh wave.
820 09:36 Like this.
821 09:37 And now I have a fresh wave
822 09:39 with the pristine product of our work,
823 09:42 which I can now submit to the server
824 09:44 and share with whomever I like,
825 09:45 put on a mailing list internal blog or even keep working on.
826 09:49 And in fact, we're planning more features here
827 09:52 for document production.
828 09:53 Imagine you go back and do more work
829 09:55 in the original wave.
830 09:57 Then you'll be able to merge just those changes
831 09:59 into that same product wave.
832 10:01 The product wave will just have a two-step history now,
833 10:04 where each step is attributed to whoever did the copy.
834 10:07 In fact, and you guys will recognize this as, um,
835 10:10 inspired by source-controlled systems.
836 10:12 We'll have you--
837 10:13 We'll let you have a whole string of work waves,
838 10:15 all pointing to the same product wave.
839 10:17 You can have different themes
840 10:18 working on different parts of a wave,
841 10:20 and then when one team merges
842 10:22 and that changes into the product wave,
843 10:24 the other teams can pull that down,
844 10:25 merge it with the local changes, and so on.
845 10:28 So this is going to become
846 10:29 a very powerful document production tool.
847 10:33 Thank you.
848 10:34 [applause]
849 10:39 We showed you this, of course, with, um,
850 10:42 with, uh, rich text documents.
851 10:44 There's no reason we shouldn't
852 10:46 later add spreadsheet-type functionality in there,
853 10:48 or presentation building-type functionality in there.
854 10:50 In fact as we'll show you later, we've taken great care
855 10:53 to make the content model inside Wave extendable,
856 10:56 both by us and by you.
857 10:59 Okay, the next thing I want--
858 11:00 Hannon: Why don't you just talk for a minute
859 11:02 before you open it?
860 11:03 Lars Rasmussen: Talk for a minute...
861 11:05 Hannon: You know.
862 11:06 Lars Rasmussen: Before I open it.
863 11:07 Hannon: 30 seconds.
864 11:08 Lars Rasmussen: We could do a little interpretive dance
865 11:10 while we open it.
866 11:11 It's not that there's anything wrong
867 11:12 with the thing I was about to open,
868 11:13 it's just that--
869 11:14 How're you guys doing?
870 11:15 [laughter]
871 11:17 Are you having a good time?
872 11:18 I know it's a long demo. Thank you.
873 11:20 Don't be shy if you like it.
874 11:23 Hannon: All right, we're ready.
875 11:24 Lars Rasmussen: There's a whole bunch of people
876 11:25 in blue shirts working feverishly over there.
877 11:28 [chuckles] And we're ready.
878 11:30 Okay, so here is a wave, um...
879 11:33 Here is a wave. That's right.
880 11:34 So my little introduction here is the following:
881 11:37 We're going to show you now
882 11:38 the thing we had the most fun working on.
883 11:40 As in this was the hardest thing we did.
884 11:43 Um, which is to let more than one person
885 11:46 edit the same message at the same time
886 11:48 and still transmitting the characters live on the wire.
887 11:51 So we have a set of pictures here,
888 11:52 and Stephanie is going to start
889 11:54 at the top-left editing the captions.
890 11:56 You can see on my screen
891 11:57 I can see exactly where that orange label--where she is,
892 12:00 and I'm going to start from the lower-right.
893 12:02 Hannon: "Thumbs up."
894 12:04 Lars Rasmussen: "Spelling Google."
895 12:06 Hannon: "Lars in the lead."
896 12:07 Lars Rasmussen: "Smiley David."
897 12:09 Hannon: "Wave crew hiking." Lars Rasmussen: "Kapow."
898 12:11 [applause]
899 12:12 Thank you.
900 12:14 Now we're very close to each other.
901 12:15 I'll add some styling here.
902 12:17 I'll make this italic.
903 12:19 Oh, boy, if someone can add some color.
904 12:22 We can do this.
905 12:23 Notice how close we can edit to each other.
906 12:25 You can see we've got a couple of--
907 12:26 of our team has joined us.
908 12:28 We've got three people here.
909 12:29 Casey, Steph, Ophir and Dan.
910 12:32 We have four people now,
911 12:34 editing the same document right next to each other.
912 12:37 [applause]
913 12:41 Thank you.
914 12:43 Thank you.
915 12:45 And so apart from hours and hours of fun
916 12:47 just chasing each other's carrots around on the screen...
917 12:50 [laughter]
918 12:51 Hannon: It's a lot of fun. Lars Rasmussen: A lot of fun.
919 12:54 Um, the--the--this sort of live, concurrent editing
920 12:57 opens up a whole set of new ways of using the tool.
921 13:00 We're actually still discovering some.
922 13:02 Imagine you're in the same room,
923 13:03 you're taking notes from a meeting.
924 13:05 Oftentimes people don't even come to the meeting,
925 13:07 they just open up the wave, see the notes being taken,
926 13:10 they just pop their questions in the wave, and so on.
927 13:14 I want to-- while I'm showing off our edit,
928 13:16 I want to make sure you see
929 13:18 that it supports right-to-left languages.
930 13:20 This is Ophir speaking in Hebrew.
931 13:23 Thank you.
932 13:24 [applause]
933 13:28 You see up at the top-left that the editor supports languages
934 13:31 that require international input method editors as well.
935 13:35 I'm pretty sure that's Chinese.
936 13:40 Okay. That's collaborative editing.
937 13:46 And now...
938 13:48 Man, this is a long demo.
939 13:50 You guys want to stand up a little?
940 13:51 Stretch. Hannon: Any stretching?
941 13:52 Lars Rasmussen: Stretch a little.
942 13:53 Hug the person next to you.
943 13:55 [laughter]
944 13:56 You don't have to do that.
945 13:57 Hannon: A hug break. Make some friends.
946 14:00 Lars Rasmussen: Um, I want to take a little break.
947 14:02 We have lots more to show you,
948 14:04 but I want to take a little break,
949 14:05 and I want to, um, call out to our friends and colleagues
950 14:09 on the Google Web Toolkit team.
951 14:11 So--Thank you.
952 14:12 [applause]
953 14:14 Thank you.
954 14:18 So Google Wave is 100% built with the Google Web Toolkit
955 14:22 from the first line of code we wrote in a prototype
956 14:25 back in early 2007.
957 14:27 And as I'm sure you know, the Google Web Toolkit
958 14:30 lets you write HTML 5 applications in Java.
959 14:34 And then GWT, as we call it,
960 14:36 automatically translates that into HTML, JavaScript, CSS,
961 14:40 all of those things that then run
962 14:41 in all of the modern browsers.
963 14:43 And I think that we couldn't possibly have built
964 14:47 something this rich without the Google Web Toolkit.
965 14:50 In fact, I don't think we would even have thought to do that.
966 14:54 I think using modern tools like this
967 14:56 changes your way of thinking.
968 14:58 When I was still hand rolling JavaScript for Google Maps,
969 15:01 I found too much of my brain cycles
970 15:05 were used worrying about the constraints of programming
971 15:07 in a scripting language in a browser.
972 15:09 But by using GWT, I get to write in Java
973 15:12 and have this amazing set of tools
974 15:13 that come with writing in Java,
975 15:15 and we found that our programmers
976 15:17 can now spend most of their time
977 15:18 thinking about the amazing potential of the Web.
978 15:23 And by the way, this is both if you're on a desktop
979 15:26 or if you're on a mobile device,
980 15:28 when I showed you on the Android and iPhone here,
981 15:31 Wave was running in the browser in both of those phones.
982 15:35 GWT makes that fairly easy to do.
983 15:37 It's actually the same code
984 15:39 that runs in those mobile devices,
985 15:41 it's just a different layout.
986 15:43 We estimate that the extra requirement of serving this
987 15:46 both into desktop browsers and mobile browsers
988 15:49 only adds about 5% extra engineering effort,
989 15:52 which I find remarkable.
990 15:56 Okay.
991 15:57 Hannon: And that graph from yesterday.
992 15:58 Lars Rasmussen: Pardon me.
993 16:00 Oh, the graph from yesterday. Did you see that?
994 16:01 How we built 1.4 megs of code and then all of a sudden
995 16:04 it went down to 200k?
996 16:06 We like GWT for that.
997 16:09 [applause]
998 16:13 Hannon: All right. So back to the demo.
999 16:15 Let's talk about organization.
1000 16:17 We learned from our own use of Wave
1001 16:20 that you get a lot of waves, which is great,
1002 16:23 but you need tools to organize them.
1003 16:25 We have things you're familiar with
1004 16:26 like folders and saved searches.
1005 16:29 We also have tags and they're shared
1006 16:31 by all the participants on the wave.
1007 16:34 So you have just as much incentive
1008 16:35 to put a great tag on a wave as a great subject.
1009 16:39 For example, Lars is way too lazy
1010 16:41 to organize his own stuff.
1011 16:42 Lars Rasmussen: Oh, yeah.
1012 16:43 Hannon: So we have a team help him do it.
1013 16:46 Lars Rasmussen: Thank you. Hannon: [laughs]
1014 16:48 But the most powerful way to organize waves
1015 16:50 is with waves themselves.
1016 16:52 Let me open a wave we used to organize this demo.
1017 16:55 You can see it has links to other waves in it
1018 16:57 and you can combine, uh, them in sections, formatting.
1019 17:01 You can discuss them.
1020 17:03 And if I click on one of these links,
1021 17:05 it'll take me to that wave
1022 17:07 and I can use the back button to go back.
1023 17:10 So let me show you how easy it is
1024 17:12 to create one of these wave links.
1025 17:14 If I missed one, I can just pick it up
1026 17:17 from the search panel and drop it in.
1027 17:20 [applause]
1028 17:25 I'll do that one more time 'cause I think it's cool.
1029 17:28 Drop it in.
1030 17:30 So we found on our own team
1031 17:32 links--wave links are good for more than just lists.
1032 17:34 We're actually interlinking a lot of waves on our site
1033 17:37 almost like a Wiki, uh, on our team.
1034 17:40 Before we get to Wave extensions,
1035 17:42 which I know this audience is really excited about,
1036 17:44 I want to show you one more thing
1037 17:46 that we worked really hard on.
1038 17:48 I'm going to go up here and search for Google Wave.
1039 17:51 Lars Rasmussen: I have a feeling, uh, you're going
1040 17:52 to want to refresh your browser before we do this.
1041 17:55 Hannon: Just like my inbox, when a wave matches this search,
1042 17:59 it will pop into the panel.
1043 18:03 Lars Rasmussen: And so Stephanie has a search
1044 18:04 for Google Wave over there.
1045 18:06 I'm teeing up a new wave here.
1046 18:08 Said, "Wow.
1047 18:09 I am finally demo-ing Google Wave."
1048 18:15 Now the reason this hasn't showed up
1049 18:17 in Stephanie's search yet is I didn't type the E.
1050 18:20 So what I'm going to do, I'm going to count to three,
1051 18:22 then I'm going to hit the E,
1052 18:24 and you guys can count how many seconds it takes
1053 18:26 before it shows up in Stephanie's browser.
1054 18:28 One, two, three.
1055 18:32 [applause]
1056 18:37 You guys want to-- you guys want to see that again?
1057 18:40 [laughter]
1058 18:41 Hey, Stephanie, can you open up that wave for me?
1059 18:44 Hannon: All right, let me go over there.
1060 18:45 Lars Rasmussen: Backspace.
1061 18:46 Hannon: [laughs]
1062 18:48 [laughter and applause]
1063 18:51 Lars Rasmussen: E, backspace, E,
1064 18:53 backspace, E, backspace, E, backspace.
1065 18:57 We call that the Wave dance.
1066 19:00 So we've worked really hard on this.
1067 19:02 We're pretty proud of the result.
1068 19:03 I should just say after we started using it,
1069 19:06 we found this is almost too fast.
1070 19:07 Sometimes, uh, it draws your attention
1071 19:09 to unfinished work.
1072 19:10 And we're actually looking for the right balance
1073 19:12 between speed and not being interrupted too often.
1074 19:17 Okay, what's next?
1075 19:19 Hannon: Extensions. Lars Rasmussen: Extensions.
1076 19:22 The reasons you guys came here.
1077 19:24 Okay. So the next thing we want to show
1078 19:27 is the other category of APIs
1079 19:30 that we're making available today,
1080 19:31 which is about extending the functionality of Wave.
1081 19:35 So we have tried hard to maintain a discipline
1082 19:37 on the team that even significant offerings
1083 19:40 of our own should be built with our own extension APIs
1084 19:43 so that your extensions will live
1085 19:45 as first-class citizens inside Wave.
1086 19:47 It's similar, actually, to how browsers like Firefox
1087 19:51 let you extend them.
1088 19:52 This is just the web site you're extending
1089 19:54 instead of the browser.
1090 19:55 So let me show you some examples.
1091 19:58 You've undoubtedly noticed how all morning,
1092 20:00 I've been pretending my spelling is bad
1093 20:03 just so that we could show off our spell-checker.
1094 20:06 So normally spell-checkers work
1095 20:07 by matching words up against a dictionary.
1096 20:09 If they find there's-- if they don't find a word
1097 20:11 that is in error,
1098 20:12 the problem is that oftentimes
1099 20:14 spelling mistakes hits other dictionary words.
1100 20:16 And so our spell-checker actually takes the context
1101 20:19 of the word into account
1102 20:21 and then it matches it up
1103 20:22 against an enormous language model
1104 20:24 that we've built from the entire web.
1105 20:26 Let me show you how powerful that is.
1106 20:29 We call this the "Bean Soup Demo."
1107 20:32 "Can I have some been soup?"
1108 20:38 It puts a red on the line
1109 20:39 and it knows that I meant "bean soup."
1110 20:42 Thank you.
1111 20:43 [applause]
1112 20:47 Okay, now watch carefully.
1113 20:49 "It has bean so long."
1114 20:54 Did you see that?
1115 20:59 So it is--it has become so good at spell-checking
1116 21:02 that often, it has enough confidence
1117 21:04 that we let it automatically correct my errors.
1118 21:07 Let me show you that again.
1119 21:10 "Icland is an icland."
1120 21:15 [applause]
1121 21:22 "You are to kind."
1122 21:29 Pretty cool, huh? [laughs]
1123 21:31 You didn't see that last one.
1124 21:33 Okay, so that's our spell-checker,
1125 21:35 or Spelly as we affectionately call it.
1126 21:37 Let me show you another simpler one
1127 21:38 that detects links in what you're typing.
1128 21:41 And we call it Linky.
1129 21:42 "I love google.com."
1130 21:47 It immediately puts an underline--.a--
1131 21:50 ooh, that's not a link-- .u--now it's a link again.
1132 21:54 [applause]
1133 21:58 You're wondering what's this all got to do
1134 21:59 with extensions and let me explain that.
1135 22:02 So you remember we showed you a robot earlier
1136 22:04 called "Bloggy."
1137 22:05 All that one did was publish a blog
1138 22:08 that let you use the embedding API.
1139 22:10 But robots are really powerful ways
1140 22:11 of extending Wave's functionality.
1141 22:13 They're server-side programs that participate in Wave
1142 22:17 with all the power of the human participants.
1143 22:19 You can see from your robot the live changes in the wave.
1144 22:22 You can make live changes to the wave
1145 22:24 including adding and removing messages,
1146 22:26 collaboratively edited messaging,
1147 22:28 adding and removing participants.
1148 22:30 You can even start new waves from robots.
1149 22:33 And the way Spelly works
1150 22:34 is that it uses our robot APIs to watch what I'm typing.
1151 22:38 It sits on the server. It watches what I'm typing.
1152 22:40 It takes every so many words and matches it up
1153 22:43 against a language model.
1154 22:45 And then when it finds an error,
1155 22:46 it uses collaborative editing to edit the content.
1156 22:50 And in fact, when it doesn't have enough confidence
1157 22:52 and it put that red underline,
1158 22:54 if Steph and I were editing the message at the same time,
1159 22:56 she would also see the red underline
1160 22:58 and she could be the one taking the suggestion.
1161 23:01 Linky works in the same way.
1162 23:05 But who wants to be typing in links all day?
1163 23:08 We had a very good friend of ours
1164 23:10 from the Google Search Team build this extension for us here
1165 23:13 called Searchy.
1166 23:15 Let's search for Australia.
1167 23:16 Hannon: We have a really clever naming convention.
1168 23:19 Lars Rasmussen: And here you can do a Google search
1169 23:20 from right inside Wave and add the link like that.
1170 23:24 [applause]
1171 23:28 You guys want to see that again?
1172 23:30 I search for Bora Bora. It's so pretty there.
1173 23:33 I add an image to the wave just like that.
1174 23:36 Thank you.
1175 23:38 [applause]
1176 23:41 Let me just quickly return to our friend Linky.
1177 23:44 I've got a video sitting here.
1178 23:46 Let me copy the URL.
1179 23:49 And inside my wave,
1180 23:51 I'm going to type "Check this out."
1181 23:55 And then I'm going to copy the link in there.
1182 23:58 And then I'm going to dance a little bit
1183 00:01 while the system spectacularly fails.
1184 00:04 [laughter]
1185 00:07 Maybe we'll return to that later.
1186 00:10 Okay, so that's extensions that we built
1187 00:13 with internal APIs.
1188 00:15 And what we're doing today as part of the developer preview
1189 00:17 is--is make external versions of these APIs
1190 00:21 available to you guys.
1191 00:23 The external APIs have almost all the power
1192 00:25 of the internal APIs.
1193 00:27 There is a few things we haven't quite figured out
1194 00:29 how to secure the export.
1195 00:31 We're working very hard to close the gap.
1196 00:33 We're going to show you now a series of examples
1197 00:37 of things that are built with the external APIs.
1198 00:39 These are all sample codes
1199 00:41 that are going to be on code.google.com
1200 00:43 where we'll host the API.
1201 00:45 Stephanie.
1202 00:48 Hannon: Any open social gadget can sit inside a wave.
1203 00:51 In fact, we were about to show you one
1204 00:52 which might come a little bit later.
1205 00:55 But we also make an additional API available
1206 00:58 that lets you the developer make your gadget
1207 01:00 live and collaborative.
1208 01:02 I want to show you that.
1209 01:04 But before I do, I'll digress and tell you a little story.
1210 01:07 Even though we on this team have been building Wave
1211 01:10 and thinking about Wave for a year and a half,
1212 01:12 when we first started using it ourselves,
1213 01:14 it took awhile for us to discover all the ways
1214 01:17 Wave can make you more productive
1215 01:19 because we were so used to older tools.
1216 01:21 In fact, we're still discovering new ways all the time.
1217 01:25 I'll show you that by opening a wave
1218 01:27 and using Playback to tell you what happened.
1219 01:31 Uh, someone on our team wanted to create a movie outing
1220 01:33 and we should all go see the Transformers.
1221 01:35 So he sent a wave out and people did something
1222 01:37 very email-like and responded.
1223 01:40 "I'm interested." "What place are you going to?"
1224 01:43 "Is that really a good movie?" And so on.
1225 01:45 I tried to get them to see Confessions of a Shopaholic.
1226 01:49 Nobody went for that.
1227 01:50 Lars Rasmussen: She's still trying.
1228 01:52 Hannon: Still trying.
1229 01:53 So when you look at this wave,
1230 01:55 it's sort of hard to parse out the important information
1231 01:57 of who wants to go.
1232 01:58 So somebody suggested we should all edit
1233 02:00 the opening message instead of putting it
1234 02:02 in individual messages.
1235 02:05 And we cleaned up the wave.
1236 02:06 Everyone started editing the opening message and so on.
1237 02:12 This was a much better way to construct this RSVP list.
1238 02:16 And we could still have discussions
1239 02:17 about which car to take and so on.
1240 02:20 Now, we're all engineers,
1241 02:22 and you can look at this workflow
1242 02:23 and think there are better ways
1243 02:25 or there are ways to make this even better
1244 02:27 using our extensions.
1245 02:29 So another engineer on our team wrote a gadget.
1246 02:35 We call this the "yes-no-maybe gadget."
1247 02:39 Hey. [laughs]
1248 02:41 [applause]
1249 02:44 So if you--it's hard to see for you guys, I know.
1250 02:46 But I'm currently in "No" in the middle column
1251 02:48 and I'm to change it to "Maybe."
1252 02:51 And you see it update on Lars' screen.
1253 02:54 [applause]
1254 02:56 Lars Rasmussen: And I'm currently
1255 02:57 in the "Maybe" column.
1256 02:58 And I click the "Yes" over here.
1257 02:59 And you'll see it quickly updates
1258 03:01 on both our screens.
1259 03:03 Hannon: So you the gadget developer
1260 03:04 only have to worry about two things.
1261 03:07 When I click the button,
1262 03:08 update the state of the gadget in XML and the wave,
1263 03:12 then we automatically transmit through the server
1264 03:15 to Lars' client where your gadget
1265 03:18 has to update the UI to reflect the new state.
1266 03:23 Now, of course we did all this--
1267 03:25 ooh, it's a secret though--
1268 03:27 I, um, uh, don't tell anyone,
1269 03:29 but we did all this so we could build
1270 03:30 impossibly fun, addictive games.
1271 03:32 And we'll show you a few of those now.
1272 03:34 Lars and I are going to open Sudoku.
1273 03:37 Lars Rasmussen: Hmm. Hmm.
1274 03:40 Hannon: And we intended for this to be a collaborative game
1275 03:42 so we could solve the puzzle together,
1276 03:44 but somehow it turned competitive.
1277 03:46 [laughter]
1278 03:47 And, uh, you get a point for making a good move
1279 03:51 and a negative point for doing something wrong.
1280 03:53 You can see Lars' score is going negative.
1281 03:56 Lars Rasmussen: How can you play Sudoku
1282 03:58 in front of 4,000 people?
1283 03:59 Come on.
1284 04:00 Hannon: Then, uh, back in 1851,
1285 04:02 Lars and I played this chess game
1286 04:04 that became very famous.
1287 04:05 It ended in 23 moves.
1288 04:07 And it illustrates how well Playback works with gadgets.
1289 04:11 So if I go into playback and I click forward,
1290 04:15 you can actually step through the whole game.
1291 04:18 [applause]
1292 04:27 So as we mentioned in the beginning,
1293 04:28 we come from the Maps team.
1294 04:30 So probably wouldn't be a good demo
1295 04:32 if we didn't do a Maps gadget as well.
1296 04:34 It's been a lot of work to prepare for this demo.
1297 04:36 So I'm going to send Lars a wave about taking a vacation.
1298 04:40 Lars Rasmussen: Stephanie's favorite topic.
1299 04:41 She wants to go on vacation in Bora Bora.
1300 04:43 She's asking me for recommendations.
1301 04:46 I highlight the term Bora Bora here.
1302 04:48 And then I click this button that's provided
1303 04:50 by an extension that you guys could've written
1304 04:52 that inserts a map to Bora Bora.
1305 04:56 Thank you. [applause]
1306 04:58 Hannon: Now, the important thing
1307 04:59 is my hands are off of my computer,
1308 05:01 but my screen is still on the right.
1309 05:03 Lars Rasmussen: And now I click the satellite button
1310 05:05 and it changes on both screens.
1311 05:06 And I go zoom, zoom, zoom, zoom, zoom, zoom.
1312 05:12 [applause]
1313 05:14 [laughs] Thank you.
1314 05:17 [applause]
1315 05:20 And now, Stephanie loves swimming with sharks.
1316 05:24 And I happen to know that the lemon sharks hang
1317 05:26 over here.
1318 05:28 And you can see that I put that marker on.
1319 05:31 Shows up live over on Stephanie's screen.
1320 05:33 Now my hands are off.
1321 05:34 Hannon: And I'll pick up the polygon tool
1322 05:36 and I'll tell Lars, actually, I want to stay in this area.
1323 05:39 Lars Rasmussen: And you see that showing up on my screen too.
1324 05:41 And so again, all you guys have to do with your gadgets
1325 05:44 is to store updates to the state
1326 05:46 in the local XML.
1327 05:48 And then we transmit on the wire
1328 05:49 and then the other instance of your gadget
1329 05:51 just updates its state when it gets notified
1330 05:54 of that change.
1331 05:57 And so those are client-side, um, extensions.
1332 06:01 I want to just show you, actually,
1333 06:02 the team in blue over here is scrambled.
1334 06:05 And they brought back up Linky.
1335 06:07 And I wanted to show you what happened
1336 06:08 when I dropped that YouTube URL into the old extension wave.
1337 06:13 So you'll see that Linky didn't just recognize
1338 06:15 it was a link,
1339 06:17 but it recognized it was a link to a video.
1340 06:19 It puts this little friendly light bulb
1341 06:21 on my screen where I can open up
1342 06:23 a set of suggestions for what I might want to do.
1343 06:26 Like, for example, I might want to embed the video
1344 06:29 right inside my wave
1345 06:32 and play it for you guys.
1346 06:35 [wobbling noise]
1347 06:38 Dah nah. Pretty cool, huh?
1348 06:40 [applause]
1349 06:46 Thank you.
1350 06:48 Okay. What's next?
1351 06:50 So Stephanie showed you a bunch of gadgets.
1352 06:52 They're all client-side extensions.
1353 06:55 We want to show you next what you can do
1354 06:57 on a server side with robots.
1355 06:59 And we're going to show you three examples.
1356 07:01 The first one is an application--
1357 07:03 a collaborative application built entirely within Wave
1358 07:06 with our extension API.
1359 07:09 So let me just open up my inbox again.
1360 07:11 And instead of clicking "new wave,"
1361 07:13 I'm going to hit this drop-down button here.
1362 07:15 And I'm going to hit this item
1363 07:16 called a "new poll."
1364 07:18 New poll is just a new wave,
1365 07:21 but with a special robot that comes from an extension
1366 07:24 that you guys could build called Polly the Pollster.
1367 07:28 I'll add Steph to the wave as well.
1368 07:31 Polly added a form to the wave.
1369 07:35 Yes. And so this is not a gadget.
1370 07:37 Forms are native to wave.
1371 07:39 You can put them in there.
1372 07:40 And now I can fill out the form
1373 07:42 starting with the title of the poll
1374 07:44 that I want to conduct.
1375 07:46 And you'll see as I'm typing in the form,
1376 07:49 Polly sits on the server side.
1377 07:51 She saw that letter by letter,
1378 07:52 and she updated the title of the wave.
1379 07:56 Now the really cool thing about having forms in waves
1380 07:58 is that you can fill them out collaboratively.
1381 08:01 So Stephanie's going to fill in the choices
1382 08:03 while I add the question here.
1383 08:05 "Which movie is the best ever?"
1384 08:10 And you see that Stephanie's filling in the options
1385 08:13 in the field below.
1386 08:15 Hannon: Star Wars.
1387 08:17 Lars Rasmussen: Star Wave. [laughs]
1388 08:21 Hannon: Not on purpose. [laughs]
1389 08:24 Lars Rasmussen: Confessions of a Shopaholic.
1390 08:25 So now Stephanie's going to fill out a number of people
1391 08:28 that we're going to send the poll to
1392 08:30 in the recipient list there.
1393 08:36 She's putting in--
1394 08:37 Hannon: Done.
1395 08:38 Lars Rasmussen: Putting in six of them.
1396 08:39 Now I'll hit the button here that says "distribute poll."
1397 08:42 Now, what happens is that Polly sees
1398 08:43 that I hit that button.
1399 08:45 She fills in a results section
1400 08:48 in that same wave here.
1401 08:50 And then she sends out fresh waves
1402 08:52 with the questions we specified
1403 08:54 to all the recipients we specified.
1404 08:56 And Stephanie's one of them.
1405 08:58 Hannon: So I'm going to answer the poll
1406 08:59 that Star Trek's my favorite.
1407 09:01 Lars Rasmussen: And you'll see that Polly updates the results
1408 09:03 live in the admin wave.
1409 09:07 With a bit of luck-- thank you.
1410 09:09 [applause]
1411 09:15 Okay. So that's the-- an example of an extension
1412 09:17 built exclusively inside of Wave.
1413 09:21 The next type of extension we want to demonstrate for you
1414 09:24 are extensions that integrate Wave
1415 09:27 with existent communication systems.
1416 09:29 In this case, we'll show you with everyone's favorite
1417 09:31 microblogging service, Twitter.
1418 09:35 Hannon: So at this point, you're probably wondering
1419 09:37 how to install these extensions.
1420 09:39 So let me open a wave.
1421 09:41 And you probably won't be surprised to hear
1422 09:42 that extensions can live inside a wave.
1423 09:45 Here's their--a bunch of puzzle pieces
1424 09:47 showing some of the things we're using today.
1425 09:51 All I have to do if I want to use one of these inst--
1426 09:53 extensious--is--
1427 09:55 Sorry. Click the "install" button.
1428 09:59 And you can see over here, there's a new drop-down menu.
1429 10:02 And I have the option to create a new twave.
1430 10:05 Lars Rasmussen: A wave, of course--twave, of course,
1431 10:07 is a wave of tweets.
1432 10:10 Hannon: You can describe as a developer
1433 10:11 how your extensions hook into Wave.
1434 10:14 It could be a keyboard shortcut,
1435 10:15 a button on the tool bar.
1436 10:17 It could be something like a new twave button.
1437 10:19 There'll be a confirmation page
1438 10:20 that tells the users how you're going to interact.
1439 10:23 We haven't quite implemented that yet.
1440 10:26 So let me log in here.
1441 10:28 I have to tell you that Lars created my Twitter account.
1442 10:30 Lars Rasmussen: I made her Twiffanie.
1443 10:32 She hates that.
1444 10:35 Hannon: [laughs]
1445 10:36 Lars Rasmussen: She's Twiffanie at Twitter.
1446 10:40 Hannon: I think that tab button should be implemented, you guys.
1447 10:42 [laughs]
1448 10:44 I feel like all sorts of bad stuff is about to happen.
1449 10:48 [laughs]
1450 10:50 All right, so I'll sign in to Twitter.
1451 10:57 And you can see tweets
1452 10:58 from all the famous people I follow.
1453 11:01 And down here at the bottom, Lars.
1454 11:03 Lars Rasmussen: No.
1455 11:05 Hannon: I'm just going to close it.
1456 11:06 We still haven't, uh, uh...
1457 11:10 I wanted to get the contacts out.
1458 11:13 Um, it's important you can see that each of these avatars,
1459 11:17 they're not necessarily Wave users.
1460 11:19 Through our APIs, you can be a proxy
1461 11:22 for contacts on a different system.
1462 11:24 So I have Lance Armstrong, Ryan Seacrest,
1463 11:27 lots of different people.
1464 11:28 If I go down here and I look for Lars' tweet,
1465 11:32 I can respond to it.
1466 11:34 He says, "The demo's going pretty well."
1467 11:37 And I'll say, "It ain't over yet."
1468 11:41 [laughs]
1469 11:42 Lars Rasmussen: And now I've logged in
1470 11:44 to Twiffanie at Twitter over here.
1471 11:46 And if I refresh the page,
1472 11:48 you'll see that the extension took Stephanie's wave reply
1473 11:52 and tweeted it.
1474 11:55 Thank you.
1475 11:56 [applause]
1476 11:59 Hannon: Now Tweety also lets you search
1477 12:01 over the public timeline of Twitter.
1478 12:03 For example, for a phrase like "Google Wave."
1479 12:06 So I'm going to start a new twave.
1480 12:09 Lars Rasmussen: You're going to search for Google Wave now?
1481 12:11 Hannon: Gonna do it.
1482 12:12 Lars Rasmussen: How brave it that?
1483 12:14 Hannon: [laughs] I'm not afraid.
1484 12:17 So try again.
1485 12:21 I'm going to log in.
1486 12:24 And then I'm going to type Google Wave.
1487 12:28 So we did this yesterday and there are only two tweets.
1488 12:31 One of them was a woman interviewing at a company
1489 12:33 called Wave so she said, "I should google Wave
1490 12:36 before my interview."
1491 12:39 So now let's sign in. See what happens.
1492 12:46 Lars Rasmussen: * Doo doo * Hannon: A lot more than two.
1493 12:49 Lars Rasmussen: Oh! [laughs]
1494 12:51 Hannon: And we can go down to the bottom
1495 12:53 and see tweets still coming in.
1496 12:54 Lars Rasmussen: Oh, my God, you guys, thank you.
1497 12:57 [laughs] Wow. Thank you.
1498 12:59 [applause]
1499 13:07 Hannon: So that was a example of an integration
1500 13:09 between Wave and another communication system.
1501 13:12 Lars Rasmussen: I'll just add to the search functionality
1502 13:15 here, actually, that you can-- you can have Tweety
1503 13:17 continuously search over in Twitter
1504 13:19 and update the wave as they come.
1505 13:21 So you can use them like "twit alerts"
1506 13:23 for whatever you're interested in.
1507 13:24 It'll just pop into your inbox.
1508 13:31 Buggy. Hannon: Buggy.
1509 13:33 We were reading the tweets.
1510 13:34 Lars Rasmussen: We were reading the tw--
1511 13:35 Hannon: Totally threw us off.
1512 13:36 [laughs]
1513 13:38 Lars Rasmussen: Okay, the last example
1514 13:40 of a robot extension we want to show
1515 13:42 is an example of how you can use Wave extension APIs
1516 13:45 to integrate Wave within existent workflows.
1517 13:49 You guys are programmers like us.
1518 13:50 You probably deal with filing bugs.
1519 13:53 I want to show you an integration
1520 13:54 between Wave and the issue tracker--
1521 13:57 the bugs database over on code.google.com.
1522 14:00 But this could be any issue tracker Bugzilla could host,
1523 14:03 whichever is your favorite.
1524 14:05 So I'll just conjure up a canned message here.
1525 14:08 And I'll tell you a little bit
1526 14:09 about how we do bugs on my team.
1527 14:12 So a programmer has built some code.
1528 14:13 They send it for code review.
1529 14:14 They also send a demo to the PMs and the UI people
1530 14:17 and Jens and I.
1531 14:19 And then we sit in the room and we test it.
1532 14:20 And you can't read the text here.
1533 14:22 But there's a bunch of bullet points
1534 14:23 with observations we made.
1535 14:25 We, of course, edited this collaboratively.
1536 14:27 Some of them are bugs.
1537 14:29 Some of them are observations for discussion later.
1538 14:31 Some of them are notes for the UI designers.
1539 14:33 And, of course, we should now go and file bugs.
1540 14:36 Um, but instead of doing that manually,
1541 14:38 we run an extension that lets me just select a bullet point,
1542 14:42 click this button here,
1543 14:43 and now a robot enters the fray called Buggy,
1544 14:47 takes that text, and files it as a bug for me.
1545 14:50 [applause] Thank you.
1546 14:52 Hannon: Hey, Lars, why don't you add me?
1547 14:54 Lars Rasmussen: Yes. Excellent.
1548 14:56 And I'll add Steph to the wave.
1549 14:57 The bug--the, uh--the--the-- sorry, the robot
1550 15:00 also grabs a little summary from issue tracker
1551 15:03 and puts it right inside the wave.
1552 15:05 There's a link there to the bug
1553 15:06 will Stephani--which Stephanie will now click
1554 15:09 so that you can see the bug sitting over on issue tracker.
1555 15:15 Hannon: All right, so I'm going to open this bug,
1556 15:17 number 11.
1557 15:19 Lars Rasmussen: And while she does that,
1558 15:20 I'll file a bunch more.
1559 15:21 You can see how easy it is.
1560 15:23 And I just triple click here. There's another one.
1561 15:26 And I'll file that bug too.
1562 15:28 Okay. And so now, we might send this wave--
1563 15:30 we might share this wave with our bug triage team.
1564 15:33 I'll just do that myself.
1565 15:35 All I have to do is change the assignee here.
1566 15:38 I'll give this to Stephanie. I'll take this myself.
1567 15:41 And then this one goes to Lars.
1568 15:44 Ooh, I'm sorry. Was that Greg?
1569 15:45 Like this.
1570 15:46 And now you'll see-- Stephanie will refresh the bug
1571 15:48 and you'll see the robot change the assignee over
1572 15:52 in the issue tracker.
1573 15:53 Hannon: On the left-hand panel where it says "owner."
1574 15:56 Lars Rasmussen: And also, most issue trackers
1575 15:57 or bug databases lets you debate bugs--
1576 16:00 endlessly if I recall-- inside the database.
1577 16:03 Which is normally not the strength
1578 16:04 of the database.
1579 16:05 But it is the strength of Wave.
1580 16:07 And so instead of debating them over on issue tracker,
1581 16:10 you can debate the bug from inside Wave.
1582 16:13 I'll just use the inline reply tool here.
1583 16:15 And I'll say,
1584 16:16 "That is so not my fault!"
1585 16:21 Hannon: And I'll refresh. You can see the update there.
1586 16:25 [applause]
1587 16:30 Lars Rasmussen: And so now we can continue
1588 16:31 the endless debate inside of Wave,
1589 16:33 which would be much more efficient.
1590 16:35 We could also build--
1591 16:36 We haven't done this in the sample here--
1592 16:38 that if someone wanted to go make a comment
1593 16:40 over on issue tracker,
1594 16:41 the robot would see that and update the wave as well.
1595 16:45 And just like we did a search through Twitter
1596 16:47 into a-a wave,
1597 16:49 we could also have the robot start a new wave of bugs
1598 16:51 and just pull in all of the bugs assigned to you
1599 16:53 so that you could track them from within a wave.
1600 16:56 It's remarkable--thank you-- how much more effective
1601 16:59 this sort of thing makes you.
1602 17:02 Okay. That's extensions for you.
1603 17:04 You guys feeling--
1604 17:06 Hannon: And I think that's two of our Ps.
1605 17:07 Lars Rasmussen: Those are two Ps.
1606 17:08 Are you guys feeling inspired yet?
1607 17:10 Good. Yeah. Thank you. [applause]
1608 17:13 Thank you.
1609 17:17 Okay, let's talk a little bit about the protocols
1610 17:19 and algorithms, um, underlying Wave.
1611 17:22 So we want Wave, as Stephanie said in the beginning,
1612 17:24 to be an open system.
1613 17:26 Obviously, it's an enormous reason
1614 17:28 behind the success of email that it's an open protocol.
1615 17:31 Anyone can build an email system.
1616 17:33 Anyone can email with each other
1617 17:34 regardless of where they got their accounts from.
1618 17:37 We want Wave to work the same way.
1619 17:41 And so we've designed the algorithms--
1620 17:44 we've designed the protocol to, um, uh, to support
1621 17:47 what we call "federation."
1622 17:49 Which means that any organization
1623 17:50 could build their own Wave system,
1624 17:53 give accounts to their users even in competition with Google,
1625 17:56 and then the system will still ensure
1626 17:58 that we can share waves with each other
1627 18:00 across these boundaries.
1628 18:02 And we want to-- we want to first show you
1629 18:05 how that's going to look.
1630 18:06 And then we'll talk a little bit
1631 18:07 about how far along we are with that.
1632 18:10 So let me--so this is very much work in progress.
1633 18:13 Everything we've shown you is work in progress.
1634 18:16 I'm going to sign in to, um, a different version
1635 18:19 of the system that sits inside our corporate network
1636 18:23 that has an open port on it for this sort of federation.
1637 18:26 And we're going to imagine two separate wave systems.
1638 18:30 One is the one Google has built
1639 18:31 that you've been looking at all morning.
1640 18:34 The other one is from Acme Wave,
1641 18:37 which you'll see over on Stephanie's screen.
1642 18:39 They have built a separate system.
1643 18:40 They're actually giving out accounts
1644 18:42 in competition with Google.
1645 18:43 You'll realize that their client looks very similar to ours.
1646 18:47 That's because we're intending to open source
1647 18:49 the lion's share of the code that we used to build our system
1648 18:53 so that organizations can get started quickly.
1649 18:56 And that's how Acme Wave built their system.
1650 18:59 So I'll start a wave over on my account here.
1651 19:03 And I will say "Project.
1652 19:05 You want to work with me on that thing?"
1653 19:11 And then I will add-- what's your account
1654 19:13 over on Acme Wave?
1655 19:15 Hannon: It's Stephanie. Lars Rasmussen: Stephanie.
1656 19:18 Stephanie on Acme Wave.
1657 19:19 So Stephanie momentarily has her account--
1658 19:21 Hannon: Actually, it's Steph. Lars Rasmussen: There we go.
1659 19:23 Hannon: Sorry.
1660 19:24 Lars Rasmussen: Stephanie is now a user
1661 19:25 over on Acme Wave.
1662 19:26 And I'm going to add her to the wave.
1663 19:30 Hannon: So I'm going to open up the wave.
1664 19:32 And he says, "You want to work with me on that thing?"
1665 19:34 And I said, "I think the guys over at Initech can help too."
1666 19:40 Lars Rasmussen: [laughs] And so...
1667 19:43 And so even though Steph and I have accounts
1668 19:45 on different wave systems,
1669 19:46 you still get that live
1670 19:48 character by character interaction.
1671 19:50 The way it works is that from our two clients,
1672 19:52 these fine-grained operations
1673 19:54 travel to our respective servers,
1674 19:56 then it crosses over and goes back up to our client.
1675 20:00 And all of the liveness and concurrency control
1676 20:02 and live--um, sorry, and real-time resolution
1677 20:05 of conflicts happen in an algorithm
1678 20:07 that supports this sort of federation.
1679 20:09 Let's bring a third wave system into the system.
1680 20:12 So we have a couple of friends, Peter and Milton,
1681 20:15 that work for a company called Initech.
1682 20:17 They have chosen to run their own wave server
1683 20:19 in their server closet.
1684 20:21 These guys didn't take our code.
1685 20:23 Milton is the kind of engineer who prefers building stuff
1686 20:26 from scratch.
1687 20:29 Hannon: I'm not sure I want to show this, Lars.
1688 20:31 Lars Rasmussen: Oh, come on. You show it.
1689 20:33 I'm going to add Peter and I'm going to add Milton.
1690 20:35 Why don't you want me to show it?
1691 20:37 Hannon: I'm afraid this crowd might like their UI
1692 20:39 better than ours and it would break my heart.
1693 20:41 Lars Rasmussen: Don't break her heart.
1694 20:44 [cheers and applause]
1695 20:51 Do you have the wave? Do you have the wave?
1696 20:56 Hannon: No, 'cause-- Lars Rasmussen: Hmm?
1697 20:58 Hannon: Just make another edit.
1698 21:01 So now I have the wave.
1699 21:03 Lars Rasmussen: So she opens-- Hannon: And if I go into it...
1700 21:08 [cheers and applause]
1701 21:12 Lars Rasmussen: Thank you.
1702 21:15 Hannon: Now I want to show you an important principle
1703 21:17 of--an important feature of the protocol.
1704 21:21 So I go back to Acme Wave
1705 21:23 and I'm going to make a private reply
1706 21:24 just like you saw earlier in the demo.
1707 21:26 But I'm going to add everyone except Lars.
1708 21:29 So I'll say, "What do you think of that Google guy?"
1709 21:35 So I'll add all of my friends Peter and Milton.
1710 21:40 Even though this wave is owned at Google
1711 21:43 and there's copies on Acme Wave and Initech servers,
1712 21:46 this private reply is never seen by Google
1713 21:50 and cannot be discovered by Lars in any way.
1714 21:53 In fact, if Peter and Milton made a private reply
1715 21:56 between themselves,
1716 21:58 that wave would never leave their server closet.
1717 22:01 [applause]
1718 22:06 Lars Rasmussen: Thank you.
1719 22:07 Hannon: And I just want to go back over to Milton
1720 22:09 for a second.
1721 22:10 You can see the private reply came in there as well.
1722 22:13 Lars Rasmussen: Okay, so let me just say this,
1723 22:15 um, federation...
1724 22:17 that was hard.
1725 22:19 So we're building this thing
1726 22:20 with live concurrent editing, and chatting,
1727 22:22 and instant messaging, and email, and pictures,
1728 22:23 and all that stuff.
1729 22:25 And then we throw federation into the mix,
1730 22:27 which vastly complicates things.
1731 22:30 It would be so much easier, frankly,
1732 22:31 from an engineering point of view.
1733 22:33 If we could just keep this proprietary,
1734 22:35 then we'd control all the servers,
1735 22:36 we'd control all the update schedules,
1736 22:38 and so on.
1737 22:39 But we think it's worth the effort--
1738 22:42 and we hope you guys will help us with this.
1739 22:44 We think the world will be a much better place
1740 22:46 if this is an open system that everyone can build
1741 22:48 wave services with it.
1742 22:50 And so--thank you.
1743 22:52 [applause]
1744 22:53 Thank you.
1745 22:55 [applause]
1746 22:59 And so let me tell you, um, where we're at with it.
1747 23:01 So later today, there's a web site--
1748 23:03 I'll show you the URL later-- that's going to launch,
1749 23:06 which will have-- it's a very early draft
1750 23:08 of this protocol.
1751 23:10 It'll have, I think, four whitepapers
1752 23:12 describing how the system works.
1753 23:15 It's going to have, of course,
1754 23:16 a public discussion forum
1755 23:17 so that we can start debating how this hopefully bright future
1756 23:21 of Wave will look.
1757 23:23 And then like I said, later,
1758 23:25 we're going to open source the lion's share of our code,
1759 23:28 which will serve both as a reference implementation
1760 23:31 of the protocol,
1761 23:32 but also essentially a production ready system
1762 23:34 like you saw Acme Wave do.
1763 23:36 I'm obviously vastly simplifying it here.
1764 23:38 But essentially, you could take that code,
1765 23:41 you could put it on top of your own database,
1766 23:42 and you would have a simple wave server
1767 23:44 and you would be up and running.
1768 23:47 Okay. So that's federation.
1769 23:53 [laughs]
1770 23:54 Hannon: I'm excited about our next demo.
1771 23:55 Lars Rasmussen: The next demo is very, very nice.
1772 23:58 This is something, um, to end off our demo with.
1773 00:02 It's something, uh, a friend of ours
1774 00:04 on the Google research team has been building
1775 00:06 over the past month.
1776 00:08 I saw it myself the first time just a few days ago.
1777 00:11 Um, and it blew me away.
1778 00:12 So, um, let's see.
1779 00:14 I'm going to make sure I'm on the right system here.
1780 00:16 I'm back on the sandbox.
1781 00:18 So again, we've been doing this demo
1782 00:19 on a system where we'll get you guys accounts.
1783 00:22 Now, Stephanie is going to log into, um, an account
1784 00:26 of one of our colleagues, Alexi.
1785 00:28 And then I'm going to start a new wave.
1786 00:30 I want to make sure you guys can see
1787 00:31 what we're typing.
1788 00:33 I'm making this a little bigger like this.
1789 00:36 Do you make your font bigger there, Steph?
1790 00:38 Hannon: Yeah, I was going to wait
1791 00:40 till you started the wave.
1792 00:42 Lars Rasmussen: And then I'll start a new wave here.
1793 00:44 And I'll add Alexi, one of our colleagues.
1794 00:47 And then I'll add my all-time favorite robot
1795 00:51 called Rosy.
1796 00:54 Yes.
1797 00:55 So, um, Alexi is from France.
1798 00:58 His English is not terribly good.
1799 01:01 Hannon: Aww!
1800 01:03 Lars Rasmussen: For the purposes of this demo.
1801 01:05 [laughter]
1802 01:07 And Rosy is a robot that very kindly translates
1803 01:11 what I'm typing.
1804 01:13 "Hello, world!"
1805 01:16 [applause]
1806 01:18 "What do you think
1807 01:20 "of this demo--
1808 01:24 of this demo?"
1809 01:32 And now Alexi's typing in France.
1810 01:34 And I get to see him saying, "Ah, yes...
1811 01:37 since new--we are in can--use--used--"
1812 01:41 Translates word by word, character by character
1813 01:43 as he's typing.
1814 01:45 Rosy speaks, I believe, 40 languages.
1815 01:47 She can translate between any pair of them.
1816 01:50 Um, she's quite the thing.
1817 01:54 Okay. That finishes our demo.
1818 01:57 Oh, thank you.
1819 01:58 [cheers and applause] Thank you. Thank you.
1820 02:03 Thank you. Thank you. Thank you.
1821 02:09 Thank you.
1822 02:13 Thank you. Thank you. Thank you. Thank you.
1823 02:15 [cheers and applause] Thank you. Thank you.
1824 02:18 Hannon: I think they like it. Lars Rasmussen: They like it.
1825 02:22 You guys like it? Okay. Thank you.
1826 02:27 Hannon: Thank you. Wow. Thank you. [laughs]
1827 02:31 [cheers and applause] Lars Rasmussen: Thank you.
1828 02:36 Thank you. [whistling and cheers]
1829 02:39 Hannon: They have a lot of skills.
1830 02:41 [applause]
1831 02:46 I think... Lars Rasmussen: Thank you.
1832 02:47 Hannon: If they really liked it...
1833 02:51 [man shouting indistinctly]
1834 02:52 If you guys--you guys really liked it,
1835 02:54 you could do a wave.
1836 02:56 Lars Rasmussen: So, so, so-- Hannon: Anyone?
1837 02:58 It's time to do the wave. Lars Rasmussen: So--
1838 03:00 So, um, what do you guys think?
1839 03:03 Okay. [laughs]
1840 03:05 So just-- Hannon: Thank you for filming.
1841 03:07 Lars Rasmussen: Just to summarize,
1842 03:08 um, what we like to think we've built here
1843 03:11 is really quite a simple communication object
1844 03:13 called a wave.
1845 03:15 And we've showed how you can use it
1846 03:16 for quite a lot of different types
1847 03:18 of communication and collaboration.
1848 03:20 We showed you how plain vanilla email-type conversations
1849 03:23 could be done.
1850 03:25 We showed you how instant messaging conversations
1851 03:27 could be done.
1852 03:28 We showed you how easy it is to share photos
1853 03:29 and other rich media types with it.
1854 03:31 We introduced a platform that we're hoping you guys
1855 03:34 will pick up
1856 03:35 that will let you build things like blogging sites,
1857 03:37 discussion groups, uh, letting your users
1858 03:40 discuss images on your web site.
1859 03:42 With the editing functionality,
1860 03:43 you can see you can build Wiki-like sites
1861 03:45 with that as well.
1862 03:46 We showed you how you can use waves
1863 03:48 to collaboratively edit documents.
1864 03:50 We showed you a rich set of extension APIs
1865 03:53 that could let you build everything from games,
1866 03:56 through collaborative applications inside a wave,
1867 03:59 through integrations with other communication systems.
1868 04:02 We showed you Twitter.
1869 04:03 We're hoping you guys will build gateways
1870 04:05 from Wave to email, to Facebook,
1871 04:08 to instant messaging, and so on.
1872 04:10 We showed you how you can use these extension APIs
1873 04:14 to also integrate waves into work flows.
1874 04:18 Whew. Okay.
1875 04:22 And now...
1876 04:24 Hannon: Just going to bring up...
1877 04:25 Lars Rasmussen: For the administrativia
1878 04:27 at the end,
1879 04:28 I want to-- I want to just point out--
1880 04:32 I forgot that earlier
1881 04:33 that we have three breakout sessions
1882 04:35 that I don't believe has been in the program so far.
1883 04:39 Um, the first one at noon is about, um, the API.
1884 04:44 If you can only come to one of our breakout sessions,
1885 04:46 please make it that one.
1886 04:49 The next one is a little run-through
1887 04:50 of some of the more exciting pieces of technology
1888 04:52 under the hood.
1889 04:54 We're going to show you from the top of the--
1890 04:56 top of the stack how our amazing spell-checker works,
1891 04:59 how the rich text editor in the browser works,
1892 05:03 and the algorithms that we used underneath
1893 05:04 to do all the concurrency, control,
1894 05:06 and conflict resolution and so on.
1895 05:09 And then at 2:30,
1896 05:10 one of our client team tech leads
1897 05:13 are going to explain how we build
1898 05:16 the web application with the Google Web Toolkit,
1899 05:19 why we love it so much,
1900 05:21 and what some other future plans are.
1901 05:24 We also have in Room B4
1902 05:26 from noon till 4:30 office hours
1903 05:28 where you guys can come talk to the team in blue here.
1904 05:32 They love talking.
1905 05:36 And then I wanted to show you,
1906 05:39 um, three important URLs here.
1907 05:42 So for starters, wave.google.com
1908 05:44 is going to be the home of Google Wave
1909 05:47 when we launch it later in the year.
1910 05:49 If you go there now or when the site goes live
1911 05:52 in a little bit,
1912 05:53 um, there is a sign-up form there
1913 05:55 where you can sign up for notifications
1914 05:56 when we launch it.
1915 05:57 There's also going to be a beautifully edited video
1916 06:01 of today's keynote.
1917 06:03 Um, the API site is going to go live...
1918 06:06 man: Already live.
1919 06:07 Lars Rasmussen: The API site is already live.
1920 06:09 No wonder I couldn't-- couldn't get a connection
1921 06:11 to my mobile phone before.
1922 06:13 It's at code.google.com/apis/wave.
1923 06:18 It's got the API. It's got the documentation.
1924 06:21 It's got the code samples we showed before.
1925 06:23 Actually, I should just mention really quickly
1926 06:25 the bug--the--the issue tracker integration
1927 06:28 we showed at the end,
1928 06:30 we have to cheat ever slow slightly
1929 06:31 by using, uh, using an internal API
1930 06:35 to the issue tracker.
1931 06:36 I think they're working really hard
1932 06:37 making APIs available.
1933 06:39 So that particular sample is not going to be there
1934 06:41 for--for a wee while.
1935 06:43 Lastly, at waveprotocol.org,
1936 06:46 you'll find the protocol draft,
1937 06:48 the whitepapers, the discussion forum,
1938 06:50 and so on if you guys are interested
1939 06:52 in helping us, um, build that wave
1940 06:55 to be an open system.
1941 06:57 Hannon: You should tell them about the email.
1942 06:59 Lars Rasmussen: Yes.
1943 07:00 And the way you're going to get an account
1944 07:02 is you'll receive an email later today
1945 07:04 that explains where you can go and sign up
1946 07:07 for an account,
1947 07:08 which you will get shortly.
1948 07:12 Okay. So, look, the last thing I want to say,
1949 07:14 um, you can probably imagine it felt kind of nice
1950 07:18 that you guys seemed to like what we built.
1951 07:21 Um, one of the-- one of the best times
1952 07:23 in my professional life
1953 07:24 was after we launched Google Maps back in 2005
1954 07:28 and developers started doing all kinds of crazy things
1955 07:30 with Google Maps.
1956 07:32 I hope some of you are here.
1957 07:33 This was even before we had an API on Maps.
1958 07:36 We scrambled to put an API on Maps.
1959 07:38 And it's, uh, it's-- it's become very popular
1960 07:41 and it's a huge driving force of success.
1961 07:45 We learned a very important lesson
1962 07:47 that--that you guys, developers,
1963 07:48 are incredibly important to the success
1964 07:51 of the kind of products that we build.
1965 07:53 And so I can't wait to see what you guys
1966 07:56 are gonna come up with.
1967 07:58 Um, please, please, please, check it out.
1968 08:00 Build cool stuff. Surprise us.
1969 08:02 I just can't wait to see what you come up with.
1970 08:06 Thank you very much.
1971 08:07 [cheers and applause]