Você está na página 1de 49

Table Of Contents

1. Abstract …….…………………..................................…………………………… 01

2. Introduction …..…………...……………………………………………………….03
2.1 Google Wave As Product .……………………………………………………
04
2.2 Google Wave As Platform .
…………………………………………………..05
2.3 Google Wave As Protocol ……………………………………………………
05

3. Different Communication Tools …………………………………………………06


3.1 Instant Messaging ...…..……………………………………………………...06
3.2 Wikis .………………………………………………………………………….07
3.3 Social Networking ……………………………………………………………07
3.4 Media Shearing
……………………………………………………………….07
3.5 Blogs …………………………………………………………………………..08
3.6 Email Vs Google
Wave………………………………………………………..09
3.6.1 Email
……………………………………………………………………..09
3.6.2 Wave Solution
…………………………………………………………….11
3.6.3 Comparison ..…...…………………………………………………………
12

4. Wave Interface & Capabilities


…………………………………………………….13
4.1 Wave Interface …….
………………………………………………………….13
4.2 Google Wave Capabilities
……………………………………………………..14
4.2.1 Real Time …………………………………………………………………
14
4.2.2 Playback
…………………………………………………………………..15
4.2.3 Natural Language …………………………………………………………
15
4.2.4 File sharing
……………………………………………………………......16
4.2.5 Private reply
…………………………………………………………….....17

5. Anatomy of Wave
………………………………………………………………….18

6. Google Wave API


…………………………………………………………………..20
6.1 Wave Extensions
………………………………………………………….......21
6.2 Wave Gadgets …………………………………………………………………
22
6.2.1 Different Wave
Gadgets…………………………………………………..22
6.2.2 Wave Gadget
Architecture………………………………………………..24
6.2.3 Gadget
Libraries…………………………………………………………..25
6.3 Wave Robots ..………………………………………………………………...28
6.3.1 Different Wave
Robots…………………………………………………...29
6.3.2 Wave Robot
Architecture………………………………………………....30
6.3.3 Robot Libraries ...
………………………………………………………...31
6.4 Robots & Gadget Comparison……………………………………………...34
6.5 Google Wave Embedding……………………………………………………34
6.5.1 Wave Robot Architecture
………………………………………………...36
6.5.2 Robot Libraries
…………………………………………………………..37

7. Google Wave Federation Protocol…………………………………………………


39

8. Advantages & Disadvantages ……………………………………………………..42


9. Conclusion ………………………………………………………………………….43

10. Appendix .…………………………………………………………………………...44


10.1 References ..………………………………………………….
…………........44
10.2 List of Figures ........
………………………………………………………….45
10.3 List of Tables……………………………………………………………….45
Chapter 1
Abstract

Chapter 1

Abstract
Google Wave is a real-time communication platform. It combines aspects of email,
instant messaging, wikis, web chat, social networking, and project management to build
one elegant, in-browser communication client. You can bring a group of friends or
business partners together to discuss how your day has been or share files. Some are the
features of Google Wave are, it is Real-time, Open source, etc.

The main idea behind Google wave is instead of sending a message along with its
entire thread of previous messages, requiring all responses to be stored in each user's
inbox for context, message documents (called as waves) that contain complete threads of
multimedia messages (blips) are perpetually stored on a central server. Google Wave
provides federation using an extension of XMPP (Extensible Messaging and Presence
Protocol), the open Wave Federation Protocol. Being an open protocol, anyone can use it
to build a custom Wave system and become a wave provider

Google Wave is a communication system, just like email or instant messaging. Only
it combines these methods of communicating and adds a few more. Google Wave allows
you to see messages near instantaneously as you type, but it also allows people who aren't
logged in to join the conversation later.
Google is building APIs that allow developers to use and build on Google Wave
like extensions, program robots to automate common tasks and/or build gadgets to extend
or change user interaction (e.g., posting blips on microblog feeds). Google wave
Extensions are mainly of 2 types:
Gadgets : A gadget is an application users can participate with, many of which are built
on Google’s OpenSocial platform. A good comparison would be iGoogle gadgets or
Facebook applications.
Robots : Robots are automated participants within a wave. They can talk with users and
interact with waves. They can provide information from outside sources (i.e. Twitter,
stock quotes, etc.)
Chapter 2
Introduction

Chapter 2

Introduction

Google Wave is a self-described "personal communication and collaboration tool"


announced by Google. It is a web based service, computing platform , and
communication protocol designed to merge e-mail , instant messaging , wikis , and social
networking . A wave is equal parts conversation and document, where people can
communicate and work together with richly formatted text, photos, videos, maps,
and more.

Fig 1 : Google Wave introduction

Google Wave can be divided into three different types as :


 Product
 Platform

 Protocol
2.1 Google Wave as Product
The Google Wave product (available as a developer preview) is the web
application people will use to access and edit waves. It's an HTML 5 app, built on Google
Web Toolkit. It includes a rich text editor and other functions like desktop drag-and-drop
(which, for example, lets you drag a set of photos right into a wave).

Google Wave has a lot of innovative features, but here are just a few:

- Real-time: In most instances, you can see what someone else is typing, character by
character.

- Embeddability: Waves can be embedded on any blog or website.

- Applications and Extensions: Just like a Facebook application or an iGoogle gadget,


developers can build their own apps within waves. They can be anything from bots to
complex real-time games.

- Open source: The Google Wave code will be open source, to foster innovation and
adoption amongst developers.

- Playback: You can playback any part of the wave to see what was said. A very nice
facility.

- Natural language: Google Wave can autocorrect your spelling, even going as far as
knowing the difference between similar words, like “been” and “bean.” It can also auto-
translate on-the-fly.

- Drag-and-drop file sharing: No attachments; just drag your file and drop it inside
Google Wave and everyone will have access.
2.2 Google Wave As Platform
Google Wave can also be considered a platform with a rich set of open APIs that
allow developers to embed waves in other web services, and to build new extensions that
work inside waves.
The API has been used to build a bunch of cool extensions: Bloggy, a blog client,
lets you make a blog post as a wave. When people comment, they join the conversation.
Spelly is a spell-checker that uses the entire corpus of the web as its dictionary. Linky is a
link-recognition engine that is clever enough to recognize that the link you just entered is
a YouTube video, or a link to a photo, and give you the option to embed the target of the
link into the wave. There's even a twitter client - you can tweet into and out of a wave!
And of course, buggy, a bug-reporting tool that can also be a participant in a wave.

