Wave Hackathon - live from Googleplex.
Agenda can be found here
Wave minutes:
Message from Lars (someone check that spelling):
100 thousand beta users by
Highlight extensions by Sept 30
Looking for more ambitious extensions and usage
Make extensions feel right, flow properly.
Building a gallery like experience to find extensions.
Application store planned, monetize extensions (no more info at this time)
David Byttow on Wave API
(Are the slides available somewhere?)
Wave intro (why build on Google wave?)
Real time communication.
Workflow focused on bridging with communication
Business opportunities
Why are we here?
Windows success? From developers
Developers key to long term success
Wave:
Exciting technology
solve problems in workflow
Increases productivity
life to static pages
foundation with vast range
Embedding
Place a wave on a web page.
Transparent: can even embed wave without looking like wave.
Done via javascript
Rethemeable
change color, styling, etc
have full access to wave
respond to events on wave
Made in Java or Python, on Google App Engine
This is temporary, will be opened up later
In development: Ruby API, PHP, perl coming.
q: when gadget broadcast state, can robot get event?
a: yes. robot have more authority than gadget.
Demo of Smiley robot: replaced ":)" and ":(" with unicode chars
Called "yasr": yet another smiley robot
Demo of Swedish Chef (borkforceone@appspot.com)
Monty
Robot to execute python code.
set wave.result to function output, monty makes a blip.
ideas:
Addie (calculator)
Facty (fact checking bot)
Spammy (spam deleter)
Arnie (terminates other bots)
Publishy (publish content to external db)
Maily (email integration)
Extensions (new)
Shrink wrap your gadgets and robots!
Extend client with third party apps
Richer experience
Share and deploy apps
(Using)
Debug-> Extensions->Add extension installer
Insert via xml url.
Puzzle , can be put in a wave and sent to others.
Install button.
<<<>>>
API
XML based
Hooks (listeners)
New wave
Toolbar menus
(not implemented yet)
Keyboard shortcuts
Macros
regular expressions
Actions
Insert gadget
Add participant
Create new wave
Apply annotation
Q: do extensions survive in the embedded UI?
Roadmap
Extentions
Java robot API (open source http://code.google.com/p/wave-robot-java-client)
Python robot api updated!
java api more advanced, google has updated python api to be closer now.
Markup XHTML supported in blips
APPEND_MARKUP operation
Extentions
Read only anonymous access (stretch goal)
pending scalability issues
Extend UI configuration
Display toolbar, participant list, inbox, ...
More styling options
Gadgets
UI improvements
dropdown menu on hover
speed up rendering
right now, there is a 1-2s delay before it renders
OpenSocial support
retrieve friends, etc
DiffOnOpen/Playback states
GWT-based gadgets
Robots
New wire protocol (v0.2)
JSON based, see python code (?)
Will be published later for feedback
Bring parity to Java+Python APIs
Internal speed improvement for AppEngine robots
Robot gateway, OpenSocial REST access
Robot access to OAUTH controlled resources
Multiple wave access
Sunset (get rid of) robot CRON, in favor of direct access to wave servers w/ authentication
Gateway support: improve the current "tweety" type of access to support outside addresses of the form "address+robot@appspot.com"
Extensions
Enable users to easily discover extension installers
Directory of gadgets/robots/extensions
Extention Marketplace
Enable user management of their installed extensions (uninstaller)
Expand API from feedback
Marcel Prasetya (mprasetya@google.com) marcel@wavesandbox.com - Robot Details
Robots
read/write wave content in which it participates
General classes
content assist, completey, smiley
data synchronization: buggy, tweety
multi-wave applications: polly, blogbot
conversational: eliza
Currently, robots only run on AppEngine
Architecture
Client->Wave server->linky
Client->Wave server->spelly
Client->Wave server->Robot proxy->(JSON HTTP)->robot
Events
Wavelet self added
Blip submitted
Document changed
...
Operations
Wavelet append blip
wavelet set title
document insert/delete
...
View objects
Wave is xml doc with text and non-text content
Abstraction layer:
Text View
Form View
Gadget view
Demo: tweetz robot: simplified demo of tweety
no login form, uses hard-coded uname/pass
fetches tweets on wavelet_self_added
submit tweet on blip_submitted
Build a robot (using java):
Get app id (appengine.google.com)
download client library
Devel using eclipse w/ google appengine plugin
Eclipse project "web application" type
Place libraries in lib/ directory of project
import them into project workspace (might need to refresh project after adding libs, before import)
Create config file: /_wave/capabilities.xml
defines events to trigger
Extend class on AbstractRobotServlet
override processEvents(RobotMessageBundle) func
Create a new blip: bundle.getWavelet().appendBlip().getDocument().append("Hello, world!");
Getting blips: for(Event e : bundle.getBlipSubmitedEvents()) {
extention.xml: Defines extentions, such as UI plugins.
Deploy the robot to App Engine
Click eclipse AppEngine icon from google eclipse plugin
Q&A
Q&A
Talk about moderation, whose in charge. Who's in control?
Moderation ability, control a wave.
Comment only mode.
Still thinking about it.
Built initially completely open to get it working, easily can add moderation later
From protocol point of view, who's in charge, moderation
Still very early, see wave protocol forum to give feedback on it
Will talk about it tomorrow on federation day
How handle spam?
Allen: Won't allow spam on wave. ( mass laughter at this point )
Expect to always have some level of abuse.
Noone can add you to a wave without them being in your address book.
Content analysis.
All waves are signed at a provider level.
Some discussion on user level signing, long term.
Again, ask in federation forum
Problem of others editing your waves
Possible solutions
specify "no bots"
Not sure yet
Grainular control?
Only stuff available right now is what the client can do.
Possible to do with robots.
Concurrency issues with gadgets?
Two clients click a button to increment a value, last person to click wins
Planned support for number operations (increment, ..), key/value operations
Currently, only text based operations (replace, append, ...)
Situation with connection limit (proxy->frontend)
No limits on front end?
DOS protections
User opens several [waves/pages of waves] on an account, runs out of connections?
2 channels per page
...No idea...
Robot works with 1 wave. What about robots that can use multiple waves. Robot act on a user's behalf
User might authenticate a robot as themself, do work on all player waves.
will have OpenSocial REST & RPC
will have oauth
Want control over what robots can do to own waves, or on behalf of you
Multiple angles for permissions
"Settings" wave, overall robot interaction
Control, and turn off extentions via setty
concept: "do not use spelly on wave that matches a seach"
Minimum bitrate required
Right now: pretty hight
Not tuned yet
Work on mobile client will improve desktop client as well
Gadget performance
RPCs: very fast, POST message
Loading gadget: initial iframe load issue, 1-2 seconds
Speed being worked on
reason is iframe loading from 3rd party or gmodule
Forwarding waves
Add someone to a wave
Copy wave to a new wave
<...>
More control permission to owner
Removing participants feature does not exist. (also, robot cannot remove people right now)
Concern of someone adding too many robots, too many blips
No robot limit
Yes. (it is a concern)
"Who are you waving with, do you trust them"
Long term: control over the wave. Who can add what (block new participants from adding more)
There is a rate limit. Spammy robots get blacklisted if they go insane.
Robots are passive, a crashed robot will not affect anything (aside from the lack of a robot)
Given a thousand-robot wave, don't open that wave.
Enough APIs to create your own wave client (related: running own wave server)
Yes, of course
Still working on it
Ask on federation day.
Currently: only can embed a wave
Later: embed other components
Participant limit?
Cannot handle too many "yet"
Talking about solutions
Will need to be a hard limit
Again, discuss on wave protocol forum
Mobile client, supported now?
Existing client built using GWT
slowly being worked on in background
not a priority right now
Can a gadget talk directly to a robot?
Gadget updates state, robot responds to it
(external?) request: call robot directly (not a good choice, storage and playback bypassed)
Send message directly to robot
<..>
Working on more moderation abilities
"Commenter" role important: people can only comment, cant edit original.
Looking at use cases before implementing
How to implement a group, group level access?
Group functionality is limited right now
Working to expand it
Groupy the bot exists, written at a prior hackathon
Location based blips (standalone, not added by gadget)?
Interesting idea
HTML5 has gps/location API?
Announce something when near something?
Mail integration?
Yep, write a mail gateway
Tough problem.
Enough API internally right now
No time before launch
Talk to waveteam if you want to make one.
Access wave client with XMPP client?
Ask at federation protocol
Google Voice integration?
Nothing announced
interesting use cases
Robot protocol, simple protocol
JSON
proprietary from Google
fast, compact
Developers use client interface? (???)
Dont think so
implementation detail
Google wave server open source?
Working to make it open source
Will take time to disentangle it from google production stuff
"Tomorrow [federation day] will be very exciting"
White paper? Implementation documentation? Internal timelines?
Question for tomorrow
Robots running on other 3 servers (?)
Different client interface
"It's your wave server"
Robot is mechanism to update content of wave xml
Up to the client how to render a robot.
Robot APIs "should" be made similar
Cirtifying robots/extentions
Nothing to announce right now.
Sept 30: adding real live users
View the backing xml to render a wave in the client?
Robots don't have access right now
Will be opened up later.
Right now: a way to look at wave content for debugging
hotkey or something, combo of 3 keys
dont remember the combo
Used to back up the content?
Sure.
Robot to backup the data, snapshot of xml
no way to get it "back in" to the wave
If build a client: 2 ways of backend. Bypass editor, or use editor. API to editor?
For google editor: working on modularizing it. Would love to open source it.
Very complex
Nothing to announce right now.
Super important
Haven't had time to open source client.
(Let the hacking begin!)
Requires sandbox account during dev preview
Q: we have to login to wave account first before we browse to the site with wave?
Account will not be required for viewing
Ideas:
Embed on site
Chess
Wave CMS
Gadgets
Features
Real time updates
participant support
state management
revision history
playback
Google Gadget Editor
http://code.google.com/apis/gadgets/docs/legacy/gs.html#GGE
Public Location:
Google App Engine
websites
Adding gadget to wave
Debug menu: Debug->Extentions->Add Gadget, paste url in.
Toolbar menu
Robots API - robot can add gadget
Tips
Automatic height adjustment
requires feature: dynamic-height
Calls to gadgets.window.adjustHeight()
(see docs)
Safari 3 gadget flaky right now
Use FireFox 3, or Safari 4
try not to visualize changes before state changes are reflected on the client
Dont submit deltas, render on state change
Develop with playback in mind
Ideas
tic-tac-toe
server-authoritative chess (robots + gadgets)
Collaborative TODO list
whiteboard
embedded browser (collaborative surfing)
Robots
Robotic Butlers :)
Architecture
Client->Server->Robot Proxy->(JSON HTTP)->Robot on App Engine
Robots are participants, can do anything a user can do.
No comments:
Post a Comment