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 <i>Transformers.</i>
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 <i>Confessions of a Shopaholic.</i>
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: <i>Star Wars.</i>
1387	08:17	Lars Rasmussen: Star Wave. [laughs]
1388	08:21	Hannon: Not on purpose. [laughs]
1389	08:24	Lars Rasmussen: <i>Confessions</i> <i>of a Shopaholic.</i>
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 <i>Star Trek's</i> 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]