2.3 Google Wave As Protocol

The Google Wave protocol is the underlying format for storing and the means of
sharing waves, and includes the "live" concurrency control, which allows edits to be
reflected instantly across users and services. The protocol is designed for open federation,
such that anyone's Wave services can interoperate with each other and with the Google
Wave service. To encourage adoption of the protocol, we intend to open source the code
behind Google Wave.
The wave federation protocol enables everyone to become a wave provider and
share waves with others. For instance, an organization can operate as a wave provider for
its members, an individual can run a wave server as a wave provider for a single user or
family members, and an Internet service provider can run a wave service as another
Internet service for its users as a supplement to email, IM, ftp, etc. In this model,
wave.google.com is one of many wave providers.
Chapter 3
Different Communication Tools
Chapter 3

Different Communication Tools

3.1 Instant Messaging

There are many Instant Messaging tools available in market like Google talk ,
Rediff Bol etc. Instant messaging (IM) is a collection of technologies that create the
possibility of real-time text-based communication between two or more participants over
the internet or some form of internal network/intranet. It is important to understand that
what separates chat and instant messaging from technologies such as e-mail is the
perceived synchronicity of the communication by the user - Chat happens in real-time.
Some systems allow the sending of messages to people not currently logged on (offline
messages), thus removing some of the differences between Instant Messaging and e-mail
(often this is done by sending the message to the associated e-mail account).

IM allows effective and efficient communication, allowing immediate receipt of


acknowledgment or reply. In many cases Instant Messaging includes additional features,
which make it even more popular. For example, users can see each other by using web-
cams, or talk directly for free over the Internet using a microphone and headphones (or
speakers). Many clients allow file transfer as well, although they are typically limited in
the file-size allowed.

It is typically possible to save a conversation for later reference. Instant messages are
often logged in a local message history, making it similar to the persistent nature of
e-mails. The examples of the Instant Messaging tools are AIM, eBuddy, IBM Lotus
Sometime, iChat, Skype, VZOchat, Yahoo! Messenger and many more…
3.2 Wikis

A wiki website that allows the easy creation and editing of any number of
interlinked web pages via a web browser using a simplified markup language or a
WYSIWYG text editor. Wikis are typically powered by wiki software and are often used
to create collaborative websites, to power community websites, for personal note taking,
in corporate intranets, and in knowledge management systems. On wiki like web sites
many discussions keeps continuously going on and the web pages are updated live.

3.3 Social Networking

A social network is a social structure made of individuals (or organizations)


called "nodes," which are tied (connected) by one or more specific types of
interdependency, such as friendship, kinship, financial exchange, dislike, sexual
relationships, or relationships of beliefs, knowledge or prestige. Social network analysis
views social relationships in terms of network theory consisting of nodes and ties. Nodes
are the individual actors within the networks, and ties are the relationships between the
actors. The resulting graph-based structures are often very complex. There can be many
kinds of ties between the nodes. Research in a number of academic fields has shown that
social networks operate on many levels, from families up to the level of nations, and play
a critical role in determining the way problems are solved, organizations are run, and the
degree to which individuals succeed in achieving their goals. In its simplest form, a social
network is a map of all of the relevant nodes between all the nodes being studied. The
network can also be used to measure social capital -- the value that an individual gets
from the social network. These concepts are often displayed in a social network diagram,
where nodes are the points and ties are the lines. There are many Social Networking
websites like Orkut, Facebook, etc…

3.4 Media Sharing

Media sharing occurs in online social networks and digital communities with a
comprehensive platform and diversified interfaces to aggregate, upload, compress, host
and distribute images, text, applications, videos, audio, games and new media. It is the
interactive process of sending via email, instant message, text message, posting or linking
to media on a website or blog and other methods of sharing media to a targeted audience.
As media is shared it takes on a variety of different contexts and meanings. The same
video posted on YouTube and on Digg will generate different communication outcomes
as the same video being sent to a family member and a college buddy. Social
commentary usually accompanies shared media. Media sharing sustains social networks,
web based communities and other digitally supported relationships. It is a communication
process that requires the participation of both the sender and receiver. Media sharing
platforms that are most popular are user-friendly, highly accessible and include mobile
devices such as cell phones, PDAs, computers, and home game consoles such as the
Playstation 3 and Xbox 360.

3.5 Blogs

A blog is a type of website, usually maintained by an individual with regular


entries of commentary, descriptions of events, or other material such as graphics or video.
Entries are commonly displayed in reverse-chronological order. Many blogs provide
commentary or news on a particular subject; others function as more personal online
diaries. A typical blog combines text, images, and links to other blogs, Web pages, and
other media related to its topic. The ability of readers to leave comments in an interactive
format is an important part of many blogs. Most blogs are primarily textual, although
some focus on art (Art blog), photographs (photoblog), videos (Video blogging), music
(MP3 blog), and audio (podcasting). Microblogging is another type of blogging, featuring
very short posts. The personal blog, an ongoing diary or commentary by an individual, is
the traditional, most common blog. Personal bloggers usually take pride in their blog
posts, even if their blog is never read. Blogs often become more than a way to just
communicate; they become a way to reflect on life, or works of art. Blogging can have a
sentimental quality. Some sites, such as Twitter, allow bloggers to share thoughts and
feelings instantaneously with friends and family, and are much faster than emailing or
writing.
3.6 Email Vs Google Wave

3.6.1 Email

Email is simple, wildly popular, and works well—or else it wouldn't have stayed in
such widespread use as long as it has. But email has serious drawbacks when used to
manage a conversation within a group.

 Email propagates multiple copies and versions of messages. As soon as email


is sent, the message's contents are locked in. It can only be copied, pasted, and
sent on. For example, Nikhil types an email message, addresses it to Zoe, and
sends it. A copy of that message stays in Mahesh's sent box, and another copy
appears in Zoe's inbox. Zoe replies and optionally includes a copy of the original
message in her response. A copy stays in her sent box, and yet another copy
appears in Mahesh's inbox. Nikhil replies to Zoe's reply, adds a CC to Wash, and
sends it. The Send button gets pushed only three times, yet seven copies of the
same message appear in differing states for three people—each copy a dead
version of another. Email propagates copies of copies, storing each in a
rudimentary filing system of "boxes." Email was designed as a system of
notification, not collaboration

