Google Wave maakt interactie mogelijk

 
29 maart 2010

Enige tijd geleden kondigde Google met veel tam tam iets nieuws aan: Google Wave. Het werd gesteld als de nieuwe manier van communiceren: hoe zouden de ontwikkelaars van Google email gemaakt hebben als ze zouden werken met de huidige kennis van zaken, als ze daarbij keken naar hoe er nu gecommuniceerd wordt en hoe dit alles te integreren is.

Zoals Google al eerder heeft aangetoond tijdens de introductie van Gmail, zijn ze er goed in om een hype te creëren, wederom konden mensen zich inschrijven om een invite van Google te krijgen, zowel voor de preview (http://wave.google.com) als voor een ontwikkel/test omgeving (http://wavesandbox.com). Met een invite voor de preview kreeg je meteen een paar invites om je vrienden, collega’s etc. uit te nodigen. Bij de ontwikkel omgeving kreeg je gewoon twee accounts (zodat je in ieder geval interactie kon testen).

Wat is een Wave?

Een wave is in basis te zien als een emailbericht, je maakt een nieuwe en begint te typen. Je nodigt een aantal deelnemers uit, en zodra die toegevoegd zijn, zien ze je bericht en zien ze jou typen. Het bericht wat je typt in de wave is een blip en wordt geplaatst in een wavelet (een sub-wave). De andere deelnemers kunnen reageren op jouw wavelet als reply, waardoor de blip die zij versturen als een nieuwe sub-wavelet komt van jouw wavelet. De deelnemers kunnen een wavelet los onderin de wave plaatsen, waardoor deze hiërarchisch op het zelfde niveau staat als jouw wavelet. Verder kan iedere deelnemer in de wave ook de wavelets van anderen bewerken, door hier berichtjes (blips) bij te plaatsen. Ieder los berichtje, of het een nieuwe wavelet is, of een bewerking van/toevoeging aan een oude, is een blip.

Het protocol

Wat er gelijk met de introductie van Google wave werd gedaan is het publiek maken van het protocol wat er gebruikt wordt voor Google Wave, het ‘Google Wave Federation Protocol‘ en een open source implementatie van een federation server met een aantal test clients. Dit federation protocol is het moment waarop het voor mij interessant werd, Google Wave werd niet zomaar een nieuw snufje van Google, maar het werd iets waar je als programmeur een eigen versie van kon laten samen werken met andere servers. Het feit dat dit protocol, inclusief een demo applicatie, al beschikbaar was nog voordat de invites de deur uit gingen gaf mij aan dat die interactie ook van belang werd geacht door Google. Google stelde zich daarmee niet als eigenaar van het geheel waar je met gratie van Google mocht communiceren, nee die externe communicatie inclusief externe servers was vanaf het begin meteen de bedoeling en zat als basis in het protocol ingebakken.

Federation

In het protocol is sprake van federation, wat zoveel wil zeggen dat je op wave server 1 (bijvoorbeeld sogyowave.sogyo.nl) iemand op server 2 (bijvoorbeeld HagenaarsDotNu@wavesandbox.com) zou willen uitnodigen, dat het protocol er dan voor zou zorgen dat de acties in bijde servers synchroon worden gehouden. Het kunnen samenwerken met wave-users op andere servers en de synchronisatie/authenticatie hieromheen wordt ‘Federation’ genoemd. Om dit alles te onderzoeken heb ik een Ubuntu servertje opgetuigd en de instructies van Google gevolgd om een federation server te draaien en na het optuigen, installeren van CA-signed certificaten en wat gedoe in diverse firewalls is de situatie zoals geschetst in het schema hieronder.

Sogyo wave integratie met wavesandbox.com

fig 1. Sogyo wave integratie met wavesandbox.com

Alles werkte op 1 ding na, het eigenlijke communiceren met de wavesandbox vanaf sogyowave.sogyo.nl. Dit heeft te maken met het feit dat momenteel sogyowave.sogyo.nl niet correct geresolved wordt, maar dat is het enige wat nog open staat. De FedOne server met de bijbehorende client en agents zijn open source en zijn op een eigen server geplaatst, wat de mogelijkheid geeft om de zien hoe het protocol communiceert en wat de mogelijkheid geeft om hier eigen agents te schrijven.

Agents

De eerder genoemde agents zijn stukken software die als ‘persoon’ aan een wave toe kunnen worden gevoegd. Agents die met Google Wave servers willen communiceren (dus niet de Federation Protocol servers zoals FedOne) moesten in Google Apps Engine draaien (Google’s ‘Cloud’) en dus in Java of Python geprogrammeerd zijn. Deze agents kunnen reageren op diverse events binnen de wave, zoals WaveletBlipCreated, WaveletBlipRemoved, WaveletParticipantsChanged, WaveletSelfAdded etc. (Zie Google Wave Robots API: Events voor de verdere events). Dit was ten tijde van het publiek maken van de Google Wave API de enige manier voor robots om met Google Wave te communiceren: reageren op events. Als je als ontwikkelaar dus van buiten af de communicatie met Google Wave zou willen beginnen, zou je dus een eigen client moeten schrijven die met een Federation Server zou communiceren en vervolgens de federation goed inregelen.

‘Active Robot API’ en ‘Proxying for Users

Enkele maanden geleden is er een nieuwe implementatie van de Federation Server uitgebracht samen met een nieuwe versie van de Robot API, hierbij zijn bij de Robot API twee interessante zaken toegevoegd:

  1. De ‘Active Robot API’
  2. ‘Proxying for Users’

De Active Robot API is een toevoeging aan de bestaande API die er voor zorgt dat de robot niet meer alleen kan reageren op events in de wave, maar ook zelf actie kan ondernemen, oftewel, de robot is in staat om op eigen initiatief actie te ondernemen in de wave. Dit betekend dus dat je van buiten af een trigger kunt sturen naar je robot om een wavelet aan te maken. Zo kun je bijvoorbeeld een error melding vanuit software direct een wave in laten plaatsen op het moment dat de error gebeurt, de mensen die betrokken zijn bij de software waarin de error opgetreden is kunnen dan in die wave direct de discussie beginnen over wat er aan de hand is, een bot in de wave kan vervolgens aan de hand van de error melding een aantal MSDN links en google zoekresultaten alvast erbij zoeken zodra de error zich voor doet etc.

Proxying for Users houdt in dat een robot berichten kan plaatsen in naam van een gebruiker op een ander systeem, hierdoor hoeft de gebruiker van dat andere systeem geen Google Wave account te hebben en is er bij de wavelets wel bekend welke gebruiker van dat andere systeem dit geschreven heeft. Om de link met het error-tracking voorbeeld van hierboven te houden, kun je denken aan het verzamelen van de bugtracker comments die met de error te maken hebben en daarbij de persoon die de comment in het bugtracking systeem geschreven heeft ook in de wave als schrijver aanmerken.


Werken met ?
Kijk dan bij onze mogelijkheden voor zowel starters als ervaren engineers.


Categorieën: Development, Overige talen en platformen

Tags: ,


Reactie

  • Ivo Limmen schreef:

    “Google stelde zich daarmee niet als eigenaar van het geheel waar je met gratie van Google mocht communiceren, nee die externe communicatie inclusief externe servers was vanaf het begin meteen de bedoeling en zat als basis in het protocol ingebakken.”

    Is ook niet zo vreemd dat je met andere servers kan communiceren en dat Google dat toelaat: het protocol is een open extensie op XMMP (Vroeger heette dit Jabber). XMMP is een open protocol voor messengers. XMMP wordt overigens ook door Google Talk gebruikt (Dit is dan ook een XMMP client).

    Geplaatst op 29 maart 2010 om 10:23 Permalink