+ All Categories
Transcript
Page 1: Developing a Google Wave Extension

Austin Chau and Brian KennishGoogle Developer Relations

Developing a Google Wave ExtensionSilicon Valley Code Camp 2009

Page 2: Developing a Google Wave Extension

Topics

Writing and Deploying

Packaging

Questions

Introduction to Wave

Setting Up Your Development Environment

Troubleshooting

Page 3: Developing a Google Wave Extension

Introduction to Wave

Page 4: Developing a Google Wave Extension

Using Wave

What would email look like if it was invented today, rather than 40 years ago?

Wave combines email and many communication technologies since — instant messaging, bulletin boards, wikis, real-time document collaboration — in one place.

It's also a protocol and platform.

Page 5: Developing a Google Wave Extension

Developing with Wave: The Protocol

We want lots of Waves besides Google Wave, so we're drafting the protocol specification in public and open sourcing our client and server code.

http://www.waveprotocol.org/

Page 6: Developing a Google Wave Extension

Developing with Wave: The Platform

Embeds bring Wave to the world.

Extensions bring the world to Wave:• Gadgets let you safely run untrusted code in a wave.• Robots are automated wave participants.

Page 7: Developing a Google Wave Extension

Developing with Wave: Terminology

wave — A conversation and shared document in Wave.

wavelet — The unit of access control in a wave.

blip — A message in a wavelet.

Page 8: Developing a Google Wave Extension

Setting Up Your Development Environment

Page 9: Developing a Google Wave Extension

Tools

Robots are currently required to use Google App Engine. You can sign up for an account at http://appengine.google.com/.

Java robots are also required to use the Wave Java SDK (Python robots are possible too). You can download the latest JARs from http://code.google.com/p/wave-robot-java-client/downloads/list.

Using Eclipse isn't required, but we recommend doing so because the Google Plugin makes it easy to create and deploy App Engine applications. You can install the plugin via http://code.google.com/eclipse/.

Page 10: Developing a Google Wave Extension

Writing and Deploying

Page 11: Developing a Google Wave Extension

The Robot WAR File

/war/WEB-INF/web.xml binds the robot servletsto the Wave endpoints.

/war/WEB-INF/appengine-web.xml specifiesthe App Engine identifiers.

/war/_wave/capabilities.xml subscribes the robot to Wave events.

Page 12: Developing a Google Wave Extension

Sample Code: Hello-Worldy

[email protected]

Does "hello world"-type stuff.

Appends text, echoes submittedblips, and implements form UI.

http://code.google.com/p/google-wave-resources/source/browse/trunk/samples/extensions/robots/java/hello-worldy/

Page 13: Developing a Google Wave Extension

Sample Code: Stocky

[email protected]

Replaces stock symbols withreal-time quotes.

Incorporates third-party data intoWave.

http://code.google.com/p/google-wave-resources/source/browse/trunk/samples/extensions/robots/java/stocky/

Page 14: Developing a Google Wave Extension

Sample Code: Embeddy

[email protected]

Generates code to embed awave in your webpage.

Features all three of the currentWave APIs and two-way robot-to-gadget communication.

http://code.google.com/p/google-wave-resources/source/browse/trunk/samples/extensions/robots/java/embeddy

Page 15: Developing a Google Wave Extension

Troubleshooting

Page 16: Developing a Google Wave Extension

Tips

Check your App Engine logs for errors.

Go tohttp://app-id.appspot.com/_wave/capabilities.xml tosee if your capabilities file is live.

Make sure you updated your capabilities version string after adding events.

Increase your log level in/war/WEB-INF/logging.properties, e.g., toALL.

Page 17: Developing a Google Wave Extension

Packaging

Page 18: Developing a Google Wave Extension

The Extension Installer

Extension Hooks:• NEW_WAVE_MENU• TOOLBAR

Extension Actions:• createNewWave• addParticipants

<menuHook  location="TOOLBAR"  iconUrl="http://hello-worldy.appspot.com/images/robot.jpg"  text="Add Hello-Worldy">  <addParticipants>    <participant id="[email protected]" />  </addParticipants></menuHook>

Page 19: Developing a Google Wave Extension

Questions

Page 20: Developing a Google Wave Extension

Contact Us

Brian KennishGoogle Wave and Chrome

[email protected]://twitter.com/byoogle

Austin ChauGoogle Wave and YouTube

[email protected]


Top Related