Google Wave - Developer Preview at Google I/O 2009, transcript via YouTube
http://youtu.be/v_UyVmITiYQ via https://yoututranscript.com/

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

Do you like what you are reading? Subscribe to receive updates.

Unsubscribe anytime

Connections0

Connections show where other documents or comments link to this document.

Related documents

Loading connectionsโ€ฆ