Given that email was designed to imitate "snail mail"—where the ultimate
destination was either the circular file or a filing cabinet—letters sent via email
seemed destined for cold storage, not the cauldron of innovative workspaces.

 There's no standard or easy way to embed rich content like maps, photo slide
shows, or video clips in the body of an email. Email's answer for anything that's
not text is "The Attachment." Whether it's a document, a photo, a video, a group
survey, or a web page, email wasn't designed to incorporate interactivity or
richness within the body of the message itself. You could include a link to a web
page inside an email message, but sometimes those break or become unclickable,
and they force the recipient to launch a web browser. While some email clients
like Gmail or Microsoft Outlook can display rich message formatting with images
and colors, or display attached files inline, there's no consistency. No one's email
always looks the same.

 To reply to a subsection of an email, you have to quote that section manually.


Nikhil sends Wash an email telling him about the engine upgrade project she's
working on, then asks where the nearest place to stop for parts is, and how long it
will take to get there. An email message is just a flat document, so it's not easy for
Wash to respond to each question Nikhil has asked in a readable order. He could
reply to her message and manually copy and paste just her questions and position
his answers directly after them. But that's a lot of work—and most people don't do
it. Often questions and individual points that need addressing via email get lost
because there's no easy way to reply to a specific section of a message.

 It's not easy to privately respond to specific people within a group email.
When the group finally does stop for parts, Badger emails them asking for a cargo
drop-off. Zoe wants to ask the crew how they should negotiate payment. She can't
reply to all because Badger will see it, so she has to manually edit the recipient
list on the private email and create yet another copy of the message.

Since email's invention in the 1960s, the internet and then the World Wide Web were
born, which gave everyone an instant electronic printing press. In the early days, web
sites were just static documents that didn't change. As the web grew and the technology
behind it progressed, web sites became interactive, ever-changing hosted applications,
where you could store and update information, communicate with others, chat in real-
time, and even check and send email. In a world where broadband is widely available and
you can use blogs, Wikipedia, instant messenger, and hosted web applications that
obviate the need for any software on your computer besides a web browser, email looks
even more ancient.
3.6.2 Wave’s Solution

Rather than pass multiple copies of messages back and forth, Wave hosts a single
copy of a conversation that all participants can edit and add to. Wave displays the latest
version of the conversation to everyone in the group in real-time, even as it's changing.
That means if Mahesh has the wave she sent Wash open on her computer, and Wash is
typing his responses, Mahesh sees the wave change keystroke by keystroke. Wave treats
an email conversation with multiple recipients and senders as a document with multiple
editors and writers. If you can make the conversations-as-documents and documents-as-
conversations leap along with Wave, the system makes 100% more sense in other,
smaller ways, Wave addresses the rest of the problems with email listed in the previous
section. Using Wave, all the participants in a conversation have the ability to:

 Reply to a subset of a wave inline


 Add rich interactive media like videos, images, maps, and polls in-wave
 Play back and copy earlier versions of a wave, allowing you to revert to an older
state of a given wave, or see how it changed over time.
3.6.3 Comparison

Fig 2 : Google Wave & Email comparison

Element Email Wave


People Sender or recipient Participant

Messages Copies Single, hosted conversation


Rich Content Attachments, links, HTML Inline gadgets
Quoting/Commenting Manual Forum-like threading
Privacy Inline, private threads
CC, BCC
Chapter 4
Wave Interface & Capabilities
Chapter 4

Wave Interface & Capabilities

4.1 Google Wave Interface


The basic interface looks a lot like Gmail. This is generally good since Gmail is
widely used and understood by millions of people. The biggest obvious difference is that
the inbox/content area that takes up most of the page in Gmail is now split in half, with a
list of waves on the left and an active wave on the right. The rest of the page is taken up
with a Contacts pane, just like in Gmail, and some standard boilerplate links on the upper
right. In fact, it’s so consistent with the Google experience (including Google Accounts)
that it seems quite likely to this author anyway that Google Wave capabilities will be
added to Gmail at some point.

Fig 3 : Google Wave Interface


The default Wave view is a three-column, four-panel layout, as shown in above
figure. From left to right, the first column includes the Navigation panel on top (like the
Gmail sidebar with its links to your Inbox, Sent, and labels) and Contacts panel below it
(like your Gmail Chat buddy list). The second column is the Search panel, which contains
a list of active waves in your Inbox. The third column is where you can start a new wave
or open an existing wave. When a panel's contents are long enough to require it, the panel
gets a scrollbar on its right side that's a little different than the scrollbars you might be
used to.

4.2 Google Wave Capabilities

Google wave is having many capabilities some of them are discussed here as
follows

4.2.1 Real Time

First generation email/IM integration let you see when someone was online, and
opt to instant message someone rather than send them an email. Wave simply erases the
distinction.
If both people are online at the same time, a wave acts just like an instant message
except that you see each character as it is typed. (However, it is possible to set Wave to
hold your messages till you are done.)

Fig 4 : Real time Communication

A key point here is that Google's relentless focus on reducing the latency of
online actions is bringing the online experience closer and closer to our real world
experience of face-to-face communication. When you're talking with someone, you know
what someone is saying before they finish their sentence. You can respond, or even finish
their sentence for them. So too with Wave. The real-time connectedness of Wave is truly
impressive.

4.2.2 Playback

Let's say you are added to a conversation (a wave) that has been going on for a
long time? You can be added at any relevant point, not just the end. But even cooler, you
can do a playback of the entire evolution of the conversation. Let's say you want to edit
your message (or even a message that was written by another participant in the wave).
The original author is notified, but every participant can see that the message has been
modified, and if they want, can replay the changes . This leads to a change in behavior
and conversations become shared documents.
To play back a wave, open it in view mode, and then click its Playback button. A
slider appears at the top of the wave, with rewind, back, forward, and fast-forward
buttons on its left. Just beneath the slider, a yellow bar tells you when the wave was
created. Playback's main purpose is to help Johnny-come-latelies catch up on what they
missed when they've been added to a wave after it's progressed through multiple changes.
For example, if three co-workers are collaborating on a wave, and then add a fourth
person to it, that last person is coming in on a fully developed conversation or document.
To catch up with what happened in sequence, Wave's playback functions as an instant
replay. The fourth person can go back to what the wave looked like when it started, and
watch what changes and contributions got added to it over time to make better sense of
the conversation.

