developing a google wave extension
DESCRIPTION
Learn how to build a Wave robot from the ground up using Google App Engine, Java, and Eclipse. We walk through setting up your development environment, writing the extension, and deploying, troubleshooting, and packaging it. These slides are from a talk given at Silicon Valley Code Camp 2009.TRANSCRIPT
![Page 1: Developing a Google Wave Extension](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/1.jpg)
Austin Chau and Brian KennishGoogle Developer Relations
Developing a Google Wave ExtensionSilicon Valley Code Camp 2009
![Page 2: Developing a Google Wave Extension](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/2.jpg)
Topics
Writing and Deploying
Packaging
Questions
Introduction to Wave
Setting Up Your Development Environment
Troubleshooting
![Page 3: Developing a Google Wave Extension](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/3.jpg)
Introduction to Wave
![Page 4: Developing a Google Wave Extension](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/5.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/6.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/7.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/8.jpg)
Setting Up Your Development Environment
![Page 9: Developing a Google Wave Extension](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/9.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/10.jpg)
Writing and Deploying
![Page 11: Developing a Google Wave Extension](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/11.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/12.jpg)
Sample Code: Hello-Worldy
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](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/13.jpg)
Sample Code: Stocky
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](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/14.jpg)
Sample Code: Embeddy
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](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/15.jpg)
Troubleshooting
![Page 16: Developing a Google Wave Extension](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/16.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/17.jpg)
Packaging
![Page 18: Developing a Google Wave Extension](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/19.jpg)
Questions
![Page 20: Developing a Google Wave Extension](https://reader036.vdocuments.site/reader036/viewer/2022081414/54bf0bd14a7959ef3d8b46cf/html5/thumbnails/20.jpg)
Contact Us
Brian KennishGoogle Wave and Chrome
[email protected]://twitter.com/byoogle
Austin ChauGoogle Wave and YouTube