4.2.3 Natural Language


Google Wave can autocorrect your spelling, even going as far as knowing the
difference between similar words, like “been” and “bean.” It can also auto-translate on-
the-fly. Server-based models provide contextual suggestions and spelling correction.

Fig 5 : Spell Checker

Normally spell checker works by matching the words the words in the dictionary
and if it founds any error it just indicates it. But spell checker in Google wave actually
takes the context of the text in account then it matches the context with an language
model which is made from the entire web. So the spell checker in Google wave
confidently changes some text if spell mistakes.

4.2.4 File Sharing

Like email, you can attach files to your waves, including images. There are two
ways to add a file or image to a wave:

If your browser has the Google Gears plug-in installed, you can drag and drop files from
your computer directly into your wave. (Gears comes with Google Chrome for Windows,
and it's freely available to install for Firefox, Internet Explorer, and Safari for Mac.) Or,
click the paper clip icon on your wave's toolbar, and then select the file you want to
upload using the Open Files dialog box.

Except for images, most file types appear in the wave as an attachment, represented by a
large icon. Every file type has a caption or descriptive text included with it. By default,
it's the name of the file without the extension. Anyone participating in the wave can edit
that caption, but it does not change the file name. If you click a file to download it, the
downloaded file name will be the original name the file had when it was uploaded, not
the edited caption. Google limits file attachments to 20MB in size.

4.4.5 Private reply


It is possible to send a private message to a particular message apart from the
other users. Only sender & receiver will be able to see the private messages and no other
participant is allowed to see the message.
To send a private reply, click a blip's timestamp drop-down menu and select
Private reply. A new, inline blip with an additional blue heading that contains its
participants appears inline. Type your private message, and then add the people you want
to include in the usual way. If someone is a participant in the parent wave but not the
private reply, he or she cannot see the reply.
Chapter 5
Anatomy of Wave
Chapter 5

Anatomy of Wave

Google Wave actually has its own lingo – yes, you have to learn a few definitions
if you’re going to really understand this new communication platform. Having
knowledge of these terms will help you understand more about Google’s newest project.
Fig 6 : Anatomy of Wave

- Wave: A wave, specifically, refers to a specific threaded conversation. It can include


just one person, or it can include a group of users or even robots(explained below). The
best comparison I can make is that it’s like your entire instant messaging (IM) history
with someone. Anything you’ve ever discussed in a single chat or conversation is a wave

- Wavelet: A wavelet is also a threaded conversation, but only a subset of a larger


conversation (or a wave). It’s like a single IM conversation – a small part of a larger
conversation and a larger history. Wavelets, though, can be created and managed
separately from a wave.

- Blip: Even smaller than a Wavelet, a Blip is a single, individual message. It’s like a
single line of an IM conversation. Blips can have other blips attached to them, called
children. In addition, blips can either be published or unpublished (once again, it’s sort of
like typing out an IM message but not yet sending it).

- Document: A document actually refers to the content within a blip. This seems to
refer to the actual characters, words, and files associated with a blip.
- Extension: An extension is a mini-application that works within a wave. So these are
the apps you can play with while using Wave. There are two main types of extensions:
Gadgets and Robots

- Embedded Wave: An embedded wave is a way to take a Google Wave and the
conversation within it and place it on your website. Users could use this as a chatroom, as
a way to contact you, or for something more.

Chapter 6
Google Wave API
Chapter 6

Google Wave API


The Google Wave API is an open platform allowing developers to extend the
functionality of Google Wave itself, or extend other applications with waves. The "Wave
API" actually consists of several APIs which provide different functionality (and may be
combined together). Two primary types of development are available within the Wave
API:

 Extensions:
Developers can enhance Google Wave itself by authoring mini-applications
(extensions) that interact with the Wave. Developers can create robots which
interact with waves, or gadgets which participants may interact with and
combinations of robots and gadgets are also supported

 Embeded Waves:

Developers can enhance their existing web applications by embedding Google


Wave directly in their application, allowing you to seamlessly integrate
communication and collaboration.

All initial Wave API development should take place in the sandbox. The sandbox is a
developer-only instance of Google Wave where you can freely test and debug extensions
you develop with other developers. You can request developer access to the sandbox
using this form. When they are ready to share your application with the general
population, you will want to deploy your extensions to Wave Preview.

The sandbox is similar to the Google Wave Preview, though there are some differences:

 Experimental API features may be deployed to Sandbox before Preview, allowing


you to test out the API and offer suggestions for improvements before the API
solidifies.
 New Wave client features are deployed to Sandbox before Preview, providing you
an opportunity to test out new functionality before release to the general public.
 The Wave Sandbox provides a Debug menu which provides additional
functionality for developers.
 The Wave Sandbox works with Federated Wave servers, while the production
version works only with Google domains (except Wave Sandbox).
Additionally, the Google Wave Preview instance provides a few bells and whistles you
won't find in Wave Sandbox, including additional default Wave content, the Extensions
Gallery, and operability with Wave servers running under Google Apps domains.

6.1 Wave Extensions

Wave extensions are a way to augment the functionality of waves and the wave client.
Currently, the Wave API supports the following extensions:

 Gadgets: Gadget extensions provide a shared program which runs within the
wave, and to which all participants have access.
 Robots: Robots are applications which can be added to waves as automated wave
participants. Robot extensions commonly automate tasks, but can also participate
in the wave as a participant, interacting with the conversation based on their
capabilities

Google Wave also supports Extension Installers, which bundle up Backend


elements (robots and gadgets) and Frontend UI elements into an integrated package.
Users may install extensions directly within the Wave client using an extension
installer. Because these installers include UI elements, their presentation is ultimately
implemented by the Wave client; Wave clients, in turn, must understand the extension
installer specification (known as a manifest ).

6.2 Wave Gadgets

A Wave Gadget is one of two types of Google Wave extensions. Gadgets are fully
functional applications. According to Google, gadgets are primarily for changing the look
and feel of waves, although this seems to only scratch the surface of the potential of a
wave gadget.
Almost any iGoogle or OpenSocial gadget can run within Google Wave. That
means thousands of applications that have been already created will work in Google
Wave. A gadget built within Google Wave can take advantage of live interaction with
multiple users. This means something like a live online game with active participation
from all users. In that way, it has similarities to Facebook or MySpace applications,
which take advantage of your friend network to make games, quizzes, and applications
more meaningful and useful. Gadgets are specific to individual waves, rather than to
specific users. Thus, it’s not like having a Facebook app on your profile – the gadget
belongs to everyone within the wave. They also do not have titles, to better integrate with
the actual conversation. Some of the gadgets already built include a Sudoku gadget,
Bidder (which turns your wave into an auction), and Maps (which allows for
collaboration on a Google Map).

6.2.1 Different Wave Gadgets

Chess Gadget : In this gadget two participants can participate into the game Playback
facility is also provided so that any other participant can watch the steps after also.
Playback is ilso helpful in case of incomplete games. Remaining games can be completed
later.

Wave SuDoKu : This is simple sudoku game in which two participants can participate.
Separate scoring mechanism is there that will give points each participants according to
their moves.

HTML : HTML is the stuff that web pages are made of, and you can copy HTML code
from sites all over the web (including the embed code available for most internet videos,
for example). By default you can't simply copy and paste HTML into a blip and expect it
to work, however. What you can do is install the HTML gadget, click its Edit link, insert
your HTML text, and then click the View link. In response, the HTML gadget renders
your HTML code as it was meant to be displayed.
Yellow Highlighter : This sample is an extension installer that uses annotate Selection to
annotate the selected text when a toolbar icon is clicked. It annotates it using the key used
by the Wave client for specifying the background color of text, and specifies the value as
yellow. This results in the text being highlighted.

Map Gadget : This Gadget lets users edit a map together, adding markers and poles with
titles and descriptions. Users can also search for addresses and businesses and add those.

Yes No Maybe Gadget : This gadget collects the responses of the participants in three
formats like Yes/No/Maybe. It shows the candidates reply with its image in different
columns. The interesting thing is that you can change your reply later also. There are
many Interesting Gadgets available to use with Google wave.

6.2.2 Wave Gadget Architecture


Fig 7 : Wave Gadget Architecture

The figure shows the basic model of the gadget. There is the wave John’s client
where the gadget runs and Bill’s client where also the gadget is running.
When John do something to the gadget it looks like you manipulating the
background but internally it maintains a XML document which contains the entire state
of wave. When changes are made to wave it reflect changes in the XML document. After
that the Client calculates the difference and sends to the Wave server. Wave server takes
all the changes made by all user continuously and then reflects all changes on every
client. The Gadget can change only one node in its document that is gadget node.

6.2.3 Gadget Libraries


Here some java & python libraries given that are required to develop a wave gadget.

Class Wave

Class Wave represents the wave object in java library. Here are some
Methods to use are given below:

Static Methods Return Value Description

getHost() wave.Participant Returns the Participant


who added this gadget to the
blip. Note that the host may
no longer be in the
participant list.
getMode() wave.Mode Returns the gadget
wave.Mode.
getParticipantById(id:S wave.Participant Returns a Participant with
tring)
the given id.
getParticipants() Array.<wave.Participant Returns a list of
>
Participants on the Wave.
getState() wave.State Returns the gadget
wave.State object.
getTime() Number Retrieves "gadget time"
which is either the playback
frame time in the playback
mode or the current time
otherwise.
getViewer() wave.Participant Get the Participant whose
client renders this gadget.
getWaveId() String Returns serialized wave ID or
null if not known.
isInWaveContainer() Boolean Indicates whether the gadget
runs inside a wave container.
log(message:String) None Requests the container to
output a log message.

setModeCallback(callbac None Sets the mode change


k:Function,
callback.
opt_context?:Object)
setParticipantCallback( None Sets the participant update
callback:Function,
callback. If the participant
opt_context?:Object)
information is already
received, the callback is
invoked immediately to
report the current participant
information. Only one
callback can be defined.
Consecutive calls would
remove old callback and set
the new one.
setStateCallback(callba None Sets the gadget state update
ck:Function,
callback. If the state is
opt_context:Object)
already received from the
container, the callback is
invoked immediately to
report the current gadget
state. Only invoke callback
can be defined. Consecutive
calls would remove the old
callback and set the new one.

Class Participant

Class Participant represents the Participant object in java library. Here are some
Methods to use are given below:

Methods Return Valu Description


e
getDisplayName() String Gets the human-readable display name of this
participant.
getId() String Gets the unique identifier of this participant.
getThumbnailUrl( String Gets the url of the thumbnail image for this
)
participant.
Class State

Class State represents the state object in java library. Here are some Methods to use
the are given below:

Methods Return Valu Description


e
get(key:String, String|null Retrieve a value from the synchronized
opt_default:String)
state. As of now, get always returns a string.
This will change at some point to return
whatever was set.
getKeys() Array. Retrieve the valid keys for the synchronized
state.
reset() None Submits a delta to remove all key-values in
the state.
submitDelta(delta:Object None Updates the state delta. This is an
)
asynchronous call that will update the state
and not take effect immediately. Creating
any key with a null value will attempt to
delete the key.
submitValue(key:String, None Submits delta that contains only one key-
value:String)
value pair. Note that if value is null the key
will be removed from the state. See
submitDelta(delta) for semantic details.
toString() Pretty prints the current state object. Note
this is a debug method only.

You can write a gadget with any text editor. Once you write the gadget, you must
host it somewhere on the internet, where it is publicly visible (that is, not behind a
firewall). A few options for hosting are Google App Engine and SVN.

To add a gadget to a wave:

1. Place the cursor in the wave and click the more actions menu in the upper right
corner of the wave. The More actions menu appears as an ellipsis (...).
2. In the More actions menu, click the Add Gadget by URL.
3. In the Add gadget by URL dialog, type the URL for the gadget spec (in this
example, http://gadget-doc-examples.googlecode.com/svn/trunk/wave/hello.xml)
and click Add. The "add by URL" feature is useful for testing gadgets during
development. When you are ready to share a gadget with users, you should install
it in a wave to make it easy to reuse and share.

6.3 Wave Robots

Robots are the other type of Google Wave extension. Robots are like having
another person within a Google Wave conversation, except that they’re automated.
They’re a lot like the old IM bots of the past, although far more robust. Robots can
modify information in waves, interact with users, communicate with others waves, and
pull information from outside sources. Because it acts like a user, you can define its
behaviour based on what happens in the chat. You could build one as simple as “change
the word dog to the word cat” or one as complex as a fully-functional debugger. We’ll
probably start seeming some very advanced robots in the near future. Some of the
robots already in service include Debuggy (an in-wave debugger), Stocky (which pulls
stock prices based on stock quote mentions), and Tweety (the Twave robot, which
displays tweets inside of a wave).robot is an automated participant on a wave. A robot
can read the contents of a wave in which it participates, modify the wave's contents, add
or remove participants, and create new blips and new waves. In short, a robot can
perform many of the actions that any other participant can perform.

You can use a robot to perform actions such as the following:

 modify information in a wave


 interact with participants in a wave
 communicate and synchronize information in a wave to the outside world or to
other waves
 access or modify state in a third-party (such as a database)

You can do many more things with robots than those listed here. Additionally, as we
expand the capabilities of the API, robots will be able to take advantage of these new
features.
6.3.1 Different Wave Robots

Polly the Pollster: One of the most promising Wave bots available in the preview, Polly
the Pollster lets you create multiple choice polls with custom questions and answers, and
distribute them among any number of Wave contacts. As your contacts respond by
selecting a radio button and clicking the Submit button, you can watch Polly's poll
results, in the form of a pretty graph, update in real-time.

TwitUsernames: The TwitUsernames bot inspects the contents of any wave it's
participating in, and converts the words that start with the @ sign to Twitter user links.
For example, if you add TwitUsernames to a wave and then type @malcolmreynolds into
a wave.

Emoticony : The Emoticony bot converts textual smiley faces into smiley face images.
Add Emoticony to your wave, and in any blip (except the first one), Emoticony
automatically converts emoticons to images.

Rosy Etta : Rosy is Language conversion robot which converts English to different 40
languages & vice versa. Rosy translates the word character by character so while writing
the other person watches different words.

CleanTXT : The CleanTXT bot is an automated janitor for a wave, especially helpful on
active waves with lots of participants, like public waves. When CleanTXT is participating
in a Wave, it automatically deletes empty blips, reduces repetitive blank lines in a blip,
automatically corrects common typos (such as a mistyped "teh" for "the"), and inserts
missing spaces after commas and semi-colons. The CleanTXT bot also offers a hook into
the Approver gadget, a thumbs-up/thumbs-down control that lets participants rate blips in
a wave. With CleanTXT participating in your wave, type !approver to add the Approver
gadget to that blip. Type! Approver++ to have CleanTXT adds the Approver gadget to
every new blip submitted to the wave going forward. CleanTXT is especially useful on
public waves, which can get cluttered with accidental empty blips and typos quickly.
6.3.2 Wave Robot Architecture

Fig 8 : Wave Robot Architecture

Figure shows the Wave Robot Architecture. As shown in the figure we have a john’s
client which maintains a XML document and directly contacts with the wave server. The
wave server not only responds to the wave clients but it also deals with the bunch of
agents called robot agents. So Spelly & Linky are the Robot agents. Robots reside on the
App Engine and the get complete access to the document in which they participate. App
Engine is something special. To keep development of robots simple Google had created a
proxy server called robot proxy. The robot proxy takes the wave protocol from the wave
server and converts it into HTTP protocol. It also takes all the HTTP protocols which are
required for a robot. Then it manipulates it encodes it and sends back to the wave server.
Wave server makes the required changes it the Wave document. Currently the robots are
dependant for some good technical reasons. Google has said the it will remove that
dependence since it is in development. Google has developed some libraries in the JAVA
& PYTHON .

6.2.3 Robot Libraries

Event Bundle

When the Wave event system determines that an event has occurred for which a robot has
expressed an interest in being notified, Wave creates a JSON Message Bundle and sends
the message to the robot. Each bundle consists of one or more components:

 An events element, containing information related to the event


 Optional blips and/or wavelet elements, which may be attached depending on the
type of event
 Metadata attached to the event, usually information about the robot itself such as
robotAddress

Event Properties description type


WAVELET_BLIP_CR blipId Blip ID of the root blip String
EATED newBlipId Wave blip ID of the String
added blip
WAVELET_BLIP_RE blipId Blip ID of the root blip String
MOVED removedBlipId Wave blip ID of the String
removed blip
WAVELET_PARTICI blipId Blip ID of the root blip String
PANTS_CHANGED participantsAdded Addresses of the Array of
participantsRemoved participants added and/or Strings
removed
WAVELET_SELF_AD blipId Blip ID of the root blip String
DED
WAVELET_SELF_RE blipId Blip ID of the root blip String
MOVED
WAVELET_TITLE_C blipId Blip ID of the root blip String
HANGED title New title String
BLIP_CONTRIBUTO blipId Blip ID of the blip String
RS_CHANGED contributorssAdded Addresses of the Array of
contributorsRemoved contributed added and/or Strings
removed
BLIP_SUBMITTED blipId Blip ID of the submitted String
blip
DOCUMENT_CHAN blipId Blip ID in which the String
GED change occurred
FORM_BUTTON_CLI blipId Blip ID of the blip String
CKED button containing the form String
Name of the clicked
button
GADGET_STATE_CH blipId Blip ID of the blip String
ANGED index containing the gadget Number
oldState Index of the gadget that String
changed within the
document
Previous state of the
gadget
ANNOTATED_TEXT blipId Blip ID containing the String
_CHANGED name annotated text String
value Name of the annotation Number
Value of the annotation

Robot Operations

Robot operations are those operations not tied to a particular element in the wave (e.g.
wavelet, blip, etc.) All operations that operate over all these elements are attached to the
"robot" namespace. You can think of robot operations as global operations.

Wavelet Operations

Wavelet operations are operations specific to a particular wavelet within the wave.

Method Name Description


wavelet.appendBlip(waveId: String, Appends a blip to the specified wave.
waveletId: String, blipData: BlipData)
wavelet.setTitle(waveId: String, waveletId: Sets the title of the specified wave.
String, title: String)
wavelet.addParticipant(waveId: String, Adds a participant to the wave. The
waveletId: String, participantId: String) participantId is the address of the
participant to add.
wavelet.setDatadoc(waveId: String, Sets a data document for a wavelet. Data
waveletId: String, datadocName: String, documents are comparable to normal (blip)
datadocValue: String) documents but are typically not shown to
the user and do not have any schema
applied to them.

Blip Operations

Blip operations are operations specific to particular blips within a wavelet. Note that all
blips are also documents as well, so operations specific to documents are also applicable
to blips (but not vice-versa).

Method Name Description


blip.createChild(waveId: String, waveletId: Creates a reply to the current blip,
String, blipdId: String, blipData: BlipData) taking the data for the new blip from
blipData.
blip.delete(waveId: String, waveletId: String, Deletes the blip with the specified
blipdId: String) blipId.

Document Operations

Document operations are operations specific to documents (and blips).

Method Name Description


document.appendMarkup(waveId: String, Appends HTML (or XHTML) markup
waveletId: String, blipdId: String, content: passed in the content parameter to the
String) current wave. The built-in copy & paste
functionality of wave is used to convert
the content to something wavey.
document.modify(range: Range, index: This operation modifies a document and
Integer, modifyQuery: encodes two parts. Only one of range,
DocumentModifyQuery, modifyAction: index and modifyQuery can be set. This
DocumentModifyAction) determines where the modification will
be applied. The modifyAction parameter
specifies what needs to be done.

6.4 Robot & Gadget Comparisons

ROBOT GADGET
Runs on application servers Runs within the wave client itself.

Each robot may instantiate at most Each gadget may have multiple instances per
.Robot is like a participant on a wave wave, one for each participant interacting with
one instance per wave. the gadget.
Robots may modify a wave and Gadgets are not able to modify a wave, and
perform the same operations as a have limited visibility into the wave
human participant.
Robots can modify a gadget. Gadgets have no way to know that a robot
exists, and thus are not able to modify a robot.

6.5 Google Wave Embedding

Wave embeds are a little more complex than embedding a YouTube video onto your
blog, yet in the end, that’s really what Google Wave Embeds are: a way to take Google
Waves onto a third party website. Embedded Waves support many of the functions of the
actual Google Wave client, including dragging-and-dropping files. While the Wave
Embeds is still very early stage, Google has already built two: YouTube Playlist Discuss
and Multiple Extensions Embed. The former allows you to discuss a YouTube video via
a wave and the latter allows for interaction with multiple waves on the same page. One
possibility: Google Wave Embeds may be a real-time replacement to static comments. If
Google perfects wave embeds, you could even see YouTube.com comments replaced
with waves, although it is way too early to make any calls on the potential of this.
Fig 9 : Wave Embedding

The Google Wave Embed API allows you to easily (and quickly) add communication and
collaboration tools to your web applications. The Embed API allows you to embed waves
on third party websites, anywhere in the web, for easy discussion and collaboration using
wave's cutting-edge user interface. Any conversations on those waves also show up in
your Wave client, making Wave an easy way to aggregate conversations you care about
all over the web in one place. An embedded wave acts and behaves the same as a wave
within the Google Wave application. An embedded wave even supports drag-and-drop
functionality, allowing you to provide your users with a truly interactive collaboration
tool. The Embed API is currently small and has a limited feature set

6.5.1 Wave Embed Architecture


Fig 10 : Wave Embed Architecture

Figure shows the basic structure of wave embedding.

Embedding is the way by which you can put Google wave in the outside World that is u
can have a wave in your web site. While embedding the wave in the other web sites wave
embedding keeps the part of wave in website which is not dependant on the crome. And
that special part acts as wave client as shown in figure then talks with the wave server.

6.5.2 Embedding Libraries


Class OpenSociaLWave

This class defines the container to hold an OpenSocial-embedded wave panel

Method Return Valu Description


s e
init() None Initializes the embedded wave panel by loading the
OpenSocial friends list as contacts and getting an
authentication token from Wave. When done, this method
will populate the associated wave panel with the client
wave.

Class WavePannel

This class defines an object to hold the embedded wave, in which an <iframe> is
constructed.
Methods Return Val Description
ue
addListener(eventType:Stri None Adds an event listener.
ng,
handlerFunction:Function)
addParticipant() None Adds the current user as a participant to
the wave.
addReply(participantId:Stri None Adds a reply to the currently loaded
ng, opt_callback:Function) wave. An empty reply will be added to
the wave for the user specified. If
participantId is empty, an attempt is
made to authenticate the user against
Google. If that fails, a url is provided in
the callback to which the client should
be redirected to provide for the login.
getFrameId() String Returns the frame ID.
getId() Number Returns the Id of this frame
init(container:Object, None Actually creates the wave <iframe>
opt_loadCallback:Function inside the given container. This creation
) is not done in the constructor to allow
the caller to set various initialization
options.
loadSearch(searchExpr:Stri None Loads a new search expression into the
ng, opt_callback:Function) digest. This can be called before or after
init.
loadWave(waveId:String, None Loads a new wave into the WavePanel.
opt_callback:Function) This method can be called before or
after init.
provideProfiles(profiles:Ob None Provides information about profiles.
ject) This method is used to return values
from the profile provider. The expected
input format is a map of wave addresses
to objects with the following fields:
firstName
lastName
photoUrl
setAuthToken(token:String None Sets the authentication token. This
) token must have been obtained by a
signed request to wave.
None Sets the function which can be called to
setContactProvider(provide provide profile information. This
rFunc:Function) method is used when users need to be
displayed but their information is not
yet available.
setContacts(contacts:Array. None Sets the IDs of the contacts that will be
) displayed in the contact picker.
Fetching their profiles is independent
from this.
setEditMode(value:) None Sets the edit mode for the wave. This
method currently affects only the root
blip.
setToolbarVisible(value:) None Sets the visibility of the panel switch
toolbar.
setUIConfig(bgcolor:String None Set the UI configuration for the wave.
, color:String, font:String, This must be done before init() is
fontsize:String) called. Note that fontSize must be
expressed in points, such as "12pt", or
in pixels, such as "12px". Other CSS
properties are not fully supported. This
can only be done before init.
setUIConfigObject(config: None Set the UI configuration for the wave.
WavePanel.UIConfig) This can only be done before init().
Chapter7
Google Wave Federation Protocol
Chapter 7

Google Wave Federation Protocol


Google wants other providers to adopt Wave - the protocol allows federation
between independent Wave clouds. The team hopes that Wave will become as ubiquitous
and interoperable as email and instant messaging, not just a Google.

Fig 11 : Google Wave Federation Protocol

Google Wave provides federation using an extension of XMPP, the open Wave
Federation Protocol. Being an open protocol, anyone can use it to build a custom Wave
system and become a wave provider. The use of an open protocol is intended to parallel
the openness and ease of adoption of the e-mail protocol and, like e-mail, allow
communication regardless of provider. Google hopes that waves may replace e-mail as
the dominant form of Internet communication. In this way, Google intends to be only one
of many wave providers. It can also be used as a supplement to e-mail, instant messaging,
FTP, etc.
A key feature of the protocol is that waves are stored on the service provider's
servers instead of being sent between users. Waves are federated; copies of waves and
wavelets are distributed by the wave provider of the originating user to the providers of
all other participants in a particular wave or wavelet so all participants have immediate
access to up-to-date content. The originating wave server is responsible for hosting,
processing, and concurrency control of waves. The protocol allows private reply wavelets
within parent waves, where other participants have no access or knowledge of them.

Security for the communications is provided via Transport Layer Security


authentication, and encrypted connections and waves/wavelets are identified uniquely by
a service provider's domain name and ID strings. User-data is not federated, that is, not
shared with other wave providers.

Fig 12 : Wave Server Communication


Some features of XMPP inherited by the wave federation protocol are the discovery of
IP addresses and ports, using SRV records, and TLS authentication and encryption of
connections. The XMPP transport encrypts operations at a transport level. So, it only
provides cryptographic security between servers connected directly to each other. An
additional layer of cryptography provides end-to-end authentication between wave
providers using cryptographic signatures and certificates, allowing all wavelet providers
to verify the properties of the operation. Therefore, a downstream wave provider can
verify that the wave provider is not spoofing wavelet operations. It should not be able to
falsely claim that a wavelet operation originated from a user on another wave provider or
that it was originated in a different context. This addresses the situation where two users
from different, trustworthy wave providers are participants of a wavelet that is hosted on
a malicious provider. The protocol requires each participant to sign its user's operations
with its own certificate. The signatures of all the operations forwarded by the host will be
evaluated by the participants. This is to stop malicious hosts from altering or spoofing the
contents of the messages from the user of other services. All the signatures and
verifications are done by the wave providers, not the client software of the end users.

All waves and wavelets (child waves) are identified by a globally unique wave id, which
is a domain name and an id string. The domain name identifies the wave provider where
the wave originated. Waves and wavelets are hosted by the wave provider of the creator.
Wavelets in the same wave can be hosted by different wave providers. However, user
data is not federated; i.e., not shared with other wave providers. Private reply wavelets
are also possible, of which other participants have no knowledge or access. If a private
wavelet is sent between users on the same wave provider, it's not federated regardless of
where the parent wave is hosted.

Chapter 8
Advantages & Disadvantages

Chapter 8

Advantages & Disadvantages

List the advantages & disadvantages of the seminar topic.


Advantages:
1. The basic interface looks a lot like Gmail.
2. Google Wave works better with groups of contacts.
3. Simultaneous live conversations create new collaborative patterns.
4. The notion of participant as either user or robot works well, making
the social fabric of conversation both novel and broader.
5. Waves are strongly conversation-oriented instead of result-oriented.
6. Google Wave supports virtually all the key elements of Enterprise 2.0.

Disadvantages:
1. Since it is in developing state so many bugs will be there .
2. Speed is slow.
3. Very tedious to register & limited no of users are allowed.
4. Only 20MB of attachments are allowed.

Chapter 9
Conclusion

Chapter 9

Conclusion

Google Wave is a new communication service previewed today at Google I/O.


"A wave is equal parts conversation and document, where people can communicate
and work together with richly formatted text, photos, videos, maps, and more." The
service seems to combine Gmail and Google Docs into an interesting freeform
workspace that could be used to write documents collaboratively, plan events, play
games or discuss a recent news. Google Wave has been designed by the founders of
Where 2 Tech, a start-up acquired by Google to create a cutting edge mapping
service, which later became Google Maps.
"In Google Wave you create a wave and add people to it. Everyone on your
wave can use richly formatted text, photos, gadgets, and even feeds from other
sources on the web. They can insert a reply or edit the wave directly. It's concurrent
rich text editing, where you see on your screen nearly instantly what your fellow
collaborators are typing in your wave. That means Google Wave is just as well suited
for quick messages as for persistent content -- it allows for both collaboration and
communication. You can also use "playback" to rewind the wave to see how it
evolved."
In short Google Wave is
 Product
Platform
Protocol

Chapter 10
Appendix
Chapter 10

Appendix

10.1 References

Google Wave Main Hub


http://wave.google.com/

Wave Account Signup:


Developer - https://services.google.com/fb/forms/wavesignupfordev/
Non-developer - https://services.google.com/fb/forms/wavesignup/

Google Wave API


http://code.google.com/apis/wave/

Google Wave Protocol


http://www.waveprotocol.org/

Google Wave Developer Blog


http://googlewavedev.blogspot.com/

Google Wave Discussion Groups :


Google Wave API - http://groups.google.com/group/google-wave-api
Google Wave Protocol - http://groups.google.com/group/wave-protocol

10.2 List of Figures


Figure Title Page
Number number
1 Google Wave Introduction 3
2 Google Wave & Email Comparison 12
3 Google Wave Interface 13
4 Real Time Communication 14
5 Spell checker 16
6 Anatomy of wave 18
7 Wave Gadget Architecture 24
8 Wave Robot Architecture 30
9 Wave Embedding 35
10 Wave Embed Architecture 36
11 Google Wave Federation Protocol 39
12 Wave Server Communication 40

Você também pode gostar